Coverity issue fixes.
Issues #331869, #331875, #332203, #332159, #332171, #332180, and #332648.
This commit is contained in:
parent
49e6b80fc5
commit
65c7958293
|
@ -178,6 +178,7 @@ NUMERIC_EVALUATOR::Token NUMERIC_EVALUATOR::getToken()
|
||||||
retval.token = ENDS;
|
retval.token = ENDS;
|
||||||
retval.value.dValue = 0;
|
retval.value.dValue = 0;
|
||||||
retval.value.valid = false;
|
retval.value.valid = false;
|
||||||
|
retval.value.text[0] = 0;
|
||||||
|
|
||||||
if( m_token.token == nullptr )
|
if( m_token.token == nullptr )
|
||||||
return retval;
|
return retval;
|
||||||
|
|
|
@ -1,22 +1,22 @@
|
||||||
/*
|
/*
|
||||||
This file is part of libeval, a simple math expression evaluator
|
* This file is part of libeval, a simple math expression evaluator
|
||||||
|
*
|
||||||
Copyright (C) 2017 Michael Geselbracht, mgeselbracht3@gmail.com
|
* Copyright (C) 2017 Michael Geselbracht, mgeselbracht3@gmail.com
|
||||||
Copyright (C) 2019-2020 KiCad Developers, see AUTHORS.txt for contributors.
|
* Copyright (C) 2019-2021 KiCad Developers, see AUTHORS.txt for contributors.
|
||||||
|
*
|
||||||
This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
(at your option) any later version.
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
This program is distributed in the hope that it will be useful,
|
* This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
GNU General Public License for more details.
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <set>
|
#include <set>
|
||||||
|
@ -419,6 +419,7 @@ bool COMPILER::lexDefault( T_TOKEN& aToken )
|
||||||
wxString msg;
|
wxString msg;
|
||||||
|
|
||||||
retval.value.str = nullptr;
|
retval.value.str = nullptr;
|
||||||
|
retval.value.num = 0.0;
|
||||||
retval.token = G_ENDS;
|
retval.token = G_ENDS;
|
||||||
|
|
||||||
if( m_tokenizer.Done() )
|
if( m_tokenizer.Done() )
|
||||||
|
@ -561,7 +562,6 @@ bool COMPILER::lexDefault( T_TOKEN& aToken )
|
||||||
case '.': retval.token = G_STRUCT_REF; break;
|
case '.': retval.token = G_STRUCT_REF; break;
|
||||||
case ',': retval.token = G_COMMA; break;
|
case ',': retval.token = G_COMMA; break;
|
||||||
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
reportError( CST_PARSE, wxString::Format( _( "Unrecognized character '%c'" ),
|
reportError( CST_PARSE, wxString::Format( _( "Unrecognized character '%c'" ),
|
||||||
(char) ch ) );
|
(char) ch ) );
|
||||||
|
@ -774,14 +774,14 @@ static std::vector<TREE_NODE*> squashParamList( TREE_NODE* root )
|
||||||
|
|
||||||
if( n )
|
if( n )
|
||||||
{
|
{
|
||||||
args.push_back(n);
|
args.push_back( n );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::reverse( args.begin(), args.end() );
|
std::reverse( args.begin(), args.end() );
|
||||||
|
|
||||||
for( size_t i = 0; i < args.size(); i++ )
|
for( size_t i = 0; i < args.size(); i++ )
|
||||||
libeval_dbg(10, "squash arg%d: %s\n", int( i ), *args[i]->value.str );
|
libeval_dbg( 10, "squash arg%d: %s\n", int( i ), *args[i]->value.str );
|
||||||
|
|
||||||
return args;
|
return args;
|
||||||
}
|
}
|
||||||
|
@ -866,12 +866,14 @@ bool COMPILER::generateUCode( UCODE* aCode, CONTEXT* aPreflightContext )
|
||||||
if( !vref )
|
if( !vref )
|
||||||
{
|
{
|
||||||
msg.Printf( _( "Unrecognized item '%s'" ), itemName );
|
msg.Printf( _( "Unrecognized item '%s'" ), itemName );
|
||||||
reportError( CST_CODEGEN, msg, node->leaf[0]->srcPos - (int) itemName.length() );
|
reportError( CST_CODEGEN, msg,
|
||||||
|
node->leaf[0]->srcPos - (int) itemName.length() );
|
||||||
}
|
}
|
||||||
else if( vref->GetType() == VT_PARSE_ERROR )
|
else if( vref->GetType() == VT_PARSE_ERROR )
|
||||||
{
|
{
|
||||||
msg.Printf( _( "Unrecognized property '%s'" ), propName );
|
msg.Printf( _( "Unrecognized property '%s'" ), propName );
|
||||||
reportError( CST_CODEGEN, msg, node->leaf[1]->srcPos - (int) propName.length() );
|
reportError( CST_CODEGEN, msg,
|
||||||
|
node->leaf[1]->srcPos - (int) propName.length() );
|
||||||
}
|
}
|
||||||
|
|
||||||
node->leaf[0]->isVisited = true;
|
node->leaf[0]->isVisited = true;
|
||||||
|
@ -894,7 +896,8 @@ bool COMPILER::generateUCode( UCODE* aCode, CONTEXT* aPreflightContext )
|
||||||
if( !vref )
|
if( !vref )
|
||||||
{
|
{
|
||||||
msg.Printf( _( "Unrecognized item '%s'" ), itemName );
|
msg.Printf( _( "Unrecognized item '%s'" ), itemName );
|
||||||
reportError( CST_CODEGEN, msg, node->leaf[0]->srcPos - (int) itemName.length() );
|
reportError( CST_CODEGEN, msg,
|
||||||
|
node->leaf[0]->srcPos - (int) itemName.length() );
|
||||||
}
|
}
|
||||||
|
|
||||||
wxString functionName = *node->leaf[1]->leaf[0]->value.str;
|
wxString functionName = *node->leaf[1]->leaf[0]->value.str;
|
||||||
|
@ -967,7 +970,8 @@ bool COMPILER::generateUCode( UCODE* aCode, CONTEXT* aPreflightContext )
|
||||||
if( !vref )
|
if( !vref )
|
||||||
{
|
{
|
||||||
msg.Printf( _( "Unrecognized item '%s'" ), itemName );
|
msg.Printf( _( "Unrecognized item '%s'" ), itemName );
|
||||||
reportError( CST_CODEGEN, msg, node->leaf[0]->srcPos - (int) itemName.length() );
|
reportError( CST_CODEGEN, msg,
|
||||||
|
node->leaf[0]->srcPos - (int) itemName.length() );
|
||||||
}
|
}
|
||||||
|
|
||||||
msg.Printf( _( "Unrecognized property '%s'" ), propName );
|
msg.Printf( _( "Unrecognized property '%s'" ), propName );
|
||||||
|
@ -980,6 +984,7 @@ bool COMPILER::generateUCode( UCODE* aCode, CONTEXT* aPreflightContext )
|
||||||
node->isTerminal = true;
|
node->isTerminal = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||||
*
|
*
|
||||||
* Copyright (C) 2020 KiCad Developers, see AUTHORS.txt for contributors.
|
* Copyright (C) 2020-2021 KiCad Developers, see AUTHORS.txt for contributors.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
|
@ -586,7 +586,10 @@ bool EESCHEMA_SETTINGS::MigrateFromLegacy( wxConfigBase* aCfg )
|
||||||
ret &= fromLegacy<bool>( aCfg, "RescueNeverShow", "system.never_show_rescue_dialog" );
|
ret &= fromLegacy<bool>( aCfg, "RescueNeverShow", "system.never_show_rescue_dialog" );
|
||||||
|
|
||||||
// Legacy version stored this setting in eeschema, so move it to common if it exists
|
// Legacy version stored this setting in eeschema, so move it to common if it exists
|
||||||
aCfg->Read( "MoveWarpsCursor", &Pgm().GetCommonSettings()->m_Input.warp_mouse_on_move );
|
bool tmp;
|
||||||
|
|
||||||
|
if( aCfg->Read( "MoveWarpsCursor", &tmp ) )
|
||||||
|
Pgm().GetCommonSettings()->m_Input.warp_mouse_on_move = tmp;
|
||||||
|
|
||||||
COLOR_SETTINGS* cs = Pgm().GetSettingsManager().GetMigratedColorSettings();
|
COLOR_SETTINGS* cs = Pgm().GetSettingsManager().GetMigratedColorSettings();
|
||||||
|
|
||||||
|
|
|
@ -32,7 +32,9 @@ const int spiceSettingsSchemaVersion = 0;
|
||||||
|
|
||||||
SPICE_SIMULATOR_SETTINGS::SPICE_SIMULATOR_SETTINGS( JSON_SETTINGS* aParent,
|
SPICE_SIMULATOR_SETTINGS::SPICE_SIMULATOR_SETTINGS( JSON_SETTINGS* aParent,
|
||||||
const std::string& aPath ) :
|
const std::string& aPath ) :
|
||||||
NESTED_SETTINGS( "simulator", spiceSettingsSchemaVersion, aParent, aPath )
|
NESTED_SETTINGS( "simulator", spiceSettingsSchemaVersion, aParent, aPath ),
|
||||||
|
m_fixPassiveVals( false ),
|
||||||
|
m_fixIncludePaths( true )
|
||||||
{
|
{
|
||||||
m_params.emplace_back( new PARAM<wxString>( "workbook_filename", &m_workbookFilename, "" ) );
|
m_params.emplace_back( new PARAM<wxString>( "workbook_filename", &m_workbookFilename, "" ) );
|
||||||
m_params.emplace_back( new PARAM<bool>( "fix_passive_vals", &m_fixPassiveVals, false ) );
|
m_params.emplace_back( new PARAM<bool>( "fix_passive_vals", &m_fixPassiveVals, false ) );
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
* KiRouter - a push-and-(sometimes-)shove PCB router
|
* KiRouter - a push-and-(sometimes-)shove PCB router
|
||||||
*
|
*
|
||||||
* Copyright (C) 2013-2020 CERN
|
* Copyright (C) 2013-2020 CERN
|
||||||
|
* Copyright (C) 2021 KiCad Developers, see AUTHORS.txt for contributors.
|
||||||
* Author: Tomasz Wlostowski <tomasz.wlostowski@cern.ch>
|
* Author: Tomasz Wlostowski <tomasz.wlostowski@cern.ch>
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify it
|
* This program is free software: you can redistribute it and/or modify it
|
||||||
|
@ -46,6 +47,8 @@ COMPONENT_DRAGGER::~COMPONENT_DRAGGER()
|
||||||
|
|
||||||
bool COMPONENT_DRAGGER::Start( const VECTOR2I& aP, ITEM_SET& aPrimitives )
|
bool COMPONENT_DRAGGER::Start( const VECTOR2I& aP, ITEM_SET& aPrimitives )
|
||||||
{
|
{
|
||||||
|
assert( m_world );
|
||||||
|
|
||||||
m_currentNode = nullptr;
|
m_currentNode = nullptr;
|
||||||
m_initialDraggedItems = aPrimitives;
|
m_initialDraggedItems = aPrimitives;
|
||||||
m_p0 = aP;
|
m_p0 = aP;
|
||||||
|
@ -148,8 +151,11 @@ bool COMPONENT_DRAGGER::Start( const VECTOR2I& aP, ITEM_SET& aPrimitives )
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool COMPONENT_DRAGGER::Drag( const VECTOR2I& aP )
|
bool COMPONENT_DRAGGER::Drag( const VECTOR2I& aP )
|
||||||
{
|
{
|
||||||
|
assert( m_world );
|
||||||
|
|
||||||
m_world->KillChildren();
|
m_world->KillChildren();
|
||||||
m_currentNode = m_world->Branch();
|
m_currentNode = m_world->Branch();
|
||||||
|
|
||||||
|
@ -234,6 +240,7 @@ bool COMPONENT_DRAGGER::Drag( const VECTOR2I& aP )
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool COMPONENT_DRAGGER::FixRoute()
|
bool COMPONENT_DRAGGER::FixRoute()
|
||||||
{
|
{
|
||||||
NODE* node = CurrentNode();
|
NODE* node = CurrentNode();
|
||||||
|
@ -257,11 +264,13 @@ bool COMPONENT_DRAGGER::FixRoute()
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
NODE* COMPONENT_DRAGGER::CurrentNode() const
|
NODE* COMPONENT_DRAGGER::CurrentNode() const
|
||||||
{
|
{
|
||||||
return m_currentNode ? m_currentNode : m_world;
|
return m_currentNode ? m_currentNode : m_world;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const ITEM_SET COMPONENT_DRAGGER::Traces()
|
const ITEM_SET COMPONENT_DRAGGER::Traces()
|
||||||
{
|
{
|
||||||
return m_draggedItems;
|
return m_draggedItems;
|
||||||
|
|
|
@ -585,11 +585,12 @@ bool LINE_PLACER::rhWalkOnly( const VECTOR2I& aP, LINE& aNewHead )
|
||||||
{
|
{
|
||||||
bool valid_cw = false, valid_ccw = false;
|
bool valid_cw = false, valid_ccw = false;
|
||||||
VECTOR2I p_cw, p_ccw;
|
VECTOR2I p_cw, p_ccw;
|
||||||
int dist_ccw, dist_cw;
|
int dist_ccw = 0, dist_cw = 0;
|
||||||
|
|
||||||
if( wr.statusCcw == WALKAROUND::ALMOST_DONE )
|
if( wr.statusCcw == WALKAROUND::ALMOST_DONE )
|
||||||
{
|
{
|
||||||
valid_ccw = cursorDistMinimum( l_ccw, aP, hugThresholdLength, dist_ccw, p_ccw );
|
valid_ccw = cursorDistMinimum( l_ccw, aP, hugThresholdLength, dist_ccw, p_ccw );
|
||||||
|
|
||||||
if( valid_ccw )
|
if( valid_ccw )
|
||||||
{
|
{
|
||||||
int idx_ccw = l_ccw.Split( p_ccw );
|
int idx_ccw = l_ccw.Split( p_ccw );
|
||||||
|
@ -598,9 +599,11 @@ bool LINE_PLACER::rhWalkOnly( const VECTOR2I& aP, LINE& aNewHead )
|
||||||
PNS_DBG( Dbg(), AddLine, l_ccw, MAGENTA, 200000, "wh-result-ccw" );
|
PNS_DBG( Dbg(), AddLine, l_ccw, MAGENTA, 200000, "wh-result-ccw" );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if( wr.statusCw == WALKAROUND::ALMOST_DONE )
|
if( wr.statusCw == WALKAROUND::ALMOST_DONE )
|
||||||
{
|
{
|
||||||
valid_cw = cursorDistMinimum( l_cw, aP, hugThresholdLength, dist_cw, p_cw );
|
valid_cw = cursorDistMinimum( l_cw, aP, hugThresholdLength, dist_cw, p_cw );
|
||||||
|
|
||||||
if( valid_cw )
|
if( valid_cw )
|
||||||
{
|
{
|
||||||
int idx_cw = l_cw.Split( p_cw );
|
int idx_cw = l_cw.Split( p_cw );
|
||||||
|
@ -661,7 +664,6 @@ bool LINE_PLACER::rhWalkOnly( const VECTOR2I& aP, LINE& aNewHead )
|
||||||
|
|
||||||
OPTIMIZER::Optimize( &walkFull, effort, m_currentNode );
|
OPTIMIZER::Optimize( &walkFull, effort, m_currentNode );
|
||||||
|
|
||||||
|
|
||||||
if( m_currentNode->CheckColliding( &walkFull ) )
|
if( m_currentNode->CheckColliding( &walkFull ) )
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -54,9 +54,9 @@ NODE::NODE()
|
||||||
{
|
{
|
||||||
m_depth = 0;
|
m_depth = 0;
|
||||||
m_root = this;
|
m_root = this;
|
||||||
m_parent = NULL;
|
m_parent = nullptr;
|
||||||
m_maxClearance = 800000; // fixme: depends on how thick traces are.
|
m_maxClearance = 800000; // fixme: depends on how thick traces are.
|
||||||
m_ruleResolver = NULL;
|
m_ruleResolver = nullptr;
|
||||||
m_index = new INDEX;
|
m_index = new INDEX;
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
|
@ -97,6 +97,7 @@ NODE::~NODE()
|
||||||
delete m_index;
|
delete m_index;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int NODE::GetClearance( const ITEM* aA, const ITEM* aB ) const
|
int NODE::GetClearance( const ITEM* aA, const ITEM* aB ) const
|
||||||
{
|
{
|
||||||
if( !m_ruleResolver )
|
if( !m_ruleResolver )
|
||||||
|
@ -107,12 +108,12 @@ int NODE::GetClearance( const ITEM* aA, const ITEM* aB ) const
|
||||||
|
|
||||||
|
|
||||||
int NODE::GetHoleClearance( const ITEM* aA, const ITEM* aB ) const
|
int NODE::GetHoleClearance( const ITEM* aA, const ITEM* aB ) const
|
||||||
{
|
{
|
||||||
if( !m_ruleResolver )
|
if( !m_ruleResolver )
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
return m_ruleResolver->HoleClearance( aA, aB );
|
return m_ruleResolver->HoleClearance( aA, aB );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int NODE::GetHoleToHoleClearance( const ITEM* aA, const ITEM* aB ) const
|
int NODE::GetHoleToHoleClearance( const ITEM* aA, const ITEM* aB ) const
|
||||||
|
@ -171,8 +172,8 @@ void NODE::unlinkParent()
|
||||||
|
|
||||||
OBSTACLE_VISITOR::OBSTACLE_VISITOR( const ITEM* aItem ) :
|
OBSTACLE_VISITOR::OBSTACLE_VISITOR( const ITEM* aItem ) :
|
||||||
m_item( aItem ),
|
m_item( aItem ),
|
||||||
m_node( NULL ),
|
m_node( nullptr ),
|
||||||
m_override( NULL )
|
m_override( nullptr )
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -240,6 +241,7 @@ struct NODE::DEFAULT_OBSTACLE_VISITOR : public OBSTACLE_VISITOR
|
||||||
|
|
||||||
obs.m_item = aCandidate;
|
obs.m_item = aCandidate;
|
||||||
obs.m_head = m_item;
|
obs.m_head = m_item;
|
||||||
|
obs.m_distFirst = INT_MAX;
|
||||||
m_tab.push_back( obs );
|
m_tab.push_back( obs );
|
||||||
|
|
||||||
m_matchCount++;
|
m_matchCount++;
|
||||||
|
@ -262,7 +264,7 @@ int NODE::QueryColliding( const ITEM* aItem, NODE::OBSTACLES& aObstacles, int aK
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
visitor.SetCountLimit( aLimitCount );
|
visitor.SetCountLimit( aLimitCount );
|
||||||
visitor.SetWorld( this, NULL );
|
visitor.SetWorld( this, nullptr );
|
||||||
|
|
||||||
// first, look for colliding items in the local index
|
// first, look for colliding items in the local index
|
||||||
m_index->Query( aItem, m_maxClearance, visitor );
|
m_index->Query( aItem, m_maxClearance, visitor );
|
||||||
|
@ -297,11 +299,12 @@ NODE::OPT_OBSTACLE NODE::NearestObstacle( const LINE* aLine, int aKindMask,
|
||||||
return OPT_OBSTACLE();
|
return OPT_OBSTACLE();
|
||||||
|
|
||||||
OBSTACLE nearest;
|
OBSTACLE nearest;
|
||||||
nearest.m_item = NULL;
|
nearest.m_item = nullptr;
|
||||||
nearest.m_distFirst = INT_MAX;
|
nearest.m_distFirst = INT_MAX;
|
||||||
|
|
||||||
auto updateNearest =
|
auto updateNearest =
|
||||||
[&]( const SHAPE_LINE_CHAIN::INTERSECTION& pt, ITEM* obstacle, const SHAPE_LINE_CHAIN& hull, bool isHole )
|
[&]( const SHAPE_LINE_CHAIN::INTERSECTION& pt, ITEM* obstacle,
|
||||||
|
const SHAPE_LINE_CHAIN& hull, bool isHole )
|
||||||
{
|
{
|
||||||
int dist = aLine->CLine().PathLength( pt.p, pt.index_their );
|
int dist = aLine->CLine().PathLength( pt.p, pt.index_their );
|
||||||
|
|
||||||
|
@ -347,6 +350,7 @@ NODE::OPT_OBSTACLE NODE::NearestObstacle( const LINE* aLine, int aKindMask,
|
||||||
{
|
{
|
||||||
const VIA& via = aLine->Via();
|
const VIA& via = aLine->Via();
|
||||||
// Don't use via.Drill(); it doesn't include the plating thickness
|
// Don't use via.Drill(); it doesn't include the plating thickness
|
||||||
|
|
||||||
int viaHoleRadius = static_cast<const SHAPE_CIRCLE*>( via.Hole() )->GetRadius();
|
int viaHoleRadius = static_cast<const SHAPE_CIRCLE*>( via.Hole() )->GetRadius();
|
||||||
|
|
||||||
int viaClearance = GetClearance( obstacle.m_item, &via ) + via.Diameter() / 2;
|
int viaClearance = GetClearance( obstacle.m_item, &via ) + via.Diameter() / 2;
|
||||||
|
@ -361,7 +365,7 @@ NODE::OPT_OBSTACLE NODE::NearestObstacle( const LINE* aLine, int aKindMask,
|
||||||
intersectingPts.clear();
|
intersectingPts.clear();
|
||||||
HullIntersection( obstacleHull, aLine->CLine(), intersectingPts );
|
HullIntersection( obstacleHull, aLine->CLine(), intersectingPts );
|
||||||
|
|
||||||
// obstacleHull.Intersect( aLine->CLine(), intersectingPts, true );
|
// obstacleHull.Intersect( aLine->CLine(), intersectingPts, true );
|
||||||
|
|
||||||
for( const SHAPE_LINE_CHAIN::INTERSECTION& ip : intersectingPts )
|
for( const SHAPE_LINE_CHAIN::INTERSECTION& ip : intersectingPts )
|
||||||
updateNearest( ip, obstacle.m_item, obstacleHull, false );
|
updateNearest( ip, obstacle.m_item, obstacleHull, false );
|
||||||
|
@ -474,7 +478,7 @@ struct HIT_VISITOR : public OBSTACLE_VISITOR
|
||||||
const VECTOR2I& m_point;
|
const VECTOR2I& m_point;
|
||||||
|
|
||||||
HIT_VISITOR( ITEM_SET& aTab, const VECTOR2I& aPoint ) :
|
HIT_VISITOR( ITEM_SET& aTab, const VECTOR2I& aPoint ) :
|
||||||
OBSTACLE_VISITOR( NULL ),
|
OBSTACLE_VISITOR( nullptr ),
|
||||||
m_items( aTab ),
|
m_items( aTab ),
|
||||||
m_point( aPoint )
|
m_point( aPoint )
|
||||||
{}
|
{}
|
||||||
|
@ -504,14 +508,14 @@ const ITEM_SET NODE::HitTest( const VECTOR2I& aPoint ) const
|
||||||
// fixme: we treat a point as an infinitely small circle - this is inefficient.
|
// fixme: we treat a point as an infinitely small circle - this is inefficient.
|
||||||
SHAPE_CIRCLE s( aPoint, 0 );
|
SHAPE_CIRCLE s( aPoint, 0 );
|
||||||
HIT_VISITOR visitor( items, aPoint );
|
HIT_VISITOR visitor( items, aPoint );
|
||||||
visitor.SetWorld( this, NULL );
|
visitor.SetWorld( this, nullptr );
|
||||||
|
|
||||||
m_index->Query( &s, m_maxClearance, visitor );
|
m_index->Query( &s, m_maxClearance, visitor );
|
||||||
|
|
||||||
if( !isRoot() ) // fixme: could be made cleaner
|
if( !isRoot() ) // fixme: could be made cleaner
|
||||||
{
|
{
|
||||||
ITEM_SET items_root;
|
ITEM_SET items_root;
|
||||||
visitor.SetWorld( m_root, NULL );
|
visitor.SetWorld( m_root, nullptr );
|
||||||
HIT_VISITOR visitor_root( items_root, aPoint );
|
HIT_VISITOR visitor_root( items_root, aPoint );
|
||||||
m_root->m_index->Query( &s, m_maxClearance, visitor_root );
|
m_root->m_index->Query( &s, m_maxClearance, visitor_root );
|
||||||
|
|
||||||
|
@ -687,7 +691,7 @@ void NODE::doRemove( ITEM* aItem )
|
||||||
// the item belongs to this particular branch: un-reference it
|
// the item belongs to this particular branch: un-reference it
|
||||||
if( aItem->BelongsTo( this ) )
|
if( aItem->BelongsTo( this ) )
|
||||||
{
|
{
|
||||||
aItem->SetOwner( NULL );
|
aItem->SetOwner( nullptr );
|
||||||
m_root->m_garbageItems.insert( aItem );
|
m_root->m_garbageItems.insert( aItem );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -899,7 +903,7 @@ void NODE::followLine( LINKED_ITEM* aCurrent, bool aScanDirection, int& aPos, in
|
||||||
if( count && guard == p )
|
if( count && guard == p )
|
||||||
{
|
{
|
||||||
if( aPos >= 0 && aPos < aLimit )
|
if( aPos >= 0 && aPos < aLimit )
|
||||||
aSegments[aPos] = NULL;
|
aSegments[aPos] = nullptr;
|
||||||
|
|
||||||
aGuardHit = true;
|
aGuardHit = true;
|
||||||
break;
|
break;
|
||||||
|
@ -948,7 +952,7 @@ const LINE NODE::AssembleLine( LINKED_ITEM* aSeg, int* aOriginSegmentIndex,
|
||||||
|
|
||||||
int n = 0;
|
int n = 0;
|
||||||
|
|
||||||
LINKED_ITEM* prev_seg = NULL;
|
LINKED_ITEM* prev_seg = nullptr;
|
||||||
bool originSet = false;
|
bool originSet = false;
|
||||||
|
|
||||||
SHAPE_LINE_CHAIN& line = pl.Line();
|
SHAPE_LINE_CHAIN& line = pl.Line();
|
||||||
|
@ -1068,9 +1072,13 @@ void NODE::FixupVirtualVias()
|
||||||
for( const auto& lnk : joint.second.LinkList() )
|
for( const auto& lnk : joint.second.LinkList() )
|
||||||
{
|
{
|
||||||
if( lnk.item->OfKind( ITEM::VIA_T ) )
|
if( lnk.item->OfKind( ITEM::VIA_T ) )
|
||||||
|
{
|
||||||
n_vias++;
|
n_vias++;
|
||||||
|
}
|
||||||
else if( lnk.item->OfKind( ITEM::SOLID_T ) )
|
else if( lnk.item->OfKind( ITEM::SOLID_T ) )
|
||||||
|
{
|
||||||
n_solid++;
|
n_solid++;
|
||||||
|
}
|
||||||
else if( const auto t = dyn_cast<PNS::SEGMENT*>( lnk.item ) )
|
else if( const auto t = dyn_cast<PNS::SEGMENT*>( lnk.item ) )
|
||||||
{
|
{
|
||||||
int w = t->Width();
|
int w = t->Width();
|
||||||
|
@ -1117,7 +1125,7 @@ JOINT* NODE::FindJoint( const VECTOR2I& aPos, int aLayer, int aNet )
|
||||||
}
|
}
|
||||||
|
|
||||||
if( f == end )
|
if( f == end )
|
||||||
return NULL;
|
return nullptr;
|
||||||
|
|
||||||
while( f != end )
|
while( f != end )
|
||||||
{
|
{
|
||||||
|
@ -1127,7 +1135,7 @@ JOINT* NODE::FindJoint( const VECTOR2I& aPos, int aLayer, int aNet )
|
||||||
++f;
|
++f;
|
||||||
}
|
}
|
||||||
|
|
||||||
return NULL;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1372,7 +1380,7 @@ void NODE::KillChildren()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void NODE::AllItemsInNet( int aNet, std::set<ITEM*>& aItems, int aKindMask)
|
void NODE::AllItemsInNet( int aNet, std::set<ITEM*>& aItems, int aKindMask )
|
||||||
{
|
{
|
||||||
INDEX::NET_ITEMS_LIST* l_cur = m_index->GetItemsForNet( aNet );
|
INDEX::NET_ITEMS_LIST* l_cur = m_index->GetItemsForNet( aNet );
|
||||||
|
|
||||||
|
@ -1552,7 +1560,7 @@ ITEM *NODE::FindItemByParent( const BOARD_ITEM* aParent )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return NULL;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue