Refactored TestForExistingItem()

This commit is contained in:
Maciej Suminski 2016-05-18 12:17:08 +02:00
parent b897c5f290
commit b0a191ce3d
1 changed files with 5 additions and 29 deletions

View File

@ -120,40 +120,13 @@ using namespace std::placeholders;
static bool TestForExistingItem( BOARD* aPcb, BOARD_ITEM* aItem ) static bool TestForExistingItem( BOARD* aPcb, BOARD_ITEM* aItem )
{ {
static std::vector<BOARD_ITEM*> itemsList; static std::list<BOARD_ITEM*> itemsList;
if( aItem == NULL ) // Build list if( aItem == NULL ) // Build list
{ {
// Count items to store in itemsList: // Count items to store in itemsList:
int icnt = 0;
BOARD_ITEM* item; BOARD_ITEM* item;
// Count tracks:
for( item = aPcb->m_Track; item != NULL; item = item->Next() )
icnt++;
// Count modules:
for( item = aPcb->m_Modules; item != NULL; item = item->Next() )
icnt++;
// Count drawings
for( item = aPcb->m_Drawings; item != NULL; item = item->Next() )
icnt++;
// Count zones outlines
icnt += aPcb->GetAreaCount();
// Count zones segm (now obsolete):
for( item = aPcb->m_Zone; item != NULL; item = item->Next() )
icnt++;
NETINFO_LIST& netInfo = aPcb->GetNetInfo();
icnt += netInfo.GetNetCount();
// Build candidate list:
itemsList.clear(); itemsList.clear();
itemsList.reserve(icnt);
// Store items in list: // Store items in list:
// Append tracks: // Append tracks:
@ -176,11 +149,14 @@ static bool TestForExistingItem( BOARD* aPcb, BOARD_ITEM* aItem )
for( item = aPcb->m_Zone; item != NULL; item = item->Next() ) for( item = aPcb->m_Zone; item != NULL; item = item->Next() )
itemsList.push_back( item ); itemsList.push_back( item );
NETINFO_LIST& netInfo = aPcb->GetNetInfo();
for( NETINFO_LIST::iterator i = netInfo.begin(); i != netInfo.end(); ++i ) for( NETINFO_LIST::iterator i = netInfo.begin(); i != netInfo.end(); ++i )
itemsList.push_back( *i ); itemsList.push_back( *i );
// Sort list // Sort list
std::sort( itemsList.begin(), itemsList.end() ); itemsList.sort();
return false; return false;
} }