Commit 846b2ae2 authored by Fat-Zer's avatar Fat-Zer Committed by jean-pierre charras

Fix Bug #1381287 (CvPCB ignores the footprint filter field on aliased components)

parent 45fcc04d
...@@ -36,3 +36,5 @@ tstamps ...@@ -36,3 +36,5 @@ tstamps
uri uri
value value
version version
aliases
alias
...@@ -386,6 +386,9 @@ void KICAD_NETLIST_PARSER::parseLibPartList() throw( IO_ERROR, PARSE_ERROR ) ...@@ -386,6 +386,9 @@ void KICAD_NETLIST_PARSER::parseLibPartList() throw( IO_ERROR, PARSE_ERROR )
{ {
/* Parses a section like /* Parses a section like
* (libpart (lib device) (part C) * (libpart (lib device) (part C)
* (aliases
* (alias Cxx)
* (alias Cyy))
* (description "Condensateur non polarise") * (description "Condensateur non polarise")
* (footprints * (footprints
* (fp SM*) * (fp SM*)
...@@ -405,6 +408,7 @@ void KICAD_NETLIST_PARSER::parseLibPartList() throw( IO_ERROR, PARSE_ERROR ) ...@@ -405,6 +408,7 @@ void KICAD_NETLIST_PARSER::parseLibPartList() throw( IO_ERROR, PARSE_ERROR )
wxString libName; wxString libName;
wxString libPartName; wxString libPartName;
wxArrayString footprintFilters; wxArrayString footprintFilters;
wxArrayString aliases;
// The last token read was libpart, so read the next token // The last token read was libpart, so read the next token
while( (token = NextTok()) != T_RIGHT ) while( (token = NextTok()) != T_RIGHT )
...@@ -443,6 +447,20 @@ void KICAD_NETLIST_PARSER::parseLibPartList() throw( IO_ERROR, PARSE_ERROR ) ...@@ -443,6 +447,20 @@ void KICAD_NETLIST_PARSER::parseLibPartList() throw( IO_ERROR, PARSE_ERROR )
break; break;
case T_aliases:
while( (token = NextTok()) != T_RIGHT )
{
if( token == T_LEFT )
token = NextTok();
if( token != T_alias )
Expecting( T_alias );
NeedSYMBOLorNUMBER();
aliases.Add( FROM_UTF8( CurText() ) );
NeedRIGHT();
}
break;
default: default:
// Skip not used data (i.e all other tokens) // Skip not used data (i.e all other tokens)
skipCurrent(); skipCurrent();
...@@ -457,5 +475,12 @@ void KICAD_NETLIST_PARSER::parseLibPartList() throw( IO_ERROR, PARSE_ERROR ) ...@@ -457,5 +475,12 @@ void KICAD_NETLIST_PARSER::parseLibPartList() throw( IO_ERROR, PARSE_ERROR )
if( component->IsLibSource( libName, libPartName ) ) if( component->IsLibSource( libName, libPartName ) )
component->SetFootprintFilters( footprintFilters ); component->SetFootprintFilters( footprintFilters );
for( unsigned jj = 0; jj < aliases.GetCount(); jj++ )
{
if( component->IsLibSource( libName, aliases[jj] ) )
component->SetFootprintFilters( footprintFilters );
}
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment