CADSTAR Schematic Archive Importer: Parse missing TERMATTR node
This commit is contained in:
parent
8633410bec
commit
73ad503db3
|
@ -455,7 +455,7 @@ void CADSTAR_SCH_ARCHIVE_PARSER::COMP::Parse( XNODE* aNode )
|
|||
}
|
||||
else
|
||||
{
|
||||
THROW_UNKNOWN_NODE_IO_ERROR( cNode->GetName(), wxT( "ATTR" ) );
|
||||
THROW_UNKNOWN_NODE_IO_ERROR( cNode->GetName(), aNode->GetName() );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -482,7 +482,31 @@ void CADSTAR_SCH_ARCHIVE_PARSER::PARTREF::Parse( XNODE* aNode )
|
|||
}
|
||||
else
|
||||
{
|
||||
THROW_UNKNOWN_NODE_IO_ERROR( cNode->GetName(), wxT( "ATTR" ) );
|
||||
THROW_UNKNOWN_NODE_IO_ERROR( cNode->GetName(), aNode->GetName() );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void CADSTAR_SCH_ARCHIVE_PARSER::TERMATTR::Parse( XNODE* aNode )
|
||||
{
|
||||
wxCHECK( aNode->GetName() == wxT( "TERMATTR" ), /* void */ );
|
||||
|
||||
TerminalID = GetXmlAttributeIDLong( aNode, 0 );
|
||||
|
||||
XNODE* cNode = aNode->GetChildren();
|
||||
bool attrParsed = false;
|
||||
|
||||
for( ; cNode; cNode = cNode->GetNext() )
|
||||
{
|
||||
if( !attrParsed && cNode->GetName() == wxT( "ATTR" ) )
|
||||
{
|
||||
Value.Parse( cNode );
|
||||
attrParsed = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
THROW_UNKNOWN_NODE_IO_ERROR( cNode->GetName(), aNode->GetName() );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -506,7 +530,7 @@ void CADSTAR_SCH_ARCHIVE_PARSER::SYMPINNAME_LABEL::Parse( XNODE* aNode )
|
|||
}
|
||||
else
|
||||
{
|
||||
THROW_UNKNOWN_NODE_IO_ERROR( cNode->GetName(), wxT( "ATTR" ) );
|
||||
THROW_UNKNOWN_NODE_IO_ERROR( cNode->GetName(), aNode->GetName() );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -530,7 +554,7 @@ void CADSTAR_SCH_ARCHIVE_PARSER::SYMBOL::PIN_NUM::Parse( XNODE* aNode )
|
|||
}
|
||||
else
|
||||
{
|
||||
THROW_UNKNOWN_NODE_IO_ERROR( cNode->GetName(), wxT( "ATTR" ) );
|
||||
THROW_UNKNOWN_NODE_IO_ERROR( cNode->GetName(), aNode->GetName() );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -666,6 +690,12 @@ void CADSTAR_SCH_ARCHIVE_PARSER::SYMBOL::Parse( XNODE* aNode )
|
|||
IsSymbolVariant = true;
|
||||
SymbolVariant.Parse( cNode );
|
||||
}
|
||||
else if( cNodeName == wxT( "TERMATTR" ) )
|
||||
{
|
||||
TERMATTR termattr;
|
||||
termattr.Parse( cNode );
|
||||
TerminalAttributes.insert( std::make_pair( termattr.TerminalID, termattr ) );
|
||||
}
|
||||
else if( cNodeName == wxT( "SYMPINLABEL" ) )
|
||||
{
|
||||
SYMPINNAME_LABEL sympinname;
|
||||
|
|
|
@ -194,6 +194,15 @@ public:
|
|||
};
|
||||
|
||||
|
||||
struct TERMATTR
|
||||
{
|
||||
TERMINAL_ID TerminalID;
|
||||
ATTRIBUTE_VALUE Value;
|
||||
|
||||
void Parse( XNODE* aNode );
|
||||
};
|
||||
|
||||
|
||||
struct SYMPINNAME_LABEL
|
||||
{
|
||||
TERMINAL_ID TerminalID;
|
||||
|
@ -269,6 +278,7 @@ public:
|
|||
SYMBOL_ID VariantParentSymbolID = wxEmptyString;
|
||||
VARIANT_ID VariantID = wxEmptyString;
|
||||
|
||||
std::map<TERMINAL_ID, TERMATTR> TerminalAttributes;
|
||||
std::map<TERMINAL_ID, SYMPINNAME_LABEL> PinLabels;
|
||||
std::map<TERMINAL_ID, SYMPINNAME_LABEL> PinNames;
|
||||
std::map<TERMINAL_ID, PIN_NUM> PinNumbers;
|
||||
|
|
Loading…
Reference in New Issue