KiCad PCB EDA Suite
Loading...
Searching...
No Matches
SCH_IO_KICAD_SEXPR_PARSER Class Reference

Object to parser s-expression symbol library and schematic file formats. More...

#include <sch_io_kicad_sexpr_parser.h>

Inheritance diagram for SCH_IO_KICAD_SEXPR_PARSER:

Classes

struct  CHAIN_TERMINAL
 
struct  GROUP_INFO
 

Public Types

using CHAIN_TERMINALS = std::pair<CHAIN_TERMINAL, CHAIN_TERMINAL>
 

Public Member Functions

 SCH_IO_KICAD_SEXPR_PARSER (LINE_READER *aLineReader=nullptr, PROGRESS_REPORTER *aProgressReporter=nullptr, unsigned aLineCount=0, SCH_SHEET *aRootSheet=nullptr, bool aIsAppending=false, bool aIsSheetLoad=false)
 
void ParseLib (LIB_SYMBOL_MAP &aSymbolLibMap)
 
LIB_SYMBOLParseSymbol (LIB_SYMBOL_MAP &aSymbolLibMap, int aFileVersion=SEXPR_SYMBOL_LIB_FILE_VERSION)
 Parse internal LINE_READER object into symbols and return all found.
 
SCH_ITEMParseSymbolDrawItem ()
 
void ParseSchematic (SCH_SHEET *aSheet, bool aIsCopyablyOnly=false, int aFileVersion=SEXPR_SCHEMATIC_FILE_VERSION)
 Parse the internal LINE_READER object into aSheet.
 
int GetParsedRequiredVersion () const
 
const std::vector< wxString > & GetParseWarnings () const
 Return any non-fatal parse warnings that occurred during parsing.
 
const std::map< wxString, wxString > & GetNetChainNetClasses () const
 
const std::map< wxString, COLOR4D > & GetNetChainColors () const
 
const std::map< wxString, CHAIN_TERMINALS > & GetNetChainTerminalRefs () const
 
const std::map< wxString, std::set< wxString > > & GetNetChainMemberNets () const
 

Private Member Functions

void checkpoint ()
 
KIID parseKIID ()
 
void parseHeader (TSCHEMATIC_T::T aHeaderType, int aFileVersion)
 
long parseHex ()
 
int parseInt ()
 
int parseInt (const char *aExpected)
 
int parseInternalUnits ()
 
int parseInternalUnits (const char *aExpected)
 
int parseInternalUnits (TSCHEMATIC_T::T aToken)
 
VECTOR2I parseXY (bool aInvertY=false)
 
bool parseBool ()
 
void parseCustomProperty (EDA_ITEM *aItem)
 
void parseCustomProperty (std::map< wxString, wxString > &aProps)
 
bool parseMaybeAbsentBool (bool aDefaultValue)
 Parses a boolean flag inside a list that existed before boolean normalization.
 
LIB_SYMBOLparseLibSymbol (LIB_SYMBOL_MAP &aSymbolLibMap)
 
void parseStroke (STROKE_PARAMS &aStroke)
 Parse stroke definition aStroke.
 
void parseLineEnding (LINE_ENDING &aEnding)
 Parse a line ending definition from the token stream.
 
void parseFill (FILL_PARAMS &aFill)
 
void parseMargins (int &aLeft, int &aTop, int &aRight, int &aBottom)
 
void parseEDA_TEXT (EDA_TEXT *aText, bool aConvertOverbarSyntax, bool aEnforceMinTextSize=true)
 
void parseBodyStyles (std::unique_ptr< LIB_SYMBOL > &aSymbol)
 
void parsePinNames (std::unique_ptr< LIB_SYMBOL > &aSymbol)
 
void parsePinNumbers (std::unique_ptr< LIB_SYMBOL > &aSymbol)
 
void parseAssociatedFootprints (std::unique_ptr< LIB_SYMBOL > &aSymbol)
 
void parsePinMaps (std::unique_ptr< LIB_SYMBOL > &aSymbol)
 
PIN_MAP parseOnePinMap ()
 
PIN_MAP_INSTANCE_OVERRIDE parsePinMapOverride ()
 
LIB_ID parseSymbolOverride ()
 
SCH_FIELDparseProperty (std::unique_ptr< LIB_SYMBOL > &aSymbol)
 
void parseEllipseBody (SCH_SHAPE *aShape, bool aIsArc, bool aIsSchematic, TSCHEMATIC_T::T aFirstTok)
 
SCH_SHAPEparseSymbolArc ()
 
SCH_SHAPEparseSymbolBezier ()
 
SCH_SHAPEparseSymbolCircle ()
 
SCH_SHAPEparseSymbolEllipse ()
 
SCH_SHAPEparseSymbolEllipseArc ()
 
SCH_PINparseSymbolPin ()
 
SCH_SHAPEparseSymbolPolyLine ()
 
SCH_SHAPEparseSymbolRectangle ()
 
SCH_ITEMparseSymbolText ()
 
SCH_TEXTBOXparseSymbolTextBox ()
 
void parsePAGE_INFO (PAGE_INFO &aPageInfo)
 
void parseTITLE_BLOCK (TITLE_BLOCK &aTitleBlock)
 
void parseSchSymbolInstances (SCH_SCREEN *aScreen)
 
void parseSchSheetInstances (SCH_SHEET *aRootSheet, SCH_SCREEN *aScreen)
 
void parseGroup ()
 
void parseGroupMembers (GROUP_INFO &aGroupInfo)
 
SCH_SHEET_PINparseSchSheetPin (SCH_SHEET *aSheet)
 
SCH_FIELDparseSchField (SCH_ITEM *aParent)
 
SCH_SYMBOLparseSchematicSymbol ()
 
SCH_BITMAPparseImage ()
 
SCH_SHEETparseSheet ()
 
SCH_JUNCTIONparseJunction ()
 
SCH_NO_CONNECTparseNoConnect ()
 
SCH_BUS_WIRE_ENTRYparseBusEntry ()
 
SCH_LINEparseLine ()
 
SCH_SHAPEparseSchPolyLine ()
 
SCH_SHAPEparseSchArc ()
 
SCH_SHAPEparseSchCircle ()
 
SCH_SHAPEparseSchEllipse ()
 
SCH_SHAPEparseSchEllipseArc ()
 
SCH_SHAPEparseSchRectangle ()
 
SCH_SHAPEparseSchBezier ()
 
SCH_RULE_AREAparseSchRuleArea ()
 
SCH_TEXTparseSchText ()
 
SCH_TEXTBOXparseSchTextBox ()
 
void parseSchTextBoxContent (SCH_TEXTBOX *aTextBox)
 
SCH_TABLECELLparseSchTableCell ()
 
SCH_TABLEparseSchTable ()
 
void parseBusAlias (SCH_SCREEN *aScreen)
 
void parseSchNetChain ()
 
void resolveGroups (SCH_SCREEN *aParent)
 
void skipToBlockEnd (int aDepth=1)
 Skip tokens until we reach the end of the current S-expression block.
 

Private Attributes

int m_requiredVersion
 Set to the symbol library file version required.
 
wxString m_generatorVersion
 
int m_unit
 The current unit being parsed.
 
int m_bodyStyle
 The current body style being parsed.
 
wxString m_symbolName
 The current symbol name.
 
bool m_appending
 Appending load status.
 
bool m_sheetLoad
 Loading a sheet into an already open schematic.
 
std::set< KIIDm_uuids
 
PROGRESS_REPORTERm_progressReporter
 
const LINE_READERm_lineReader
 
unsigned m_lastProgressLine
 
unsigned m_lineCount
 
KIID m_rootUuid
 
SCH_SHEETm_rootSheet
 The rootsheet for full project loads or null for importing a schematic.
 
int m_maxError
 Max deviation allowed when approximating bezier curves.
 
std::vector< GROUP_INFOm_groupInfos
 
std::vector< wxString > m_parseWarnings
 Non-fatal warnings collected during parsing.
 
std::map< wxString, wxString > m_netChainNetClasses
 
std::map< wxString, COLOR4Dm_netChainColors
 
std::map< wxString, CHAIN_TERMINALSm_netChainTerminalRefs
 
std::map< wxString, std::set< wxString > > m_netChainMemberNets
 

Detailed Description

Object to parser s-expression symbol library and schematic file formats.

Definition at line 79 of file sch_io_kicad_sexpr_parser.h.

Member Typedef Documentation

◆ CHAIN_TERMINALS

Constructor & Destructor Documentation

◆ SCH_IO_KICAD_SEXPR_PARSER()

SCH_IO_KICAD_SEXPR_PARSER::SCH_IO_KICAD_SEXPR_PARSER ( LINE_READER * aLineReader = nullptr,
PROGRESS_REPORTER * aProgressReporter = nullptr,
unsigned aLineCount = 0,
SCH_SHEET * aRootSheet = nullptr,
bool aIsAppending = false,
bool aIsSheetLoad = false )

Member Function Documentation

◆ checkpoint()

void SCH_IO_KICAD_SEXPR_PARSER::checkpoint ( )
private

◆ GetNetChainColors()

const std::map< wxString, COLOR4D > & SCH_IO_KICAD_SEXPR_PARSER::GetNetChainColors ( ) const
inline

◆ GetNetChainMemberNets()

const std::map< wxString, std::set< wxString > > & SCH_IO_KICAD_SEXPR_PARSER::GetNetChainMemberNets ( ) const
inline

◆ GetNetChainNetClasses()

const std::map< wxString, wxString > & SCH_IO_KICAD_SEXPR_PARSER::GetNetChainNetClasses ( ) const
inline

◆ GetNetChainTerminalRefs()

const std::map< wxString, CHAIN_TERMINALS > & SCH_IO_KICAD_SEXPR_PARSER::GetNetChainTerminalRefs ( ) const
inline

◆ GetParsedRequiredVersion()

int SCH_IO_KICAD_SEXPR_PARSER::GetParsedRequiredVersion ( ) const
inline

Definition at line 117 of file sch_io_kicad_sexpr_parser.h.

References m_requiredVersion.

Referenced by SCH_IO_KICAD_SEXPR_LIB_CACHE::Load().

◆ GetParseWarnings()

const std::vector< wxString > & SCH_IO_KICAD_SEXPR_PARSER::GetParseWarnings ( ) const
inline

Return any non-fatal parse warnings that occurred during parsing.

These are errors that were handled gracefully but should be reported to the user.

Definition at line 123 of file sch_io_kicad_sexpr_parser.h.

References m_parseWarnings.

Referenced by SCH_IO_KICAD_SEXPR_LIB_CACHE::Load().

◆ parseAssociatedFootprints()

void SCH_IO_KICAD_SEXPR_PARSER::parseAssociatedFootprints ( std::unique_ptr< LIB_SYMBOL > & aSymbol)
private

(associated_footprints (footprint "<lib_id>" (map "STD-8")) ; map is optional ... )

Definition at line 1150 of file sch_io_kicad_sexpr_parser.cpp.

References ASSOCIATED_FOOTPRINT::m_FootprintLibId, ASSOCIATED_FOOTPRINT::m_MapName, LIB_ID::Parse(), and T.

Referenced by parseLibSymbol().

◆ parseBodyStyles()

void SCH_IO_KICAD_SEXPR_PARSER::parseBodyStyles ( std::unique_ptr< LIB_SYMBOL > & aSymbol)
private

Definition at line 1031 of file sch_io_kicad_sexpr_parser.cpp.

References _, T, and THROW_PARSE_ERROR.

Referenced by parseLibSymbol().

◆ parseBool()

◆ parseBusAlias()

void SCH_IO_KICAD_SEXPR_PARSER::parseBusAlias ( SCH_SCREEN * aScreen)
private

◆ parseBusEntry()

◆ parseCustomProperty() [1/2]

◆ parseCustomProperty() [2/2]

void SCH_IO_KICAD_SEXPR_PARSER::parseCustomProperty ( std::map< wxString, wxString > & aProps)
private

Definition at line 157 of file sch_io_kicad_sexpr_parser.cpp.

◆ parseEDA_TEXT()

◆ parseEllipseBody()

◆ parseFill()

◆ parseGroup()

◆ parseGroupMembers()

void SCH_IO_KICAD_SEXPR_PARSER::parseGroupMembers ( GROUP_INFO & aGroupInfo)
private

Definition at line 6108 of file sch_io_kicad_sexpr_parser.cpp.

References SCH_IO_KICAD_SEXPR_PARSER::GROUP_INFO::memberUuids, and T.

Referenced by parseGroup().

◆ parseHeader()

void SCH_IO_KICAD_SEXPR_PARSER::parseHeader ( TSCHEMATIC_T::T aHeaderType,
int aFileVersion )
private

Definition at line 1006 of file sch_io_kicad_sexpr_parser.cpp.

References _, m_requiredVersion, parseInt(), T, and THROW_PARSE_ERROR.

Referenced by ParseLib(), and ParseSchematic().

◆ parseHex()

long SCH_IO_KICAD_SEXPR_PARSER::parseHex ( )
inlineprivate

Definition at line 176 of file sch_io_kicad_sexpr_parser.h.

◆ parseImage()

◆ parseInt() [1/2]

◆ parseInt() [2/2]

int SCH_IO_KICAD_SEXPR_PARSER::parseInt ( const char * aExpected)
inlineprivate

Definition at line 187 of file sch_io_kicad_sexpr_parser.h.

References parseInt().

◆ parseInternalUnits() [1/3]

◆ parseInternalUnits() [2/3]

int SCH_IO_KICAD_SEXPR_PARSER::parseInternalUnits ( const char * aExpected)
private

Definition at line 737 of file sch_io_kicad_sexpr_parser.cpp.

References KiROUND(), parseDouble(), and schIUScale.

◆ parseInternalUnits() [3/3]

int SCH_IO_KICAD_SEXPR_PARSER::parseInternalUnits ( TSCHEMATIC_T::T aToken)
inlineprivate

Definition at line 197 of file sch_io_kicad_sexpr_parser.h.

References parseInternalUnits().

◆ parseJunction()

◆ parseKIID()

◆ ParseLib()

◆ parseLibSymbol()

◆ parseLine()

SCH_LINE * SCH_IO_KICAD_SEXPR_PARSER::parseLine ( )
private

◆ parseLineEnding()

void SCH_IO_KICAD_SEXPR_PARSER::parseLineEnding ( LINE_ENDING & aEnding)
private

Parse a line ending definition from the token stream.

Parameters
aEndingA reference to the LINE_ENDING structure to write to.

Definition at line 757 of file sch_io_kicad_sexpr_parser.cpp.

References ARROW, ARROW_OPEN, CIRCLE, NONE, parseInternalUnits(), parseStroke(), LINE_ENDING::SetLength(), LINE_ENDING::SetStroke(), LINE_ENDING::SetStyle(), LINE_ENDING::SetWidth(), SQUARE, and T.

Referenced by parseLine(), parseSchArc(), parseSchBezier(), parseSchPolyLine(), parseSymbolArc(), parseSymbolBezier(), and parseSymbolPolyLine().

◆ parseMargins()

void SCH_IO_KICAD_SEXPR_PARSER::parseMargins ( int & aLeft,
int & aTop,
int & aRight,
int & aBottom )
inlineprivate

Definition at line 248 of file sch_io_kicad_sexpr_parser.h.

References parseInternalUnits().

Referenced by parseSchTextBoxContent(), and parseSymbolTextBox().

◆ parseMaybeAbsentBool()

bool SCH_IO_KICAD_SEXPR_PARSER::parseMaybeAbsentBool ( bool aDefaultValue)
private

Parses a boolean flag inside a list that existed before boolean normalization.

For example, this will handle both (legacy_teardrops) and (legacy_teardrops yes). Call this after parsing the T_legacy_teardrops, and aDefaultValue will be returned for the first case, or true will be returned for the second case.

Parameters
aDefaultValuewill be returned if the end of the list is encountered as the next token
Returns
the parsed boolean

Definition at line 171 of file sch_io_kicad_sexpr_parser.cpp.

References DSN_RIGHT, and T.

Referenced by parseEDA_TEXT(), parseProperty(), parseSchematicSymbol(), parseSchField(), parseSchText(), and parseSheet().

◆ parseNoConnect()

SCH_NO_CONNECT * SCH_IO_KICAD_SEXPR_PARSER::parseNoConnect ( )
private

Definition at line 4641 of file sch_io_kicad_sexpr_parser.cpp.

References parseBool(), parseCustomProperty(), parseKIID(), parseXY(), and T.

