Don't parse multiple items in a single c'tor or function call.
The C++ optimizer is not always your friend and may do them in the reverse order.
This commit is contained in:
parent
d33d092e8e
commit
2366b06e77
|
@ -179,8 +179,10 @@ void SCH_LEGACY_PLUGIN_CACHE::loadDocs()
|
||||||
THROW_IO_ERROR( _( "symbol document library file is empty" ) );
|
THROW_IO_ERROR( _( "symbol document library file is empty" ) );
|
||||||
|
|
||||||
if( !strCompare( DOCFILE_IDENT, line, &line ) )
|
if( !strCompare( DOCFILE_IDENT, line, &line ) )
|
||||||
|
{
|
||||||
SCH_PARSE_ERROR( "invalid document library file version formatting in header",
|
SCH_PARSE_ERROR( "invalid document library file version formatting in header",
|
||||||
reader, line );
|
reader, line );
|
||||||
|
}
|
||||||
|
|
||||||
while( reader.ReadLine() )
|
while( reader.ReadLine() )
|
||||||
{
|
{
|
||||||
|
@ -312,8 +314,10 @@ LIB_SYMBOL* SCH_LEGACY_PLUGIN_CACHE::LoadPart( LINE_READER& aReader, int aMajorV
|
||||||
tmp = tokens.GetNextToken(); // Pin name offset.
|
tmp = tokens.GetNextToken(); // Pin name offset.
|
||||||
|
|
||||||
if( !tmp.ToLong( &num ) )
|
if( !tmp.ToLong( &num ) )
|
||||||
|
{
|
||||||
THROW_PARSE_ERROR( "invalid pin offset", aReader.GetSource(), aReader.Line(),
|
THROW_PARSE_ERROR( "invalid pin offset", aReader.GetSource(), aReader.Line(),
|
||||||
aReader.LineNumber(), pos );
|
aReader.LineNumber(), pos );
|
||||||
|
}
|
||||||
|
|
||||||
pos += tmp.size() + 1;
|
pos += tmp.size() + 1;
|
||||||
symbol->SetPinNameOffset( Mils2Iu( (int)num ) );
|
symbol->SetPinNameOffset( Mils2Iu( (int)num ) );
|
||||||
|
@ -330,8 +334,10 @@ LIB_SYMBOL* SCH_LEGACY_PLUGIN_CACHE::LoadPart( LINE_READER& aReader, int aMajorV
|
||||||
tmp = tokens.GetNextToken(); // Show pin names.
|
tmp = tokens.GetNextToken(); // Show pin names.
|
||||||
|
|
||||||
if( !( tmp == "Y" || tmp == "N") )
|
if( !( tmp == "Y" || tmp == "N") )
|
||||||
|
{
|
||||||
THROW_PARSE_ERROR( "expected Y or N", aReader.GetSource(), aReader.Line(),
|
THROW_PARSE_ERROR( "expected Y or N", aReader.GetSource(), aReader.Line(),
|
||||||
aReader.LineNumber(), pos );
|
aReader.LineNumber(), pos );
|
||||||
|
}
|
||||||
|
|
||||||
pos += tmp.size() + 1;
|
pos += tmp.size() + 1;
|
||||||
symbol->SetShowPinNames( ( tmp == "N" ) ? false : true );
|
symbol->SetShowPinNames( ( tmp == "N" ) ? false : true );
|
||||||
|
@ -339,8 +345,10 @@ LIB_SYMBOL* SCH_LEGACY_PLUGIN_CACHE::LoadPart( LINE_READER& aReader, int aMajorV
|
||||||
tmp = tokens.GetNextToken(); // Number of units.
|
tmp = tokens.GetNextToken(); // Number of units.
|
||||||
|
|
||||||
if( !tmp.ToLong( &num ) )
|
if( !tmp.ToLong( &num ) )
|
||||||
|
{
|
||||||
THROW_PARSE_ERROR( "invalid unit count", aReader.GetSource(), aReader.Line(),
|
THROW_PARSE_ERROR( "invalid unit count", aReader.GetSource(), aReader.Line(),
|
||||||
aReader.LineNumber(), pos );
|
aReader.LineNumber(), pos );
|
||||||
|
}
|
||||||
|
|
||||||
pos += tmp.size() + 1;
|
pos += tmp.size() + 1;
|
||||||
symbol->SetUnitCount( (int)num );
|
symbol->SetUnitCount( (int)num );
|
||||||
|
@ -680,8 +688,8 @@ void SCH_LEGACY_PLUGIN_CACHE::loadDrawEntries( std::unique_ptr<LIB_SYMBOL>& aSym
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'T': // Text
|
case 'T': // Text
|
||||||
aSymbol->AddDrawItem( loadText( aSymbol, aReader, aMajorVersion,
|
aSymbol->AddDrawItem( loadText( aSymbol, aReader, aMajorVersion, aMinorVersion ),
|
||||||
aMinorVersion ), false );
|
false );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'S': // Square
|
case 'S': // Square
|
||||||
|
@ -742,8 +750,10 @@ LIB_SHAPE* SCH_LEGACY_PLUGIN_CACHE::loadArc( std::unique_ptr<LIB_SYMBOL>& aSymbo
|
||||||
|
|
||||||
LIB_SHAPE* arc = new LIB_SHAPE( aSymbol.get(), SHAPE_T::ARC );
|
LIB_SHAPE* arc = new LIB_SHAPE( aSymbol.get(), SHAPE_T::ARC );
|
||||||
|
|
||||||
VECTOR2I center( Mils2Iu( parseInt( aReader, line, &line ) ),
|
VECTOR2I center;
|
||||||
Mils2Iu( parseInt( aReader, line, &line ) ) );
|
|
||||||
|
center.x = Mils2Iu( parseInt( aReader, line, &line ) );
|
||||||
|
center.y = Mils2Iu( parseInt( aReader, line, &line ) );
|
||||||
|
|
||||||
arc->SetPosition( center );
|
arc->SetPosition( center );
|
||||||
|
|
||||||
|
@ -821,8 +831,10 @@ LIB_SHAPE* SCH_LEGACY_PLUGIN_CACHE::loadCircle( std::unique_ptr<LIB_SYMBOL>& aSy
|
||||||
|
|
||||||
LIB_SHAPE* circle = new LIB_SHAPE( aSymbol.get(), SHAPE_T::CIRCLE );
|
LIB_SHAPE* circle = new LIB_SHAPE( aSymbol.get(), SHAPE_T::CIRCLE );
|
||||||
|
|
||||||
VECTOR2I center( Mils2Iu( parseInt( aReader, line, &line ) ),
|
VECTOR2I center;
|
||||||
Mils2Iu( parseInt( aReader, line, &line ) ) );
|
|
||||||
|
center.x = Mils2Iu( parseInt( aReader, line, &line ) );
|
||||||
|
center.y = Mils2Iu( parseInt( aReader, line, &line ) );
|
||||||
|
|
||||||
int radius = Mils2Iu( parseInt( aReader, line, &line ) );
|
int radius = Mils2Iu( parseInt( aReader, line, &line ) );
|
||||||
|
|
||||||
|
@ -856,9 +868,10 @@ LIB_TEXT* SCH_LEGACY_PLUGIN_CACHE::loadText( std::unique_ptr<LIB_SYMBOL>& aSymbo
|
||||||
|
|
||||||
text->SetTextAngle( EDA_ANGLE( angleInTenths, TENTHS_OF_A_DEGREE_T ) );
|
text->SetTextAngle( EDA_ANGLE( angleInTenths, TENTHS_OF_A_DEGREE_T ) );
|
||||||
|
|
||||||
VECTOR2I center( Mils2Iu( parseInt( aReader, line, &line ) ),
|
VECTOR2I center;
|
||||||
Mils2Iu( parseInt( aReader, line, &line ) ) );
|
|
||||||
|
|
||||||
|
center.x = Mils2Iu( parseInt( aReader, line, &line ) );
|
||||||
|
center.y = Mils2Iu( parseInt( aReader, line, &line ) );
|
||||||
text->SetPosition( center );
|
text->SetPosition( center );
|
||||||
|
|
||||||
wxSize size;
|
wxSize size;
|
||||||
|
@ -949,14 +962,16 @@ LIB_SHAPE* SCH_LEGACY_PLUGIN_CACHE::loadRect( std::unique_ptr<LIB_SYMBOL>& aSymb
|
||||||
|
|
||||||
LIB_SHAPE* rectangle = new LIB_SHAPE( aSymbol.get(), SHAPE_T::RECT );
|
LIB_SHAPE* rectangle = new LIB_SHAPE( aSymbol.get(), SHAPE_T::RECT );
|
||||||
|
|
||||||
VECTOR2I pos( Mils2Iu( parseInt( aReader, line, &line ) ),
|
VECTOR2I pos;
|
||||||
Mils2Iu( parseInt( aReader, line, &line ) ) );
|
|
||||||
|
|
||||||
|
pos.x = Mils2Iu( parseInt( aReader, line, &line ) );
|
||||||
|
pos.y = Mils2Iu( parseInt( aReader, line, &line ) );
|
||||||
rectangle->SetPosition( pos );
|
rectangle->SetPosition( pos );
|
||||||
|
|
||||||
VECTOR2I end( Mils2Iu( parseInt( aReader, line, &line ) ),
|
VECTOR2I end;
|
||||||
Mils2Iu( parseInt( aReader, line, &line ) ) );
|
|
||||||
|
|
||||||
|
end.x = Mils2Iu( parseInt( aReader, line, &line ) );
|
||||||
|
end.y = Mils2Iu( parseInt( aReader, line, &line ) );
|
||||||
rectangle->SetEnd( end );
|
rectangle->SetEnd( end );
|
||||||
|
|
||||||
rectangle->SetUnit( parseInt( aReader, line, &line ) );
|
rectangle->SetUnit( parseInt( aReader, line, &line ) );
|
||||||
|
@ -1244,17 +1259,23 @@ LIB_SHAPE* SCH_LEGACY_PLUGIN_CACHE::loadBezier( std::unique_ptr<LIB_SYMBOL>& aSy
|
||||||
|
|
||||||
bezier->SetStroke( stroke );
|
bezier->SetStroke( stroke );
|
||||||
|
|
||||||
bezier->SetStart( VECTOR2I( Mils2Iu( parseInt( aReader, line, &line ) ),
|
VECTOR2I pt;
|
||||||
Mils2Iu( parseInt( aReader, line, &line ) ) ) );
|
|
||||||
|
|
||||||
bezier->SetBezierC1( VECTOR2I( Mils2Iu( parseInt( aReader, line, &line ) ),
|
pt.x = Mils2Iu( parseInt( aReader, line, &line ) );
|
||||||
Mils2Iu( parseInt( aReader, line, &line ) ) ) );
|
pt.y = Mils2Iu( parseInt( aReader, line, &line ) );
|
||||||
|
bezier->SetStart( pt );
|
||||||
|
|
||||||
bezier->SetBezierC2( VECTOR2I( Mils2Iu( parseInt( aReader, line, &line ) ),
|
pt.x = Mils2Iu( parseInt( aReader, line, &line ) );
|
||||||
Mils2Iu( parseInt( aReader, line, &line ) ) ) );
|
pt.y = Mils2Iu( parseInt( aReader, line, &line ) );
|
||||||
|
bezier->SetBezierC1( pt );
|
||||||
|
|
||||||
bezier->SetEnd( VECTOR2I( Mils2Iu( parseInt( aReader, line, &line ) ),
|
pt.x = Mils2Iu( parseInt( aReader, line, &line ) );
|
||||||
Mils2Iu( parseInt( aReader, line, &line ) ) ) );
|
pt.y = Mils2Iu( parseInt( aReader, line, &line ) );
|
||||||
|
bezier->SetBezierC2( pt );
|
||||||
|
|
||||||
|
pt.x = Mils2Iu( parseInt( aReader, line, &line ) );
|
||||||
|
pt.y = Mils2Iu( parseInt( aReader, line, &line ) );
|
||||||
|
bezier->SetEnd( pt );
|
||||||
|
|
||||||
bezier->RebuildBezierToSegmentsPointsList( bezier->GetWidth() );
|
bezier->RebuildBezierToSegmentsPointsList( bezier->GetWidth() );
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue