30#ifndef _PCBNEW_PARSER_H_ 
   31#define _PCBNEW_PARSER_H_ 
   45#include <unordered_map> 
   85    typedef std::unordered_map< std::string, PCB_LAYER_ID > 
LAYER_ID_MAP;
 
   86    typedef std::unordered_map< std::string, LSET >         
LSET_MAP;
 
   87    typedef std::unordered_map< wxString, KIID >            
KIID_MAP;
 
   90                std::function<
bool( wxString, 
int, wxString, wxString )> aQueryUserCallback,
 
 
  164        if( ( aNetCode >= 0 ) && ( aNetCode < (
int) 
m_netCodes.size() ) )
 
 
  311    void parseXY( 
int* aX, 
int* aY );
 
  313    void parseMargins( 
int& aLeft, 
int& aTop, 
int& aRight, 
int& aBottom );
 
  367        return (
int)strtol( CurText(), 
nullptr, 10 );
 
 
  372        NeedNUMBER( aExpected );
 
 
  379        return strtol( CurText(), 
nullptr, 16 );
 
 
  398    std::pair<std::optional<bool>, std::optional<bool>>
 
  418    using CLOCK = std::chrono::steady_clock;
 
  421    using TIME_PT = std::chrono::time_point<CLOCK>;
 
 
A base class derived from BOARD_ITEM for items that can be connected and have a net,...
 
Container for design settings for a BOARD object.
 
Abstract interface for BOARD_ITEMs capable of storing other items inside.
 
A base class for any item which can be embedded within the BOARD container class, and therefore insta...
 
Information pertinent to a Pcbnew printed circuit board.
 
A mix-in class (via multiple inheritance) that handles texts such as labels, parts,...
 
A logical library item identifier and consists of various portions much like a URI.
 
An abstract class from which implementation specific LINE_READERs may be derived to read single lines...
 
LSET is a set of PCB_LAYER_IDs.
 
A set of BOARD_ITEMs (i.e., without duplicates).
 
wxString m_generatorVersion
Set to the generator version this board requires.
 
PCB_TABLECELL * parsePCB_TABLECELL(BOARD_ITEM *aParent)
 
std::unordered_map< std::string, PCB_LAYER_ID > LAYER_ID_MAP
 
std::vector< int > m_netCodes
net codes mapping for boards being loaded
 
void parseOutlinePoints(SHAPE_LINE_CHAIN &aPoly)
Parses possible outline points and stores them into aPoly.
 
BOARD * parseBOARD_unchecked()
 
std::set< wxString > m_undefinedLayers
set of layers not defined in layers section
 
void parseZoneLayerProperty(std::map< PCB_LAYER_ID, ZONE_LAYER_PROPERTIES > &aProperties)
 
PROGRESS_REPORTER * m_progressReporter
optional; may be nullptr
 
int getNetCode(int aNetCode)
 
void parseFootprintStackup(FOOTPRINT &aFootprint)
 
void createOldLayerMapping(std::unordered_map< std::string, std::string > &aMap)
Create a mapping from the (short-lived) bug where layer names were translated.
 
void parseZoneDefaults(ZONE_SETTINGS &aZoneSettings)
 
std::unordered_map< std::string, LSET > LSET_MAP
 
void parsePadstack(PAD *aPad)
 
void parseEDA_TEXT(EDA_TEXT *aText)
Parse the common settings for any object derived from EDA_TEXT.
 
int parseInt(const char *aExpected)
 
bool m_tooRecent
true if version parses as later than supported
 
PCB_LAYER_ID lookUpLayer(const LAYER_ID_MAP &aMap)
Parse the current token for the layer definition of a BOARD_ITEM object.
 
PCB_REFERENCE_IMAGE * parsePCB_REFERENCE_IMAGE(BOARD_ITEM *aParent)
 
LAYER_ID_MAP m_layerIndices
map layer name to it's index
 
void parseTextBoxContent(PCB_TEXTBOX *aTextBox)
 
FOOTPRINT * parseFOOTPRINT(wxArrayString *aInitialComments=nullptr)
 
PCB_POINT * parsePCB_POINT()
 
void pushValueIntoMap(int aIndex, int aValue)
Add aValue value in netcode mapping (m_netCodes) at aIndex.
 
bool parsePAD_option(PAD *aPad)
 
void parseGeneralSection()
 
std::chrono::steady_clock CLOCK
The type of the time stamps.
 
void init()
Clear and re-establish m_layerMap with the default layer names.
 
void parseGROUP(BOARD_ITEM *aParent)
 
void parseLayer(LAYER *aLayer)
 
void skipCurrent()
Skip the current token level, i.e search for the RIGHT parenthesis which closes the current descripti...
 
void parseMargins(int &aLeft, int &aTop, int &aRight, int &aBottom)
 
PCB_LAYER_ID parseBoardItemLayer()
Parse the layer definition of a BOARD_ITEM object.
 
LSET parseLayersForCuItemWithSoldermask()
Parse the layers definition of a BOARD_ITEM object that has a single copper layer and optional solder...
 
