Fix and rename CONNECTIVITY_DATA::GetConnectedItems(aItem, aAnchor, aTypes[] ) to GetConnectedItemsAtAnchor

- Fix the function so it actually returns the connected items (previously it was returning aItem every time)
- Make the function const
- Rename the function so that it is not confused with the other function of the same name
- Add doxygen comments for the function
This commit is contained in:
Roberto Fernandez Bautista 2020-11-08 22:43:31 +00:00 committed by Seth Hillbrand
parent bdc89df333
commit 498c4121b3
2 changed files with 24 additions and 9 deletions

View File

@ -613,25 +613,30 @@ bool CONNECTIVITY_DATA::TestTrackEndpointDangling( TRACK* aTrack, wxPoint* aPos
} }
const std::vector<BOARD_CONNECTED_ITEM*> CONNECTIVITY_DATA::GetConnectedItems( const std::vector<BOARD_CONNECTED_ITEM*> CONNECTIVITY_DATA::GetConnectedItemsAtAnchor(
const BOARD_CONNECTED_ITEM* aItem, const VECTOR2I& aAnchor, KICAD_T aTypes[] ) const BOARD_CONNECTED_ITEM* aItem, const VECTOR2I& aAnchor, const KICAD_T aTypes[] ) const
{ {
auto& entry = m_connAlgo->ItemEntry( aItem ); auto& entry = m_connAlgo->ItemEntry( aItem );
std::vector<BOARD_CONNECTED_ITEM* > rv; std::vector<BOARD_CONNECTED_ITEM* > rv;
for( auto cnItem : entry.GetItems() ) for( auto cnItem : entry.GetItems() )
{ {
for( auto anchor : cnItem->Anchors() ) for( auto connected : cnItem->ConnectedItems() )
{ {
if( anchor->Pos() == aAnchor ) for( auto anchor : connected->Anchors() )
{ {
for( int i = 0; aTypes[i] > 0; i++ ) if( anchor->Pos() == aAnchor )
{ {
if( cnItem->Valid() && cnItem->Parent()->Type() == aTypes[i] ) for( int i = 0; aTypes[i] > 0; i++ )
{ {
rv.push_back( cnItem->Parent() ); if( connected->Valid() && connected->Parent()->Type() == aTypes[i] )
break; {
rv.push_back( connected->Parent() );
break;
}
} }
break;
} }
} }
} }

View File

@ -195,7 +195,17 @@ public:
void GetConnectedPads( const BOARD_CONNECTED_ITEM* aItem, std::set<PAD*>* pads ) const; void GetConnectedPads( const BOARD_CONNECTED_ITEM* aItem, std::set<PAD*>* pads ) const;
const std::vector<BOARD_CONNECTED_ITEM*> GetConnectedItems( const BOARD_CONNECTED_ITEM* aItem, const VECTOR2I& aAnchor, KICAD_T aTypes[] ); /**
* Function GetConnectedItemsAtAnchor()
* Returns a list of items connected to a source item aItem at position aAnchor
* @param aItem is the reference item to find other connected items.
* @param aAnchor is the position to find connected items on.
* @param aTypes allows one to filter by item types.
* @return
*/
const std::vector<BOARD_CONNECTED_ITEM*> GetConnectedItemsAtAnchor( const BOARD_CONNECTED_ITEM* aItem,
const VECTOR2I& aAnchor,
const KICAD_T aTypes[] ) const;
void GetUnconnectedEdges( std::vector<CN_EDGE>& aEdges ) const; void GetUnconnectedEdges( std::vector<CN_EDGE>& aEdges ) const;