Referenced by ParseSchematic().

◆ parseOnePinMap()

PIN_MAP SCH_IO_KICAD_SEXPR_PARSER::parseOnePinMap ( )
private

Definition at line 1242 of file sch_io_kicad_sexpr_parser.cpp.

References PIN_MAP::SetEntry(), and T.

Referenced by parsePinMaps().

◆ parsePAGE_INFO()

◆ parsePinMapOverride()

PIN_MAP_INSTANCE_OVERRIDE SCH_IO_KICAD_SEXPR_PARSER::parsePinMapOverride ( )
private

(pin_map_override (mode library_default|named_map|identity|delegate) (map "<name>") ; only with named_map (edit "<pin>" "<pad>") ... )

Definition at line 1285 of file sch_io_kicad_sexpr_parser.cpp.

References DELEGATE_TO_UNIT_1, FORCE_IDENTITY, T, USE_LIBRARY_DEFAULT, and USE_NAMED_MAP.

Referenced by parseSchematicSymbol().

◆ parsePinMaps()

void SCH_IO_KICAD_SEXPR_PARSER::parsePinMaps ( std::unique_ptr< LIB_SYMBOL > & aSymbol)
private

(pin_maps (pin_map "STD-8" (entry "1" "1") (entry "4" "[4,9]") ...) ... )

Definition at line 1212 of file sch_io_kicad_sexpr_parser.cpp.

References PIN_MAP_SET::AddOrReplace(), parseOnePinMap(), and T.

Referenced by parseLibSymbol().

◆ parsePinNames()

void SCH_IO_KICAD_SEXPR_PARSER::parsePinNames ( std::unique_ptr< LIB_SYMBOL > & aSymbol)
private

(pin_names (offset 123) ; optional (hide yes/no) ; optional hide ; optional, pre-20241004 )

Definition at line 1059 of file sch_io_kicad_sexpr_parser.cpp.

References parseBool(), parseInternalUnits(), and T.

Referenced by parseLibSymbol().

◆ parsePinNumbers()

void SCH_IO_KICAD_SEXPR_PARSER::parsePinNumbers ( std::unique_ptr< LIB_SYMBOL > & aSymbol)
private

(pin_numbers (hide yes/no) ; optional hide ; optional (pre-20241004) )

Definition at line 1107 of file sch_io_kicad_sexpr_parser.cpp.

References parseBool(), and T.

Referenced by parseLibSymbol().

◆ parseProperty()

◆ parseSchArc()

◆ parseSchBezier()

◆ parseSchCircle()

◆ parseSchEllipse()

SCH_SHAPE * SCH_IO_KICAD_SEXPR_PARSER::parseSchEllipse ( )
private

Definition at line 5445 of file sch_io_kicad_sexpr_parser.cpp.

References ELLIPSE, and parseEllipseBody().

Referenced by ParseSchematic().

◆ parseSchEllipseArc()

SCH_SHAPE * SCH_IO_KICAD_SEXPR_PARSER::parseSchEllipseArc ( )
private

Definition at line 5456 of file sch_io_kicad_sexpr_parser.cpp.

References ELLIPSE_ARC, and parseEllipseBody().

Referenced by ParseSchematic().

◆ ParseSchematic()

void SCH_IO_KICAD_SEXPR_PARSER::ParseSchematic ( SCH_SHEET * aSheet,
bool aIsCopyablyOnly = false,
int aFileVersion = SEXPR_SCHEMATIC_FILE_VERSION )

Parse the internal LINE_READER object into aSheet.

When aIsCopyableOnly is true, only schematic objects that are viewable on the canvas for copy and paste purposes are parsed. Other schematic content such as bus definitions or instance data will throw an IO_ERROR exception.

When aIsCopyableOnly is false, full schematic file parsing is performed.

Note
This does not load any sub-sheets or decent complex sheet hierarchies.
Parameters
aSheetThe SCH_SHEET object to store the parsed schematic file.
aIsCopyableOnlyLoad only the schematic objects that can be copied into aSheet if true. Otherwise, load the full schematic file format.
aFileVersionThe schematic file version to parser. Defaults to the schematic file being parsed when aIsCopyableOnly is false.

Definition at line 3172 of file sch_io_kicad_sexpr_parser.cpp.

References _, SCH_SCREEN::AddLibSymbol(), SCH_SCREEN::Append(), checkpoint(), SHAPE_LINE_CHAIN::CPoint(), DSN_EOF, DSN_LEFT, DSN_RIGHT, SCH_SCREEN::FixupEmbeddedData(), Fontconfig(), EMBEDDED_FILES::GetAreFontsEmbedded(), SCHEMATIC::GetEmbeddedFiles(), EDA_SHAPE::GetEndEnding(), EMBEDDED_FILES::GetFontFiles(), EDA_ITEM::GetParent(), EDA_SHAPE::GetPointCount(), EDA_SHAPE::GetPolyShape(), SCH_SHEET::GetScreen(), EDA_SHAPE::GetStartEnding(), SCH_SHAPE::GetStroke(), SCH_SCREEN::GetUuid(), SCH_ITEM::IsLocked(), KI_FALLTHROUGH, LAYER_NOTES, m_generatorVersion, m_maxError, m_parseWarnings, m_requiredVersion, m_rootSheet, m_rootUuid, m_sheetLoad, EDA_ITEM::m_Uuid, SCH_SCREEN::m_uuid, SHAPE_POLY_SET::Outline(), parseBool(), parseBusAlias(), parseBusEntry(), EMBEDDED_FILES_PARSER::ParseEmbedded(), parseGroup(), parseHeader(), parseImage(), parseJunction(), parseKIID(), parseLibSymbol(), parseLine(), parseNoConnect(), parsePAGE_INFO(), parseSchArc(), parseSchBezier(), parseSchCircle(), parseSchEllipse(), parseSchEllipseArc(), parseSchematicSymbol(), parseSchNetChain(), parseSchPolyLine(), parseSchRectangle(), parseSchRuleArea(), parseSchSheetInstances(), parseSchSymbolInstances(), parseSchTable(), parseSchText(), parseSchTextBox(), parseSheet(), parseTITLE_BLOCK(), Pgm(), resolveGroups(), SCH_SCREEN::Schematic(), EMBEDDED_FILES::SetAreFontsEmbedded(), SCH_LINE::SetEndEnding(), SCH_LINE::SetEndPoint(), SCH_SCREEN::SetFileFormatVersionAtLoad(), SCH_SCREEN::SetLegacySymbolInstanceData(), SCH_ITEM::SetLocked(), SCH_SCREEN::SetPageSettings(), EDA_ITEM::SetParent(), SCH_LINE::SetStartEnding(), SCH_LINE::SetStartPoint(), SCH_LINE::SetStroke(), SCH_SCREEN::SetTitleBlock(), SEXPR_SCHEMATIC_FILE_VERSION, SCH_SHEET::SyncUuidToScreen(), T, THROW_PARSE_ERROR, SCH_SCREEN::UpdateLocalLibSymbolLinks(), and IO_ERROR::What().

Referenced by SCH_IO_KICAD_SEXPR::LoadContent(), SCH_IO_KICAD_SEXPR::loadFile(), and KI_TEST::ReadSchematicFromStream().

◆ parseSchematicSymbol()

◆ parseSchField()

◆ parseSchNetChain()

void SCH_IO_KICAD_SEXPR_PARSER::parseSchNetChain ( )
private

◆ parseSchPolyLine()

◆ parseSchRectangle()

◆ parseSchRuleArea()

SCH_RULE_AREA * SCH_IO_KICAD_SEXPR_PARSER::parseSchRuleArea ( )
private

◆ parseSchSheetInstances()

◆ parseSchSheetPin()

SCH_SHEET_PIN * SCH_IO_KICAD_SEXPR_PARSER::parseSchSheetPin ( SCH_SHEET * aSheet)
private

◆ parseSchSymbolInstances()

◆ parseSchTable()

◆ parseSchTableCell()

SCH_TABLECELL * SCH_IO_KICAD_SEXPR_PARSER::parseSchTableCell ( )
private

Definition at line 5655 of file sch_io_kicad_sexpr_parser.cpp.

References parseSchTextBoxContent().

Referenced by parseSchTable().

◆ parseSchText()

◆ parseSchTextBox()

SCH_TEXTBOX * SCH_IO_KICAD_SEXPR_PARSER::parseSchTextBox ( )
private

Definition at line 5642 of file sch_io_kicad_sexpr_parser.cpp.

References parseSchTextBoxContent().

Referenced by ParseSchematic().

◆ parseSchTextBoxContent()

◆ parseSheet()

◆ parseStroke()

◆ ParseSymbol()

LIB_SYMBOL * SCH_IO_KICAD_SEXPR_PARSER::ParseSymbol ( LIB_SYMBOL_MAP & aSymbolLibMap,
int aFileVersion = SEXPR_SYMBOL_LIB_FILE_VERSION )

◆ parseSymbolArc()

◆ parseSymbolBezier()

◆ parseSymbolCircle()

◆ ParseSymbolDrawItem()

◆ parseSymbolEllipse()

SCH_SHAPE * SCH_IO_KICAD_SEXPR_PARSER::parseSymbolEllipse ( )
private

Definition at line 1965 of file sch_io_kicad_sexpr_parser.cpp.

References ELLIPSE, LAYER_DEVICE, m_bodyStyle, m_unit, parseEllipseBody(), and T.

Referenced by ParseSymbolDrawItem().

◆ parseSymbolEllipseArc()

SCH_SHAPE * SCH_IO_KICAD_SEXPR_PARSER::parseSymbolEllipseArc ( )
private

◆ parseSymbolOverride()

LIB_ID SCH_IO_KICAD_SEXPR_PARSER::parseSymbolOverride ( )
private

Definition at line 1361 of file sch_io_kicad_sexpr_parser.cpp.

References _, name, LIB_ID::Parse(), T, and THROW_PARSE_ERROR.

Referenced by parseSchematicSymbol().

◆ parseSymbolPin()

◆ parseSymbolPolyLine()

◆ parseSymbolRectangle()

◆ parseSymbolText()

SCH_ITEM * SCH_IO_KICAD_SEXPR_PARSER::parseSymbolText ( )
private

◆ parseSymbolTextBox()

◆ parseTITLE_BLOCK()

void SCH_IO_KICAD_SEXPR_PARSER::parseTITLE_BLOCK ( TITLE_BLOCK & aTitleBlock)
private

◆ parseXY()

◆ resolveGroups()

void SCH_IO_KICAD_SEXPR_PARSER::resolveGroups ( SCH_SCREEN * aParent)
private

◆ skipToBlockEnd()

void SCH_IO_KICAD_SEXPR_PARSER::skipToBlockEnd ( int aDepth = 1)
private

Skip tokens until we reach the end of the current S-expression block.

This is used for error recovery when parsing fails mid-symbol. The parser will consume tokens until the matching closing parenthesis is found, allowing parsing to continue with the next symbol.

Parameters
aDepthThe initial nesting depth (1 = inside one open paren)

Definition at line 6273 of file sch_io_kicad_sexpr_parser.cpp.

References T.

Referenced by ParseLib().

Member Data Documentation

◆ m_appending

bool SCH_IO_KICAD_SEXPR_PARSER::m_appending
private

Appending load status.

Definition at line 335 of file sch_io_kicad_sexpr_parser.h.

Referenced by parseSchSheetInstances(), parseSchSymbolInstances(), and SCH_IO_KICAD_SEXPR_PARSER().

◆ m_bodyStyle

◆ m_generatorVersion

wxString SCH_IO_KICAD_SEXPR_PARSER::m_generatorVersion
private

Definition at line 331 of file sch_io_kicad_sexpr_parser.h.

Referenced by ParseLib(), and ParseSchematic().

◆ m_groupInfos

std::vector<GROUP_INFO> SCH_IO_KICAD_SEXPR_PARSER::m_groupInfos
private

Definition at line 353 of file sch_io_kicad_sexpr_parser.h.

Referenced by parseGroup(), and resolveGroups().

◆ m_lastProgressLine

unsigned SCH_IO_KICAD_SEXPR_PARSER::m_lastProgressLine
private

Definition at line 342 of file sch_io_kicad_sexpr_parser.h.

Referenced by checkpoint(), and SCH_IO_KICAD_SEXPR_PARSER().

◆ m_lineCount

