87 std::vector<std::string>
nets;
154 void Parse(
const wxString& aFileName );
190 std::set<std::string> shapes;
192 for(
const std::vector<PAD_STACK_LAYER>& layers :
m_padStackPool )
195 shapes.insert( psl.shape );
242 const std::string& aRefDes )
const;
254 const char* aWhat )
const;
285 const std::map<uint32_t, size_t>& aOwnerOrdinal );
299 std::map<std::string, ROUTE>
seedRoutesFromVias(
const std::vector<VIA_LOCATION>& aVias )
const;
320 const std::vector<int>& aSerializedLayerOrder );
331 size_t aPoolBase,
size_t aPoolHi );
380 uint8_t
ringU8(
const SDB_SECTION& aSection,
size_t aRotation,
size_t aStride, uint32_t aIndex,
381 size_t aField )
const;
382 uint32_t
ringU32(
const SDB_SECTION& aSection,
size_t aRotation,
size_t aStride, uint32_t aIndex,
383 size_t aField )
const;
384 int32_t
ringI32(
const SDB_SECTION& aSection,
size_t aRotation,
size_t aStride, uint32_t aIndex,
385 size_t aField )
const;
386 std::string
ringStr(
const SDB_SECTION& aSection,
size_t aRotation,
size_t aStride, uint32_t aIndex,
size_t aField,
387 size_t aLength )
const;
389 bool sec12Vertex( int32_t aRow, int32_t& aX, int32_t& aY, int32_t& aAttr )
const;
394 bool fetchOwnerLoop(
const std::string& aName,
size_t aMaxVerts, std::vector<VECTOR2I>& aOut )
const;
Bounds-checked little-endian read cursor over a PADS binary buffer.
void decodeRoutedCopper(std::map< std::string, ROUTE > &aRoutes)
std::map< uint32_t, std::string > m_netSelfPtrToName
BINARY_PARSER(const BINARY_PARSER &)=delete
uint8_t ringU8(const SDB_SECTION &aSection, size_t aRotation, size_t aStride, uint32_t aIndex, size_t aField) const
double toBasicCoordY(int32_t aRawValue) const
ROUTE_OBJECT_NODES resolveRouteObjectNodes(const SDB_SECTION &aRouteLayers, size_t aObjectCount, const std::vector< int > &aSerializedLayerOrder)
const std::map< std::string, PART_DECAL > & GetPartDecals() const
std::vector< NET > m_nets
const std::vector< POLYLINE > & GetBoardOutlines() const
std::string ringStr(const SDB_SECTION &aSection, size_t aRotation, size_t aStride, uint32_t aIndex, size_t aField, size_t aLength) const
bool isValidNetName(const std::string &aName) const
std::map< std::string, uint32_t > m_decalTerminalCount
std::map< size_t, int > m_partClusterId
std::map< size_t, uint32_t > m_partDecalIndex
const std::vector< PART_CLUSTER > & GetClusters() const
std::vector< NET_CLASS_RULE_EDGE > collectNetClassRuleEdges(const std::set< uint32_t > &aOwnerSet)
std::map< std::string, ROUTE > seedRoutesFromVias(const std::vector< VIA_LOCATION > &aVias) const
size_t layerStackupBase() const
Base of section 69's layer records after its fixed controller lead-in.
void parsePlacementFields(const SDB_SECTION &aText, size_t aRecordBase, size_t aRecordSize, size_t aRingRotation)
void parseDecalNameTableOld()
void parseNetConnectionsNew()
std::vector< VIA_LOCATION > decodeViaLocations()
std::map< uint32_t, size_t > parseRouteJunctionNets() const
std::vector< PART > m_parts
std::map< uint32_t, size_t > m_sec23RecordToNet
std::vector< NET_ANCHOR > m_netAnchors
bool usesDirectDecalChain() const
uint16_t GetVersion() const
std::map< size_t, uint8_t > m_partDecalAlternate
std::map< std::string, uint32_t > m_netClassOwner
void parseDecalNameTable()
std::vector< COPPER_SHAPE > m_copper_shapes
const std::vector< POUR > & GetPours() const
void applyPadstackPairs(PART_DECAL &aDecal, const std::vector< std::pair< int32_t, int32_t > > &aPairs, int32_t aStart, int32_t aCount)
static constexpr int32_t ANGLE_SCALE
std::vector< POUR > m_pours
static bool IsBinaryPadsFile(const wxString &aFileName)
Check if a file appears to be a PADS binary PCB file.
std::map< std::string, PART_DECAL > m_decals
std::vector< DIFF_PAIR_DEF > m_diffPairs
std::set< std::string > GetPadStackShapesForTest() const
std::map< std::string, int32_t > m_decalTerminalStart
std::vector< POLYLINE > m_boardOutlines
void parseFreeText(const SDB_SECTION &aText, size_t aRecordBase, size_t aRecordSize, size_t aRingRotation, size_t aPoolBase, size_t aPoolHi)
bool GetOwnerLoopForTest(const std::string &aName, std::vector< VECTOR2I > &aOut) const
bool fetchOwnerCirclePoints(const std::string &aName, VECTOR2I &aP0, VECTOR2I &aP1) const
std::vector< size_t > oldNetRecordOffsets() const
std::map< std::string, int32_t > m_decalStackStart
std::vector< KEEPOUT > m_keepouts
void parsePartTypeTable()
std::map< std::string, int32_t > m_decalStackCount
uint32_t ringU32(const SDB_SECTION &aSection, size_t aRotation, size_t aStride, uint32_t aIndex, size_t aField) const
void parseRouteVertices()
std::map< size_t, uint32_t > m_partTypeIndex
std::map< uint32_t, size_t > m_placementObjectToPart
std::vector< std::pair< int, int > > m_padStackDrillSpans
const SDB_SECTION * getSection(int aIndex) const
const std::vector< TEXT > & GetTexts() const
const PARAMETERS & GetParameters() const
std::vector< DIMENSION > m_dimensions
std::vector< LAYER_INFO > m_layerInfos
void Parse(const wxString &aFileName)
int32_t ringI32(const SDB_SECTION &aSection, size_t aRotation, size_t aStride, uint32_t aIndex, size_t aField) const
const std::vector< PART > & GetParts() const
double toBasicCoordX(int32_t aRawValue) const
std::vector< std::vector< int32_t > > m_partTypeDecalIndices
void applyNetClassClearances(const std::vector< NET_CLASS_RULE_EDGE > &aEdges, const std::map< uint32_t, size_t > &aOwnerOrdinal)
bool fetchOwnerLoop(const std::string &aName, size_t aMaxVerts, std::vector< VECTOR2I > &aOut) const
const std::vector< BIN_NET_CLASS_DEF > & GetNetClasses() const
PART makePlacementPart(const SDB_RECORD &aRec, int aXOff, std::optional< int > aYOff, int aAngleOff, int aNameOff, const std::string &aRefDes) const
void parseNetConnectionsOld()
int GetLayerCount() const
bool sec12Vertex(int32_t aRow, int32_t &aX, int32_t &aY, int32_t &aAttr) const
const std::vector< uint8_t > & m_data
std::vector< std::string > m_partTypeNames
std::map< uint32_t, std::string > m_sec23IndexToNet
std::vector< NET_ANCHOR > m_netConnectionEndpoints
void assignDefaultPadStacks()
const std::vector< GRAPHIC_LINE > & GetGraphicLines() const
const std::vector< NET > & GetNets() const
std::vector< std::vector< PAD_STACK_LAYER > > m_padStackPool
std::map< uint32_t, std::set< size_t > > m_junctionHandleNets
void parsePartPlacements()
const std::map< size_t, int > & GetPartClusterIds() const
const std::vector< ROUTE > & GetRoutes() const
std::map< size_t, int32_t > m_partFieldStart
void computeSec12CleanRows()
std::vector< ROUTE > m_routes
void parseBoardOutlineDirect()
std::vector< TEXT > m_texts
const SDB_SECTION * getSection(SECTION aSection) const
std::vector< GRAPHIC_LINE > m_graphicLines
const std::vector< DIMENSION > & GetDimensions() const
std::vector< PART_CLUSTER > m_clusters
std::vector< BIN_NET_CLASS_DEF > m_netClasses
std::vector< std::string > m_decalNameTable
const std::vector< DIFF_PAIR_DEF > & GetDiffPairs() const
const std::vector< COPPER_SHAPE > & GetCopperShapes() const
double toBasicAngle(int32_t aRawAngle) const
std::vector< LAYER_INFO > GetLayerInfos() const
BINARY_PARSER & operator=(const BINARY_PARSER &)=delete
const std::vector< KEEPOUT > & GetKeepouts() const
std::map< std::string, OWNER_RUN > m_ownerRuns
SDB_RECORD arcRecordFor(const SDB_SECTION &aArcParameters, int32_t aArcStart, int32_t aAttr, const char *aWhat) const
The parsed container of a PADS .pcb file: header, the section directory, and the coordinate system.
A bounds-checked reader positioned at one record inside a buffer.
SECTION
Named section indices into the PADS binary section directory.
One board-outline vertex triplet: [i32 X, i32 Y, i32 attr] where attr -1 is a plain corner and attr >...
Every routed-copper object's PADS layer and route-node handle, indexed by object ordinal,...
std::vector< int > layers
std::vector< uint32_t > handles
std::map< uint32_t, std::set< size_t > > handleNets
One placed via recovered from the section-60 junction ring.
A PADS net class recovered from the binary design-rule graph.
std::vector< int > ruleLayers
std::vector< std::string > nets
One type-66 net-class rule edge: its owner pointer, rule-detail page, full rule pointer (declaration ...
A PADS part cluster (named group of parts).
The PADS PowerPCB .pcb file is a serialized snapshot of PADS' in-memory SDB (System DataBase) object ...
VECTOR2< int32_t > VECTOR2I