Browse Source

Use case insensitive comparison in symbol footprint filter match DRC.

This keeps the DRC test in line with the ERC test which is also case
insensitive.
revert-0c36e162
Wayne Stambaugh 8 months ago
parent
commit
a1b78d170d
  1. 14
      pcbnew/drc/drc_test_provider_schematic_parity.cpp

14
pcbnew/drc/drc_test_provider_schematic_parity.cpp

@ -156,24 +156,26 @@ void DRC_TEST_PROVIDER_SCHEMATIC_PARITY::testNetlist( NETLIST& aNetlist )
if( !m_drcEngine->IsErrorLimitExceeded( DRCE_FOOTPRINT_FILTERS ) )
{
wxString libId = footprint->GetFPID().GetUniStringLibId();
wxString fpName = footprint->GetFPID().GetUniStringLibItemName();
wxString libIdLower = footprint->GetFPID().GetUniStringLibId().Lower();
wxString fpNameLower = footprint->GetFPID().GetUniStringLibItemName().Lower();
size_t filtercount = component->GetFootprintFilters().GetCount();
bool found = ( 0 == filtercount ); // if no entries, do not filter
for( size_t jj = 0; jj < filtercount && !found; jj++ )
{
if( component->GetFootprintFilters()[jj].Find( ':' ) == wxNOT_FOUND )
found = fpName.Matches( component->GetFootprintFilters()[jj] );
wxString filterLower = component->GetFootprintFilters()[jj].Lower();
if( filterLower.Find( ':' ) == wxNOT_FOUND )
found = fpNameLower.Matches( filterLower );
else
found = libId.Matches( component->GetFootprintFilters()[jj] );
found = libIdLower.Matches( filterLower );
}
if( !found )
{
wxString msg;
msg.Printf( _( "%s doesn't match symbol's footprint filters (%s)." ),
fpName,
footprint->GetFPID().GetUniStringLibId(),
wxJoin( component->GetFootprintFilters(), ' ' ) );
std::shared_ptr<DRC_ITEM> drcItem = DRC_ITEM::Create( DRCE_FOOTPRINT_FILTERS );

Loading…
Cancel
Save