unsigned SCH_IO_KICAD_SEXPR_PARSER::m_lineCount
private

Definition at line 343 of file sch_io_kicad_sexpr_parser.h.

Referenced by checkpoint(), and SCH_IO_KICAD_SEXPR_PARSER().

◆ m_lineReader

const LINE_READER* SCH_IO_KICAD_SEXPR_PARSER::m_lineReader
private

Definition at line 341 of file sch_io_kicad_sexpr_parser.h.

Referenced by checkpoint(), and SCH_IO_KICAD_SEXPR_PARSER().

◆ m_maxError

int SCH_IO_KICAD_SEXPR_PARSER::m_maxError
private

Max deviation allowed when approximating bezier curves.

Definition at line 351 of file sch_io_kicad_sexpr_parser.h.

Referenced by parseSchBezier(), ParseSchematic(), parseSymbolBezier(), and SCH_IO_KICAD_SEXPR_PARSER().

◆ m_netChainColors

std::map<wxString, COLOR4D> SCH_IO_KICAD_SEXPR_PARSER::m_netChainColors
private

Definition at line 358 of file sch_io_kicad_sexpr_parser.h.

Referenced by GetNetChainColors(), and parseSchNetChain().

◆ m_netChainMemberNets

std::map<wxString, std::set<wxString> > SCH_IO_KICAD_SEXPR_PARSER::m_netChainMemberNets
private

Definition at line 360 of file sch_io_kicad_sexpr_parser.h.

Referenced by GetNetChainMemberNets(), and parseSchNetChain().

◆ m_netChainNetClasses

std::map<wxString, wxString> SCH_IO_KICAD_SEXPR_PARSER::m_netChainNetClasses
private

Definition at line 357 of file sch_io_kicad_sexpr_parser.h.

Referenced by GetNetChainNetClasses(), and parseSchNetChain().

◆ m_netChainTerminalRefs

std::map<wxString, CHAIN_TERMINALS> SCH_IO_KICAD_SEXPR_PARSER::m_netChainTerminalRefs
private

Definition at line 359 of file sch_io_kicad_sexpr_parser.h.

Referenced by GetNetChainTerminalRefs(), and parseSchNetChain().

◆ m_parseWarnings

std::vector<wxString> SCH_IO_KICAD_SEXPR_PARSER::m_parseWarnings
private

Non-fatal warnings collected during parsing.

Definition at line 355 of file sch_io_kicad_sexpr_parser.h.

Referenced by GetParseWarnings(), ParseLib(), parseLibSymbol(), and ParseSchematic().

◆ m_progressReporter

PROGRESS_REPORTER* SCH_IO_KICAD_SEXPR_PARSER::m_progressReporter
private

Definition at line 340 of file sch_io_kicad_sexpr_parser.h.

Referenced by checkpoint(), and SCH_IO_KICAD_SEXPR_PARSER().

◆ m_requiredVersion

◆ m_rootSheet

SCH_SHEET* SCH_IO_KICAD_SEXPR_PARSER::m_rootSheet
private

The rootsheet for full project loads or null for importing a schematic.

Definition at line 348 of file sch_io_kicad_sexpr_parser.h.

Referenced by ParseSchematic(), and SCH_IO_KICAD_SEXPR_PARSER().

◆ m_rootUuid

KIID SCH_IO_KICAD_SEXPR_PARSER::m_rootUuid
private

◆ m_sheetLoad

bool SCH_IO_KICAD_SEXPR_PARSER::m_sheetLoad
private

Loading a sheet into an already open schematic.

Definition at line 336 of file sch_io_kicad_sexpr_parser.h.

Referenced by ParseSchematic(), and SCH_IO_KICAD_SEXPR_PARSER().

◆ m_symbolName

wxString SCH_IO_KICAD_SEXPR_PARSER::m_symbolName
private

The current symbol name.

Definition at line 334 of file sch_io_kicad_sexpr_parser.h.

Referenced by parseLibSymbol().

◆ m_unit

◆ m_uuids

std::set<KIID> SCH_IO_KICAD_SEXPR_PARSER::m_uuids
private

Definition at line 338 of file sch_io_kicad_sexpr_parser.h.

Referenced by parseKIID().


The documentation for this class was generated from the following files: