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

Read a Pcbnew s-expression formatted LINE_READER object and returns the appropriate BOARD_ITEM object. More...

#include <pcb_io_kicad_sexpr_parser.h>

Inheritance diagram for PCB_IO_KICAD_SEXPR_PARSER:

Classes

struct  GENERATOR_INFO
 Convert net code using the mapping table if available, otherwise returns unchanged net code if < 0 or if it's out of range. More...
 
struct  GROUP_INFO
 

Public Member Functions

 PCB_IO_KICAD_SEXPR_PARSER (LINE_READER *aReader, BOARD *aAppendToMe, std::function< bool(wxString, int, wxString, wxString)> aQueryUserCallback, PROGRESS_REPORTER *aProgressReporter=nullptr, unsigned aLineCount=0)
 
BOARD_ITEMParse ()
 
FOOTPRINTparseFOOTPRINT (wxArrayString *aInitialComments=nullptr)
 
bool IsTooRecent ()
 Return whether a version number, if any was parsed, was too recent.
 
wxString GetRequiredVersion ()
 Return a string representing the version of KiCad required to open this file.
 
bool IsValidBoardHeader ()
 Partially parse the input and check if it matches expected header.
 

Private Types

typedef std::unordered_map< std::string, PCB_LAYER_IDLAYER_ID_MAP
 
typedef std::unordered_map< std::string, LSETLSET_MAP
 
typedef std::unordered_map< wxString, KIIDKIID_MAP
 The type of progress bar timeout.
 
using TIMEOUT = std::chrono::milliseconds
 The clock used for the timestamp (guaranteed to be monotonic).
 
using CLOCK = std::chrono::steady_clock
 The type of the time stamps.
 
using TIME_PT = std::chrono::time_point< CLOCK >
 

Private Member Functions

int getNetCode (int aNetCode)
 
void pushValueIntoMap (int aIndex, int aValue)
 Add aValue value in netcode mapping (m_netCodes) at aIndex.
 
void init ()
 Clear and re-establish m_layerMap with the default layer names.
 
void checkpoint ()
 
void createOldLayerMapping (std::unordered_map< std::string, std::string > &aMap)
 Create a mapping from the (short-lived) bug where layer names were translated.
 
void skipCurrent ()
 Skip the current token level, i.e search for the RIGHT parenthesis which closes the current description.
 
void parseHeader ()
 
void parseGeneralSection ()
 
void parsePAGE_INFO ()
 
void parseTITLE_BLOCK ()
 
void parseLayers ()
 
void parseLayer (LAYER *aLayer)
 
void parseBoardStackup ()
 
void parseSetup ()
 
void parseDefaults (BOARD_DESIGN_SETTINGS &aSettings)
 
void parseDefaultTextDims (BOARD_DESIGN_SETTINGS &aSettings, int aLayer)
 
void parseNETINFO_ITEM ()
 
void parseNETCLASS ()
 
void parseTEARDROP_PARAMETERS (TEARDROP_PARAMETERS *tdParams)
 
void parseTextBoxContent (PCB_TEXTBOX *aTextBox)
 
PCB_SHAPEparsePCB_SHAPE (BOARD_ITEM *aParent)
 
PCB_TEXTparsePCB_TEXT (BOARD_ITEM *aParent)
 
void parsePCB_TEXT_effects (PCB_TEXT *aText)
 
PCB_REFERENCE_IMAGEparsePCB_REFERENCE_IMAGE (BOARD_ITEM *aParent)
 
PCB_TEXTBOXparsePCB_TEXTBOX (BOARD_ITEM *aParent)
 
PCB_TABLECELLparsePCB_TABLECELL (BOARD_ITEM *aParent)
 
PCB_TABLEparsePCB_TABLE (BOARD_ITEM *aParent)
 
PCB_DIMENSION_BASEparseDIMENSION (BOARD_ITEM *aParent)
 
FOOTPRINTparseFOOTPRINT_unchecked (wxArrayString *aInitialComments=nullptr)
 
PADparsePAD (FOOTPRINT *aParent=nullptr)
 
bool parsePAD_option (PAD *aPad)
 
PCB_ARCparseARC ()
 
PCB_TRACKparsePCB_TRACK ()
 
PCB_VIAparsePCB_VIA ()
 
ZONEparseZONE (BOARD_ITEM_CONTAINER *aParent)
 
PCB_TARGETparsePCB_TARGET ()
 
BOARDparseBOARD ()
 
void parseGROUP_members (GROUP_INFO &aGroupInfo)
 
void parseGROUP (BOARD_ITEM *aParent)
 
void parseGENERATOR (BOARD_ITEM *aParent)
 
BOARDparseBOARD_unchecked ()
 
template<class T , class M >
lookUpLayer (const M &aMap)
 Parse the current token for the layer definition of a BOARD_ITEM object.
 
PCB_LAYER_ID parseBoardItemLayer ()
 Parse the layer definition of a BOARD_ITEM object.
 
LSET parseBoardItemLayersAsMask ()
 Parse the layers definition of a BOARD_ITEM object.
 
VECTOR2I parseXY ()
 Parse a coordinate pair (xy X Y) in board units (mm).
 
void parseXY (int *aX, int *aY)
 
void parseMargins (int &aLeft, int &aTop, int &aRight, int &aBottom)
 
std::pair< wxString, wxString > parseBoardProperty ()
 
void parseOutlinePoints (SHAPE_LINE_CHAIN &aPoly)
 Parses possible outline points and stores them into aPoly.
 
void parseEDA_TEXT (EDA_TEXT *aText)
 Parse the common settings for any object derived from EDA_TEXT.
 
void parseRenderCache (EDA_TEXT *text)
 Parse the render cache for any object derived from EDA_TEXT.
 
FP_3DMODELparse3DModel ()
 
int parseBoardUnits ()
 Parse the current token as an ASCII numeric string with possible leading whitespace into a double precision floating point number.
 
int parseBoardUnits (const char *aExpected)
 
int parseBoardUnits (PCB_KEYS_T::T aToken)
 
int parseInt ()
 
int parseInt (const char *aExpected)
 
long parseHex ()
 
bool parseBool ()
 
bool parseMaybeAbsentBool (bool aDefaultValue)
 Parses a boolean flag inside a list that existed before boolean normalization.
 
KIID CurStrToKIID ()
 
void resolveGroups (BOARD_ITEM *aParent)
 Called after parsing a footprint definition or board to build the group membership lists.
 

Private Attributes

BOARDm_board
 
LAYER_ID_MAP m_layerIndices
 map layer name to it's index
 
LSET_MAP m_layerMasks
 map layer names to their masks
 
std::set< wxString > m_undefinedLayers
 set of layers not defined in layers section
 
std::vector< int > m_netCodes
 net codes mapping for boards being loaded
 
bool m_tooRecent
 true if version parses as later than supported
 
int m_requiredVersion
 set to the KiCad format version this board requires
 
wxString m_generatorVersion
 Set to the generator version this board requires.
 
bool m_appendToExisting
 reading into an existing board; reset UUIDs
 
KIID_MAP m_resetKIIDMap
 
bool m_showLegacySegmentZoneWarning
 
bool m_showLegacy5ZoneWarning
 
PROGRESS_REPORTERm_progressReporter
 optional; may be nullptr
 
TIME_PT m_lastProgressTime
 for progress reporting
 
unsigned m_lineCount
 for progress reporting
 
std::vector< GROUP_INFOm_groupInfos
 
std::vector< GENERATOR_INFOm_generatorInfos
 
std::function< bool(wxString aTitle, int aIcon, wxString aMsg, wxString aAction)> m_queryUserCallback
 

Detailed Description

Read a Pcbnew s-expression formatted LINE_READER object and returns the appropriate BOARD_ITEM object.

Definition at line 75 of file pcb_io_kicad_sexpr_parser.h.

Member Typedef Documentation

◆ CLOCK

using PCB_IO_KICAD_SEXPR_PARSER::CLOCK = std::chrono::steady_clock
private

The type of the time stamps.

Definition at line 384 of file pcb_io_kicad_sexpr_parser.h.

◆ KIID_MAP

typedef std::unordered_map< wxString, KIID > PCB_IO_KICAD_SEXPR_PARSER::KIID_MAP
private

The type of progress bar timeout.

Definition at line 378 of file pcb_io_kicad_sexpr_parser.h.

◆ LAYER_ID_MAP

typedef std::unordered_map< std::string, PCB_LAYER_ID > PCB_IO_KICAD_SEXPR_PARSER::LAYER_ID_MAP
private

Definition at line 376 of file pcb_io_kicad_sexpr_parser.h.

◆ LSET_MAP

typedef std::unordered_map< std::string, LSET > PCB_IO_KICAD_SEXPR_PARSER::LSET_MAP
private

Definition at line 377 of file pcb_io_kicad_sexpr_parser.h.

◆ TIME_PT

using PCB_IO_KICAD_SEXPR_PARSER::TIME_PT = std::chrono::time_point<CLOCK>
private

Definition at line 387 of file pcb_io_kicad_sexpr_parser.h.

◆ TIMEOUT

using PCB_IO_KICAD_SEXPR_PARSER::TIMEOUT = std::chrono::milliseconds
private

The clock used for the timestamp (guaranteed to be monotonic).

Definition at line 381 of file pcb_io_kicad_sexpr_parser.h.

Constructor & Destructor Documentation

◆ PCB_IO_KICAD_SEXPR_PARSER()

PCB_IO_KICAD_SEXPR_PARSER::PCB_IO_KICAD_SEXPR_PARSER ( LINE_READER aReader,
BOARD aAppendToMe,
std::function< bool(wxString, int, wxString, wxString)>  aQueryUserCallback,
PROGRESS_REPORTER aProgressReporter = nullptr,
unsigned  aLineCount = 0 
)
inline

Definition at line 78 of file pcb_io_kicad_sexpr_parser.h.

References init().

Member Function Documentation

◆ checkpoint()

void PCB_IO_KICAD_SEXPR_PARSER::checkpoint ( )
private

◆ createOldLayerMapping()

void PCB_IO_KICAD_SEXPR_PARSER::createOldLayerMapping ( std::unordered_map< std::string, std::string > &  aMap)
private

Create a mapping from the (short-lived) bug where layer names were translated.

Todo:
Remove this once we support custom layer names.
Parameters
aMapstring mapping from translated to English layer names.

Definition at line 1802 of file pcb_io_kicad_sexpr_parser.cpp.

Referenced by parseLayers().

◆ CurStrToKIID()

◆ getNetCode()

int PCB_IO_KICAD_SEXPR_PARSER::getNetCode ( int  aNetCode)
inlineprivate

◆ GetRequiredVersion()

wxString PCB_IO_KICAD_SEXPR_PARSER::GetRequiredVersion ( )

Return a string representing the version of KiCad required to open this file.

Not particularly meaningful if IsTooRecent() returns false.

Definition at line 267 of file pcb_io_kicad_sexpr_parser.cpp.

References _, m_requiredVersion, and THROW_PARSE_ERROR.

Referenced by PCB_IO_KICAD_SEXPR::DoLoad(), CLIPBOARD_IO::LoadBoard(), PCB_IO_KICAD_SEXPR::Parse(), parseBOARD(), and parseFOOTPRINT().

◆ init()

void PCB_IO_KICAD_SEXPR_PARSER::init ( )
private

Clear and re-establish m_layerMap with the default layer names.

m_layerMap will have some of its entries overwritten whenever a (new) board is encountered.

Definition at line 89 of file pcb_io_kicad_sexpr_parser.cpp.

References LSET::AllCuMask(), B_Adhes, B_CrtYd, B_Cu, B_Fab, B_Mask, B_Paste, B_SilkS, F_Adhes, F_CrtYd, F_Cu, F_Fab, F_Mask, F_Paste, F_SilkS, In15_Cu, LSET::InternalCuMask(), m_layerIndices, m_layerMasks, m_requiredVersion, m_resetKIIDMap, m_showLegacy5ZoneWarning, m_showLegacySegmentZoneWarning, m_tooRecent, LSET::Name(), PCB_LAYER_ID_COUNT, StrPrintf(), and TO_UTF8.

Referenced by PCB_IO_KICAD_SEXPR_PARSER().

◆ IsTooRecent()

bool PCB_IO_KICAD_SEXPR_PARSER::IsTooRecent ( )
inline

Return whether a version number, if any was parsed, was too recent.

Definition at line 107 of file pcb_io_kicad_sexpr_parser.h.

References m_tooRecent.

Referenced by PCB_IO_KICAD_SEXPR::DoLoad(), CLIPBOARD_IO::LoadBoard(), and PCB_IO_KICAD_SEXPR::Parse().

◆ IsValidBoardHeader()

bool PCB_IO_KICAD_SEXPR_PARSER::IsValidBoardHeader ( )

Partially parse the input and check if it matches expected header.

Returns
true if expected header matches

Definition at line 801 of file pcb_io_kicad_sexpr_parser.cpp.

References m_groupInfos.

Referenced by PCB_IO_KICAD_SEXPR::CanReadBoard().

◆ lookUpLayer()

template<class T , class M >
T PCB_IO_KICAD_SEXPR_PARSER::lookUpLayer ( const M &  aMap)
private

Parse the current token for the layer definition of a BOARD_ITEM object.

Parameters
aMapis the LAYER_{NUM|MSK}_MAP to use for the lookup.
Returns
The result of the parsed BOARD_ITEM layer or set designator.
Exceptions
IO_ERRORif the layer is not valid.
PARSE_ERRORif the layer syntax is incorrect.

Definition at line 1982 of file pcb_io_kicad_sexpr_parser.cpp.

References m_undefinedLayers, and Rescue.

◆ Parse()

◆ parse3DModel()

◆ parseARC()

◆ parseBOARD()

BOARD * PCB_IO_KICAD_SEXPR_PARSER::parseBOARD ( )
private

Definition at line 871 of file pcb_io_kicad_sexpr_parser.cpp.

References GetRequiredVersion(), m_tooRecent, and parseBOARD_unchecked().

Referenced by Parse().

◆ parseBOARD_unchecked()

◆ parseBoardItemLayer()

PCB_LAYER_ID PCB_IO_KICAD_SEXPR_PARSER::parseBoardItemLayer ( )
private

Parse the layer definition of a BOARD_ITEM object.

Returns
The index the parsed BOARD_ITEM layer.
Exceptions
IO_ERRORif the layer is not valid.
PARSE_ERRORif the layer syntax is incorrect.

Definition at line 2001 of file pcb_io_kicad_sexpr_parser.cpp.

References m_layerIndices, and UNDEFINED_LAYER.

Referenced by parseARC(), parseDIMENSION(), parseFOOTPRINT_unchecked(), parseGENERATOR(), parsePCB_REFERENCE_IMAGE(), parsePCB_SHAPE(), parsePCB_TABLE(), parsePCB_TARGET(), parsePCB_TEXT_effects(), parsePCB_TRACK(), parseTextBoxContent(), and parseZONE().

◆ parseBoardItemLayersAsMask()

LSET PCB_IO_KICAD_SEXPR_PARSER::parseBoardItemLayersAsMask ( )
private

Parse the layers definition of a BOARD_ITEM object.

Returns
The mask of layers the parsed BOARD_ITEM is on.
Exceptions
IO_ERRORif any of the layers is not valid.
PARSE_ERRORif the layers syntax is incorrect.

Definition at line 2016 of file pcb_io_kicad_sexpr_parser.cpp.

References m_layerMasks.

Referenced by parsePAD(), and parseZONE().

◆ parseBoardProperty()

std::pair< wxString, wxString > PCB_IO_KICAD_SEXPR_PARSER::parseBoardProperty ( )
private

Definition at line 417 of file pcb_io_kicad_sexpr_parser.cpp.

Referenced by parseBOARD_unchecked().

◆ parseBoardStackup()

◆ parseBoardUnits() [1/3]

int PCB_IO_KICAD_SEXPR_PARSER::parseBoardUnits ( )
private

Parse the current token as an ASCII numeric string with possible leading whitespace into a double precision floating point number.

Returns
The result of the parsed token.
Exceptions
IO_ERRORif an error occurs attempting to convert the current token.

Definition at line 190 of file pcb_io_kicad_sexpr_parser.cpp.

References INT_LIMIT, EDA_IU_SCALE::IU_PER_MM, KiROUND(), parseDouble(), and pcbIUScale.

Referenced by parseARC(), parseBoardStackup(), parseBoardUnits(), parseDefaults(), parseDefaultTextDims(), parseDIMENSION(), parseEDA_TEXT(), parseFOOTPRINT_unchecked(), parseGeneralSection(), parseGENERATOR(), parseMargins(), parseNETCLASS(), parseOutlinePoints(), parsePAD(), parsePCB_REFERENCE_IMAGE(), parsePCB_SHAPE(), parsePCB_TABLE(), parsePCB_TARGET(), parsePCB_TEXT_effects(), parsePCB_TRACK(), parsePCB_VIA(), parseSetup(), parseTEARDROP_PARAMETERS(), parseTextBoxContent(), parseXY(), and parseZONE().

◆ parseBoardUnits() [2/3]

int PCB_IO_KICAD_SEXPR_PARSER::parseBoardUnits ( const char *  aExpected)
private

◆ parseBoardUnits() [3/3]

int PCB_IO_KICAD_SEXPR_PARSER::parseBoardUnits ( PCB_KEYS_T::T  aToken)
inlineprivate

Definition at line 329 of file pcb_io_kicad_sexpr_parser.h.

References parseBoardUnits().

◆ parseBool()

bool PCB_IO_KICAD_SEXPR_PARSER::parseBool ( )
private

◆ parseDefaults()

◆ parseDefaultTextDims()

void PCB_IO_KICAD_SEXPR_PARSER::parseDefaultTextDims ( BOARD_DESIGN_SETTINGS aSettings,
int  aLayer 
)
private

◆ parseDIMENSION()

◆ parseEDA_TEXT()

◆ parseFOOTPRINT()

FOOTPRINT * PCB_IO_KICAD_SEXPR_PARSER::parseFOOTPRINT ( wxArrayString *  aInitialComments = nullptr)
Parameters
aInitialCommentsmay be a pointer to a heap allocated initial comment block or NULL. If not NULL, then caller has given ownership of a wxArrayString to this function and care must be taken to delete it even on exception.

Definition at line 4145 of file pcb_io_kicad_sexpr_parser.cpp.

References GetRequiredVersion(), m_tooRecent, and parseFOOTPRINT_unchecked().

Referenced by Parse(), and parseBOARD_unchecked().

◆ parseFOOTPRINT_unchecked()

◆ parseGeneralSection()

void PCB_IO_KICAD_SEXPR_PARSER::parseGeneralSection ( )
private

◆ parseGENERATOR()

◆ parseGROUP()

◆ parseGROUP_members()

void PCB_IO_KICAD_SEXPR_PARSER::parseGROUP_members ( GROUP_INFO aGroupInfo)
private

◆ parseHeader()

void PCB_IO_KICAD_SEXPR_PARSER::parseHeader ( )
private

◆ parseHex()

long PCB_IO_KICAD_SEXPR_PARSER::parseHex ( )
inlineprivate

◆ parseInt() [1/2]

◆ parseInt() [2/2]

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

Definition at line 339 of file pcb_io_kicad_sexpr_parser.h.

References parseInt().

◆ parseLayer()

void PCB_IO_KICAD_SEXPR_PARSER::parseLayer ( LAYER aLayer)
private

◆ parseLayers()

◆ parseMargins()

void PCB_IO_KICAD_SEXPR_PARSER::parseMargins ( int &  aLeft,
int &  aTop,
int &  aRight,
int &  aBottom 
)
private

Definition at line 408 of file pcb_io_kicad_sexpr_parser.cpp.

References parseBoardUnits().

Referenced by parseTextBoxContent().

◆ parseMaybeAbsentBool()

bool PCB_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 236 of file pcb_io_kicad_sexpr_parser.cpp.

References DSN_RIGHT.

Referenced by parse3DModel(), parseARC(), parseDIMENSION(), parseEDA_TEXT(), parseFOOTPRINT_unchecked(), parseGeneralSection(), parsePAD(), parsePCB_SHAPE(), parsePCB_TEXT_effects(), parsePCB_TRACK(), parsePCB_VIA(), parseTEARDROP_PARAMETERS(), and parseTextBoxContent().

◆ parseNETCLASS()

◆ parseNETINFO_ITEM()

◆ parseOutlinePoints()

void PCB_IO_KICAD_SEXPR_PARSER::parseOutlinePoints ( SHAPE_LINE_CHAIN aPoly)
private

Parses possible outline points and stores them into aPoly.

This accepts points for DRAWSEGMENT polygons, EDGEMODULE polygons and ZONE_CONTAINER polygons. Points and arcs are added to the most recent outline

Parameters
aPolypolygon container to add points and arcs

Definition at line 311 of file pcb_io_kicad_sexpr_parser.cpp.

References SHAPE_LINE_CHAIN::Append(), parseBoardUnits(), VECTOR2< T >::x, and VECTOR2< T >::y.

Referenced by parseGENERATOR(), parsePCB_SHAPE(), parseRenderCache(), parseTextBoxContent(), and parseZONE().

◆ parsePAD()

◆ parsePAD_option()

bool PCB_IO_KICAD_SEXPR_PARSER::parsePAD_option ( PAD aPad)
private

◆ parsePAGE_INFO()

◆ parsePCB_REFERENCE_IMAGE()

PCB_REFERENCE_IMAGE * PCB_IO_KICAD_SEXPR_PARSER::parsePCB_REFERENCE_IMAGE ( BOARD_ITEM aParent)
private

◆ parsePCB_SHAPE()

◆ parsePCB_TABLE()

◆ parsePCB_TABLECELL()

PCB_TABLECELL * PCB_IO_KICAD_SEXPR_PARSER::parsePCB_TABLECELL ( BOARD_ITEM aParent)
private

Definition at line 3374 of file pcb_io_kicad_sexpr_parser.cpp.

References parseTextBoxContent().

Referenced by parsePCB_TABLE().

◆ parsePCB_TARGET()

PCB_TARGET * PCB_IO_KICAD_SEXPR_PARSER::parsePCB_TARGET ( )
private

◆ parsePCB_TEXT()

PCB_TEXT * PCB_IO_KICAD_SEXPR_PARSER::parsePCB_TEXT ( BOARD_ITEM aParent)
private

◆ parsePCB_TEXT_effects()

◆ parsePCB_TEXTBOX()

PCB_TEXTBOX * PCB_IO_KICAD_SEXPR_PARSER::parsePCB_TEXTBOX ( BOARD_ITEM aParent)
private

◆ parsePCB_TRACK()

PCB_TRACK * PCB_IO_KICAD_SEXPR_PARSER::parsePCB_TRACK ( )
private

◆ parsePCB_VIA()

◆ parseRenderCache()

void PCB_IO_KICAD_SEXPR_PARSER::parseRenderCache ( EDA_TEXT text)
private

Parse the render cache for any object derived from EDA_TEXT.

Parameters
aTextA pointer to the EDA_TEXT object to save the parsed settings into.
Exceptions
PARSE_ERRORif the text syntax is not valid.

Definition at line 642 of file pcb_io_kicad_sexpr_parser.cpp.

References SHAPE_POLY_SET::AddHole(), SHAPE_POLY_SET::AddOutline(), DEGREES_T, From_UTF8(), SHAPE_POLY_SET::OutlineCount(), parseDouble(), parseOutlinePoints(), SHAPE_LINE_CHAIN::SetClosed(), and text.

Referenced by parsePCB_TEXT_effects(), and parseTextBoxContent().

◆ parseSetup()

void PCB_IO_KICAD_SEXPR_PARSER::parseSetup ( )
private

Definition at line 2033 of file pcb_io_kicad_sexpr_parser.cpp.

References BOARD_STACKUP::BuildDefaultStackupList(), alg::contains(), GAL_SET::DefaultVisible(), BOARD::GetCopperLayerCount(), BOARD_DESIGN_SETTINGS::GetDefaultZoneSettings(), BOARD::GetDesignSettings(), BOARD_DESIGN_SETTINGS::GetStackupDescriptor(), LAYER_CLASS_COPPER, LAYER_CLASS_EDGES, LAYER_CLASS_SILK, BOARD_DESIGN_SETTINGS::m_AllowSoldermaskBridgesInFPs, m_appendToExisting, m_board, BOARD_DESIGN_SETTINGS::m_DiffPairDimensionsList, BOARD_DESIGN_SETTINGS::m_HasStackup, BOARD_DESIGN_SETTINGS::m_HoleToHoleMin, BOARD::m_LegacyDesignSettingsLoaded, BOARD::m_LegacyVisibleItems, BOARD_DESIGN_SETTINGS::m_LineThickness, BOARD_DESIGN_SETTINGS::m_MaxError, BOARD_DESIGN_SETTINGS::m_MicroViasMinDrill, BOARD_DESIGN_SETTINGS::m_MicroViasMinSize, BOARD_DESIGN_SETTINGS::m_MinClearance, BOARD_DESIGN_SETTINGS::m_MinThroughDrill, BOARD_DESIGN_SETTINGS::m_NetSettings, BOARD_DESIGN_SETTINGS::m_Pad_Master, BOARD_DESIGN_SETTINGS::m_SolderMaskExpansion, BOARD_DESIGN_SETTINGS::m_SolderMaskMinWidth, BOARD_DESIGN_SETTINGS::m_SolderPasteMargin, BOARD_DESIGN_SETTINGS::m_SolderPasteMarginRatio, BOARD_DESIGN_SETTINGS::m_TextSize, BOARD_DESIGN_SETTINGS::m_TextThickness, BOARD_DESIGN_SETTINGS::m_TrackMinWidth, BOARD_DESIGN_SETTINGS::m_TrackWidthList, BOARD_DESIGN_SETTINGS::m_ViasDimensionsList, BOARD_DESIGN_SETTINGS::m_ViasMinAnnularWidth, BOARD_DESIGN_SETTINGS::m_ViasMinSize, ZONE_SETTINGS::m_ZoneClearance, MIN_VISIBILITY_MASK, PCB_PLOT_PARAMS::Parse(), parseBoardStackup(), parseBoardUnits(), parseBool(), parseDefaults(), parseDouble(), parseHex(), BOARD_STACKUP::RemoveAll(), GAL_SET::set(), BOARD_DESIGN_SETTINGS::SetAuxOrigin(), BOARD_DESIGN_SETTINGS::SetGridOrigin(), BOARD::SetPlotOptions(), via, VECTOR2< T >::x, and VECTOR2< T >::y.

Referenced by parseBOARD_unchecked().

◆ parseTEARDROP_PARAMETERS()

◆ parseTextBoxContent()

◆ parseTITLE_BLOCK()

◆ parseXY() [1/2]

VECTOR2I PCB_IO_KICAD_SEXPR_PARSER::parseXY ( )
private

Parse a coordinate pair (xy X Y) in board units (mm).

The parser checks if the previous token was T_LEFT and parses the remainder of the token syntax. This is used when parsing a list of coordinate points. This way the parser can be used in either case.

Returns
A wxPoint object containing the coordinate pair.
Exceptions
PARSE_ERRORif the coordinate pair syntax is incorrect.

Definition at line 291 of file pcb_io_kicad_sexpr_parser.cpp.

References parseBoardUnits(), VECTOR2< T >::x, and VECTOR2< T >::y.

Referenced by parseDIMENSION(), parsePCB_SHAPE(), parseXY(), and parseZONE().

◆ parseXY() [2/2]

void PCB_IO_KICAD_SEXPR_PARSER::parseXY ( int *  aX,
int *  aY 
)
private

Definition at line 396 of file pcb_io_kicad_sexpr_parser.cpp.

References parseXY(), VECTOR2< T >::x, and VECTOR2< T >::y.

◆ parseZONE()

◆ pushValueIntoMap()

void PCB_IO_KICAD_SEXPR_PARSER::pushValueIntoMap ( int  aIndex,
int  aValue 
)
private

Add aValue value in netcode mapping (m_netCodes) at aIndex.

Ensure there is room in m_netCodes for that, and add room if needed.

Parameters
aIndexis the index ( expected >=0 )of the location to use in m_netCodes.
aValueis the netcode value to map.

Definition at line 178 of file pcb_io_kicad_sexpr_parser.cpp.

References m_netCodes.

Referenced by parseNETINFO_ITEM(), and parseZONE().

◆ resolveGroups()

◆ skipCurrent()

void PCB_IO_KICAD_SEXPR_PARSER::skipCurrent ( )
private

Skip the current token level, i.e search for the RIGHT parenthesis which closes the current description.

Definition at line 157 of file pcb_io_kicad_sexpr_parser.cpp.

Referenced by parseBoardStackup().

Member Data Documentation

◆ m_appendToExisting

bool PCB_IO_KICAD_SEXPR_PARSER::m_appendToExisting
private

reading into an existing board; reset UUIDs

if resetting UUIDs, record new ones to update groups with.

Definition at line 397 of file pcb_io_kicad_sexpr_parser.h.

Referenced by CurStrToKIID(), parseSetup(), and resolveGroups().

◆ m_board

◆ m_generatorInfos

std::vector<GENERATOR_INFO> PCB_IO_KICAD_SEXPR_PARSER::m_generatorInfos
private

Definition at line 410 of file pcb_io_kicad_sexpr_parser.h.

Referenced by parseGENERATOR(), and resolveGroups().

◆ m_generatorVersion

wxString PCB_IO_KICAD_SEXPR_PARSER::m_generatorVersion
private

Set to the generator version this board requires.

Definition at line 396 of file pcb_io_kicad_sexpr_parser.h.

Referenced by parseBOARD_unchecked(), and parseFOOTPRINT_unchecked().

◆ m_groupInfos

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

Definition at line 409 of file pcb_io_kicad_sexpr_parser.h.

Referenced by IsValidBoardHeader(), Parse(), parseGROUP(), and resolveGroups().

◆ m_lastProgressTime

TIME_PT PCB_IO_KICAD_SEXPR_PARSER::m_lastProgressTime
private

for progress reporting

Definition at line 406 of file pcb_io_kicad_sexpr_parser.h.

Referenced by checkpoint().

◆ m_layerIndices

LAYER_ID_MAP PCB_IO_KICAD_SEXPR_PARSER::m_layerIndices
private

map layer name to it's index

Definition at line 390 of file pcb_io_kicad_sexpr_parser.h.

Referenced by init(), parseBoardItemLayer(), parseFOOTPRINT_unchecked(), parseLayers(), parsePAD(), and parsePCB_VIA().

◆ m_layerMasks

LSET_MAP PCB_IO_KICAD_SEXPR_PARSER::m_layerMasks
private

map layer names to their masks

Definition at line 391 of file pcb_io_kicad_sexpr_parser.h.

Referenced by init(), parseBoardItemLayersAsMask(), and parseLayers().

◆ m_lineCount

unsigned PCB_IO_KICAD_SEXPR_PARSER::m_lineCount
private

for progress reporting

Definition at line 407 of file pcb_io_kicad_sexpr_parser.h.

Referenced by checkpoint().

◆ m_netCodes

std::vector<int> PCB_IO_KICAD_SEXPR_PARSER::m_netCodes
private

net codes mapping for boards being loaded

Definition at line 393 of file pcb_io_kicad_sexpr_parser.h.

Referenced by getNetCode(), and pushValueIntoMap().

◆ m_progressReporter

PROGRESS_REPORTER* PCB_IO_KICAD_SEXPR_PARSER::m_progressReporter
private

optional; may be nullptr

Definition at line 405 of file pcb_io_kicad_sexpr_parser.h.

Referenced by checkpoint().

◆ m_queryUserCallback

std::function<bool( wxString aTitle, int aIcon, wxString aMsg, wxString aAction )> PCB_IO_KICAD_SEXPR_PARSER::m_queryUserCallback
private

Definition at line 412 of file pcb_io_kicad_sexpr_parser.h.

Referenced by parseBOARD_unchecked().

◆ m_requiredVersion

int PCB_IO_KICAD_SEXPR_PARSER::m_requiredVersion
private

◆ m_resetKIIDMap

KIID_MAP PCB_IO_KICAD_SEXPR_PARSER::m_resetKIIDMap
private

Definition at line 400 of file pcb_io_kicad_sexpr_parser.h.

Referenced by CurStrToKIID(), init(), and resolveGroups().

◆ m_showLegacy5ZoneWarning

bool PCB_IO_KICAD_SEXPR_PARSER::m_showLegacy5ZoneWarning
private

Definition at line 403 of file pcb_io_kicad_sexpr_parser.h.

Referenced by init(), and parseZONE().

◆ m_showLegacySegmentZoneWarning

bool PCB_IO_KICAD_SEXPR_PARSER::m_showLegacySegmentZoneWarning
private

Definition at line 402 of file pcb_io_kicad_sexpr_parser.h.

Referenced by init(), and parseZONE().

◆ m_tooRecent

bool PCB_IO_KICAD_SEXPR_PARSER::m_tooRecent
private

true if version parses as later than supported

Definition at line 394 of file pcb_io_kicad_sexpr_parser.h.

Referenced by init(), IsTooRecent(), parseBOARD(), parseFOOTPRINT(), parseFOOTPRINT_unchecked(), and parseHeader().

◆ m_undefinedLayers

std::set<wxString> PCB_IO_KICAD_SEXPR_PARSER::m_undefinedLayers
private

set of layers not defined in layers section

Definition at line 392 of file pcb_io_kicad_sexpr_parser.h.

Referenced by lookUpLayer(), and parseBOARD_unchecked().


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