// Sort function use by GenereModulesPosition() // sort is made by side (layer) top layer first // then by reference increasing order static bool sortFPlist( const LIST_MOD& ref, const LIST_MOD& tst ) { if( ref.m_Layer == tst.m_Layer ) return StrNumCmp( ref.m_Reference, tst.m_Reference, 16 ) < 0; return ref.m_Layer > tst.m_Layer; }
/* Sort alphabetically, case insensitive. */ static int wxCALLBACK MyCompareFunction( long aItem1, long aItem2, long aSortData ) { wxString* component1Name = (wxString*) aItem1; wxString* component2Name = (wxString*) aItem2; return StrNumCmp( *component1Name, *component2Name, INT_MAX, true ); }
std::vector<LIB_TREE_ITEM*> FP_TREE_MODEL_ADAPTER::getFootprints( const wxString& aLibName ) { std::vector<LIB_TREE_ITEM*> libList; auto fullListStart = GFootprintList.GetList().begin(); auto fullListEnd = GFootprintList.GetList().end(); std::unique_ptr<FOOTPRINT_INFO> dummy( new FOOTPRINT_INFO_IMPL( aLibName, wxEmptyString ) ); // List is sorted, so use a binary search to find the range of footnotes for our library auto libBounds = std::equal_range( fullListStart, fullListEnd, dummy, []( const std::unique_ptr<FOOTPRINT_INFO>& a, const std::unique_ptr<FOOTPRINT_INFO>& b ) { return StrNumCmp( a->GetLibNickname(), b->GetLibNickname(), true ) < 0; } ); for( auto i = libBounds.first; i != libBounds.second; ++i ) libList.push_back( i->get() ); return libList; }
/** * Operator < * compares two #COMPONENT objects by reference designator. */ bool operator < ( const COMPONENT& item1, const COMPONENT& item2 ) { return StrNumCmp( item1.GetReference(), item2.GetReference(), INT_MAX, true ) < 0; }