void parseGENERATOR(BOARD_ITEM *aParent)
 
FP_3DMODEL * parse3DModel()
 
std::chrono::milliseconds TIMEOUT
The clock used for the timestamp (guaranteed to be monotonic).
 
LSET parseBoardItemLayersAsMask()
Parse the layers definition of a BOARD_ITEM object.
 
std::pair< std::optional< bool >, std::optional< bool > > parseFrontBackOptBool(bool aLegacy=false)
 
void resolveGroups(BOARD_ITEM *aParent)
Called after parsing a footprint definition or board to build the group membership lists.
 
void parseDefaultTextDims(BOARD_DESIGN_SETTINGS &aSettings, int aLayer)
 
std::vector< GROUP_INFO > m_groupInfos
 
std::optional< bool > parseOptBool()
 
ZONE * parseZONE(BOARD_ITEM_CONTAINER *aParent)
 
PCB_TABLE * parsePCB_TABLE(BOARD_ITEM *aParent)
 
std::vector< GENERATOR_INFO > m_generatorInfos
 
PCB_TEXTBOX * parsePCB_TEXTBOX(BOARD_ITEM *aParent)
 
std::chrono::time_point< CLOCK > TIME_PT
 
PCB_TEXT * parsePCB_TEXT(BOARD_ITEM *aParent, PCB_TEXT *aBaseText=nullptr)
 
unsigned m_lineCount
for progress reporting
 
VECTOR2I parseXY()
Parse a coordinate pair (xy X Y) in board units (mm).
 
void parseTEARDROP_PARAMETERS(TEARDROP_PARAMETERS *tdParams)
 
PCB_TRACK * parsePCB_TRACK()
 
int m_requiredVersion
set to the KiCad format version this board requires
 
PAD * parsePAD(FOOTPRINT *aParent=nullptr)
 
std::function< bool(wxString aTitle, int aIcon, wxString aMsg, wxString aAction)> m_queryUserCallback
 
bool m_showLegacySegmentZoneWarning
 
void parseNet(BOARD_CONNECTED_ITEM *aItem)
 
FOOTPRINT * parseFOOTPRINT_unchecked(wxArrayString *aInitialComments=nullptr)
 
void parseRenderCache(EDA_TEXT *text)
Parse the render cache for any object derived from EDA_TEXT.
 
int parseBoardUnits(const PCB_KEYS_T::T aToken, const EDA_DATA_TYPE aDataType=EDA_DATA_TYPE::DISTANCE)
 
TIME_PT m_lastProgressTime
for progress reporting
 
void parseGROUP_members(GROUP_INFO &aGroupInfo)
 
bool IsTooRecent()
Return whether a version number, if any was parsed, was too recent.
 
bool IsValidBoardHeader()
Partially parse the input and check if it matches expected header.
 
std::pair< wxString, wxString > parseBoardProperty()
 
LSET_MAP m_layerMasks
map layer names to their masks
 
bool parseMaybeAbsentBool(bool aDefaultValue)
Parses a boolean flag inside a list that existed before boolean normalization.
 
int parseBoardUnits()
Parse the current token as an ASCII numeric string with possible leading whitespace into a double pre...
 
void parseViastack(PCB_VIA *aVia)
 
std::unordered_map< wxString, KIID > KIID_MAP
 
bool m_showLegacy5ZoneWarning
 
PCB_DIMENSION_BASE * parseDIMENSION(BOARD_ITEM *aParent)
 
LSET lookUpLayerSet(const LSET_MAP &aMap)
 
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)
 
bool m_appendToExisting
reading into an existing board; reset UUIDs
 
void parsePCB_TEXT_effects(PCB_TEXT *aText, PCB_TEXT *aBaseText=nullptr)
 
PCB_SHAPE * parsePCB_SHAPE(BOARD_ITEM *aParent)
 
void parseDefaults(BOARD_DESIGN_SETTINGS &aSettings)
 
wxString GetRequiredVersion()
Return a string representing the version of KiCad required to open this file.
 
PCB_TARGET * parsePCB_TARGET()
 
PCB_BARCODE * parsePCB_BARCODE(BOARD_ITEM *aParent)
 
A PCB_POINT is a 0-dimensional point that is used to mark a position on a PCB, or more usually a foot...
 
Object to handle a bitmap image that can be inserted in a PCB.
 
A progress reporter interface for use in multi-threaded environments.
 
Represent a polyline containing arcs as well as line segments: A chain of connected line and/or arc s...
 
A name/value tuple with unique names and wxAny values.
 
TEARDROP_PARAMETARS is a helper class to handle parameters needed to build teardrops for a board thes...
 
ZONE_SETTINGS handles zones parameters.
 
Handle a list of polygons defining a copper zone.
 
EDA_DATA_TYPE
The type of unit.
 
PCB_LAYER_ID
A quick note on layer IDs:
 
Convert net code using the mapping table if available, otherwise returns unchanged net code if < 0 or...
 
STRING_ANY_MAP properties
 
virtual ~GROUP_INFO()=default
 
std::vector< KIID > memberUuids
 
VECTOR2< int32_t > VECTOR2I