KiCad PCB EDA Suite
Loading...
Searching...
No Matches
allegro_parser.cpp File Reference
#include "convert/allegro_parser.h"
#include <array>
#include <chrono>
#include <cstring>
#include <wx/sstream.h>
#include <wx/log.h>
#include <wx/translation.h>
#include <core/profile.h>
#include <core/type_helpers.h>
#include <ki_exception.h>

Go to the source code of this file.

Functions

static FILE_HEADER::LINKED_LIST ReadLL (FILE_STREAM &aStream, FMT_VER aVer)
 
static double ReadAllegroFloat (FILE_STREAM &aStream)
 
template<typename ARRAY>
static void ReadArrayU32 (FILE_STREAM &aStream, ARRAY &aArray)
 
template<typename T>
static T ReadField (FILE_STREAM &aStream, FMT_VER aFmtVer)
 
template<typename COND_T>
static void ReadCond (FILE_STREAM &aStream, FMT_VER aFmtVer, COND_T &aField)
 Read a single conditional field from the stream, if it exists at the current version.
 
static void ReadStringMap (FILE_STREAM &stream, DB &aDb, uint32_t count)
 
static LAYER_INFO ParseLayerInfo (FILE_STREAM &aStream)
 
static std::unique_ptr< BLOCK_BASEParseBlock_0x01_ARC (FILE_STREAM &aStream, FMT_VER aVer)
 
static std::unique_ptr< BLOCK_BASEParseBlock_0x03 (FILE_STREAM &aStream, FMT_VER aVer)
 
static std::unique_ptr< BLOCK_BASEParseBlock_0x04_NET_ASSIGNMENT (FILE_STREAM &aStream, FMT_VER aVer)
 
static std::unique_ptr< BLOCK_BASEParseBlock_0x05_TRACK (FILE_STREAM &aStream, FMT_VER aVer)
 
static std::unique_ptr< BLOCK_BASEParseBlock_0x06 (FILE_STREAM &stream, FMT_VER aVer)
 
static std::unique_ptr< BLOCK_BASEParseBlock_0x07 (FILE_STREAM &stream, FMT_VER aVer)
 
static std::unique_ptr< BLOCK_BASEParseBlock_0x08 (FILE_STREAM &aStream, FMT_VER aVer)
 
static std::unique_ptr< BLOCK_BASEParseBlock_0x09 (FILE_STREAM &aStream, FMT_VER aVer)
 
static std::unique_ptr< BLOCK_BASEParseBlock_0x0A_DRC (FILE_STREAM &aStream, FMT_VER aVer)
 
static std::unique_ptr< BLOCK_BASEParseBlock_0x0C (FILE_STREAM &aStream, FMT_VER aVer)
 
static std::unique_ptr< BLOCK_BASEParseBlock_0x0D_PAD (FILE_STREAM &aStream, FMT_VER aVer)
 
static std::unique_ptr< BLOCK_BASEParseBlock_0x0E (FILE_STREAM &aStream, FMT_VER aVer)
 
static std::unique_ptr< BLOCK_BASEParseBlock_0x0F (FILE_STREAM &stream, FMT_VER aVer)
 
static std::unique_ptr< BLOCK_BASEParseBlock_0x10 (FILE_STREAM &stream, FMT_VER aVer)
 
static std::unique_ptr< BLOCK_BASEParseBlock_0x11 (FILE_STREAM &aStream, FMT_VER aVer)
 
static std::unique_ptr< BLOCK_BASEParseBlock_0x12 (FILE_STREAM &aStream, FMT_VER aVer)
 
static std::unique_ptr< BLOCK_BASEParseBlock_0x14 (FILE_STREAM &aStream, FMT_VER aVer)
 
static std::unique_ptr< BLOCK_BASEParseBlock_0x15_16_17_SEGMENT (FILE_STREAM &aStream, FMT_VER aVer, uint8_t aType)
 
static std::unique_ptr< BLOCK_BASEParseBlock_0x1B_NET (FILE_STREAM &stream, FMT_VER aVer)
 
static std::unique_ptr< BLOCK_BASEParseBlock_0x1C_PADSTACK (FILE_STREAM &aStream, FMT_VER aVer)
 
static std::unique_ptr< BLOCK_BASEParseBlock_0x1D (FILE_STREAM &aStream, FMT_VER aVer)
 
static std::unique_ptr< BLOCK_BASEParseBlock_0x1E (FILE_STREAM &aStream, FMT_VER aVer)
 
static std::unique_ptr< BLOCK_BASEParseBlock_0x1F (FILE_STREAM &aStream, FMT_VER aVer)
 
static std::unique_ptr< BLOCK_BASEParseBlock_0x20 (FILE_STREAM &aStream, FMT_VER aVer)
 
static std::unique_ptr< BLOCK_BASEParseBlock_0x21 (FILE_STREAM &aStream, FMT_VER aVer)
 
static std::unique_ptr< BLOCK_BASEParseBlock_0x22 (FILE_STREAM &aStream, FMT_VER aVer)
 
static std::unique_ptr< BLOCK_BASEParseBlock_0x23_RATLINE (FILE_STREAM &aStream, FMT_VER aVer)
 
static std::unique_ptr< BLOCK_BASEParseBlock_0x24_RECT (FILE_STREAM &aStream, FMT_VER aVer)
 
static std::unique_ptr< BLOCK_BASEParseBlock_0x26 (FILE_STREAM &aStream, FMT_VER aVer)
 
static std::unique_ptr< BLOCK_BASEParseBlock_0x27 (FILE_STREAM &aStream, FMT_VER aVer, size_t aEndOff)
 
static std::unique_ptr< BLOCK_BASEParseBlock_0x28_SHAPE (FILE_STREAM &aStream, FMT_VER aVer)
 
static std::unique_ptr< BLOCK_BASEParseBlock_0x29_PIN (FILE_STREAM &aStream, FMT_VER aVer)
 
static std::unique_ptr< BLOCK_BASEParseBlock_0x2A (FILE_STREAM &aStream, FMT_VER aVer)
 
static std::unique_ptr< BLOCK_BASEParseBlock_0x2B (FILE_STREAM &stream, FMT_VER aVer)
 
static std::unique_ptr< BLOCK_BASEParseBlock_0x2C_TABLE (FILE_STREAM &aStream, FMT_VER aVer)
 
static std::unique_ptr< BLOCK_BASEParseBlock_0x2D (FILE_STREAM &stream, FMT_VER aVer)
 
static std::unique_ptr< BLOCK_BASEParseBlock_0x2E (FILE_STREAM &aStream, FMT_VER aVer)
 
static std::unique_ptr< BLOCK_BASEParseBlock_0x2F (FILE_STREAM &aStream, FMT_VER aVer)
 
static BLK_0x30_STR_WRAPPER::TEXT_PROPERTIES ParseTextProps (FILE_STREAM &aStream)
 
static std::unique_ptr< BLOCK_BASEParseBlock_0x30_STR_WRAPPER (FILE_STREAM &aStream, FMT_VER aVer)
 
static std::unique_ptr< BLOCK_BASEParseBlock_0x31_SGRAPHIC (FILE_STREAM &aStream, FMT_VER aVer)
 
static std::unique_ptr< BLOCK_BASEParseBlock_0x32_PLACED_PAD (FILE_STREAM &aStream, FMT_VER aVer)
 
static std::unique_ptr< BLOCK_BASEParseBlock_0x33_VIA (FILE_STREAM &aStream, FMT_VER aVer)
 
static std::unique_ptr< BLOCK_BASEParseBlock_0x34_KEEPOUT (FILE_STREAM &aStream, FMT_VER aVer)
 
static std::unique_ptr< BLOCK_BASEParseBlock_0x35 (FILE_STREAM &aStream, FMT_VER aVer)
 
static std::unique_ptr< BLOCK_BASEParseBlock_0x36 (FILE_STREAM &aStream, FMT_VER aVer)
 
static std::unique_ptr< BLOCK_BASEParseBlock_0x37 (FILE_STREAM &aStream, FMT_VER aVer)
 
static std::unique_ptr< BLOCK_BASEParseBlock_0x38_FILM (FILE_STREAM &aStream, FMT_VER aVer)
 
static std::unique_ptr< BLOCK_BASEParseBlock_0x39_FILM_LAYER_LIST (FILE_STREAM &aStream, FMT_VER aVer)
 
static std::unique_ptr< BLOCK_BASEParseBlock_0x3A_FILM_LIST_NODE (FILE_STREAM &aStream, FMT_VER aVer)
 
static std::unique_ptr< BLOCK_BASEParseBlock_0x3B (FILE_STREAM &aStream, FMT_VER aVer)
 
static std::unique_ptr< BLOCK_BASEParseBlock_0x3C (FILE_STREAM &aStream, FMT_VER aVer)
 
template<typename T>
void dumpLL (const char *name, const T &ll)
 

Variables

static const wxChar *const traceAllegroParser = wxT( "KICAD_ALLEGRO_PARSER" )
 Flag to enable debug output of Allegro parsing.
 
static const wxChar *const traceAllegroParserBlocks = wxT( "KICAD_ALLEGRO_PARSER_BLOCKS" )
 
static const wxChar *const traceAllegroPerf = wxT( "KICAD_ALLEGRO_PERF" )
 

Function Documentation

◆ dumpLL()

template<typename T>
void dumpLL ( const char * name,
const T & ll )

Definition at line 2591 of file allegro_parser.cpp.

References dump(), name, T, and traceAllegroParser.

Referenced by ALLEGRO::PARSER::Parse().

◆ ParseBlock_0x01_ARC()

◆ ParseBlock_0x03()

◆ ParseBlock_0x04_NET_ASSIGNMENT()

static std::unique_ptr< BLOCK_BASE > ParseBlock_0x04_NET_ASSIGNMENT ( FILE_STREAM & aStream,
FMT_VER aVer )
static

◆ ParseBlock_0x05_TRACK()

static std::unique_ptr< BLOCK_BASE > ParseBlock_0x05_TRACK ( FILE_STREAM & aStream,
FMT_VER aVer )
static

◆ ParseBlock_0x06()

static std::unique_ptr< BLOCK_BASE > ParseBlock_0x06 ( FILE_STREAM & stream,
FMT_VER aVer )
static

◆ ParseBlock_0x07()

static std::unique_ptr< BLOCK_BASE > ParseBlock_0x07 ( FILE_STREAM & stream,
FMT_VER aVer )
static

◆ ParseBlock_0x08()

◆ ParseBlock_0x09()

static std::unique_ptr< BLOCK_BASE > ParseBlock_0x09 ( FILE_STREAM & aStream,
FMT_VER aVer )
static

◆ ParseBlock_0x0A_DRC()

◆ ParseBlock_0x0C()

◆ ParseBlock_0x0D_PAD()

static std::unique_ptr< BLOCK_BASE > ParseBlock_0x0D_PAD ( FILE_STREAM & aStream,
FMT_VER aVer )
static

◆ ParseBlock_0x0E()

◆ ParseBlock_0x0F()

◆ ParseBlock_0x10()

static std::unique_ptr< BLOCK_BASE > ParseBlock_0x10 ( FILE_STREAM & stream,
FMT_VER aVer )
static

◆ ParseBlock_0x11()

◆ ParseBlock_0x12()

◆ ParseBlock_0x14()

static std::unique_ptr< BLOCK_BASE > ParseBlock_0x14 ( FILE_STREAM & aStream,
FMT_VER aVer )
static

◆ ParseBlock_0x15_16_17_SEGMENT()

static std::unique_ptr< BLOCK_BASE > ParseBlock_0x15_16_17_SEGMENT ( FILE_STREAM & aStream,
FMT_VER aVer,
uint8_t aType )
static

◆ ParseBlock_0x1B_NET()

static std::unique_ptr< BLOCK_BASE > ParseBlock_0x1B_NET ( FILE_STREAM & stream,
FMT_VER aVer )
static

◆ ParseBlock_0x1C_PADSTACK()

◆ ParseBlock_0x1D()

◆ ParseBlock_0x1E()

◆ ParseBlock_0x1F()

◆ ParseBlock_0x20()

◆ ParseBlock_0x21()

◆ ParseBlock_0x22()

◆ ParseBlock_0x23_RATLINE()

◆ ParseBlock_0x24_RECT()

◆ ParseBlock_0x26()

◆ ParseBlock_0x27()

static std::unique_ptr< BLOCK_BASE > ParseBlock_0x27 ( FILE_STREAM & aStream,
FMT_VER aVer,
size_t aEndOff )
static

◆ ParseBlock_0x28_SHAPE()

◆ ParseBlock_0x29_PIN()

◆ ParseBlock_0x2A()

◆ ParseBlock_0x2B()

static std::unique_ptr< BLOCK_BASE > ParseBlock_0x2B ( FILE_STREAM & stream,
FMT_VER aVer )
static

◆ ParseBlock_0x2C_TABLE()

static std::unique_ptr< BLOCK_BASE > ParseBlock_0x2C_TABLE ( FILE_STREAM & aStream,
FMT_VER aVer )
static

◆ ParseBlock_0x2D()

◆ ParseBlock_0x2E()

◆ ParseBlock_0x2F()

◆ ParseBlock_0x30_STR_WRAPPER()

static std::unique_ptr< BLOCK_BASE > ParseBlock_0x30_STR_WRAPPER ( FILE_STREAM & aStream,
FMT_VER aVer )
static

◆ ParseBlock_0x31_SGRAPHIC()

◆ ParseBlock_0x32_PLACED_PAD()

static std::unique_ptr< BLOCK_BASE > ParseBlock_0x32_PLACED_PAD ( FILE_STREAM & aStream,
FMT_VER aVer )
static

◆ ParseBlock_0x33_VIA()

◆ ParseBlock_0x34_KEEPOUT()

static std::unique_ptr< BLOCK_BASE > ParseBlock_0x34_KEEPOUT ( FILE_STREAM & aStream,
FMT_VER aVer )
static

◆ ParseBlock_0x35()

static std::unique_ptr< BLOCK_BASE > ParseBlock_0x35 ( FILE_STREAM & aStream,
FMT_VER aVer )
static

◆ ParseBlock_0x36()

static std::unique_ptr< BLOCK_BASE > ParseBlock_0x36 ( FILE_STREAM & aStream,
FMT_VER aVer )
static

Definition at line 1872 of file allegro_parser.cpp.

References ALLEGRO::BLK_0x36_DEF_TABLE::FontDef_X08::m_A, ALLEGRO::BLK_0x36_DEF_TABLE::FontDef_X08::m_B, ALLEGRO::BLK_0x36_DEF_TABLE::FontDef_X08::m_CharHeight, ALLEGRO::BLK_0x36_DEF_TABLE::FontDef_X08::m_CharWidth, ALLEGRO::BLK_0x36_DEF_TABLE::X0F::m_Key, ALLEGRO::BLK_0x36_DEF_TABLE::X06::m_N, ALLEGRO::BLK_0x36_DEF_TABLE::X0F::m_Ptr2, ALLEGRO::BLK_0x36_DEF_TABLE::X0F::m_Ptrs, ALLEGRO::BLK_0x36_DEF_TABLE::X06::m_R, ALLEGRO::BLK_0x36_DEF_TABLE::X06::m_S, ALLEGRO::BLK_0x36_DEF_TABLE::X03::m_Str, ALLEGRO::BLK_0x36_DEF_TABLE::X03::m_Str16x, ALLEGRO::BLK_0x36_DEF_TABLE::X02::m_String, ALLEGRO::BLK_0x36_DEF_TABLE::X05::m_Unknown, ALLEGRO::BLK_0x36_DEF_TABLE::X0B::m_Unknown, ALLEGRO::BLK_0x36_DEF_TABLE::X0C::m_Unknown, ALLEGRO::BLK_0x36_DEF_TABLE::X0D::m_Unknown, ALLEGRO::BLK_0x36_DEF_TABLE::X10::m_Unknown, ALLEGRO::BLK_0x36_DEF_TABLE::X03::m_Unknown1, ALLEGRO::BLK_0x36_DEF_TABLE::X06::m_Unknown1, ALLEGRO::BLK_0x36_DEF_TABLE::FontDef_X08::m_Unknown2, ALLEGRO::BLK_0x36_DEF_TABLE::X06::m_Unknown2, ALLEGRO::BLK_0x36_DEF_TABLE::X10::m_Unknown2, ALLEGRO::BLK_0x36_DEF_TABLE::FontDef_X08::m_Xs, ALLEGRO::BLK_0x36_DEF_TABLE::X02::m_Xs, ALLEGRO::BLK_0x36_DEF_TABLE::FontDef_X08::m_Ys, ALLEGRO::BLK_0x36_DEF_TABLE::X02::m_Ys, ALLEGRO::BLK_0x36_DEF_TABLE::X02::m_Zs, ALLEGRO::FILE_STREAM::Position(), ReadArrayU32(), ALLEGRO::FILE_STREAM::ReadBytes(), ReadCond(), ALLEGRO::FILE_STREAM::ReadStringFixed(), ALLEGRO::FILE_STREAM::ReadU16(), ALLEGRO::FILE_STREAM::ReadU32(), ALLEGRO::FILE_STREAM::ReadU8(), ALLEGRO::FILE_STREAM::Skip(), THROW_IO_ERROR, and ALLEGRO::V_172.

Referenced by ALLEGRO::BLOCK_PARSER::ParseBlock().

◆ ParseBlock_0x37()

◆ ParseBlock_0x38_FILM()

static std::unique_ptr< BLOCK_BASE > ParseBlock_0x38_FILM ( FILE_STREAM & aStream,
FMT_VER aVer )
static

◆ ParseBlock_0x39_FILM_LAYER_LIST()

static std::unique_ptr< BLOCK_BASE > ParseBlock_0x39_FILM_LAYER_LIST ( FILE_STREAM & aStream,
FMT_VER aVer )
static

◆ ParseBlock_0x3A_FILM_LIST_NODE()

static std::unique_ptr< BLOCK_BASE > ParseBlock_0x3A_FILM_LIST_NODE ( FILE_STREAM & aStream,
FMT_VER aVer )
static

◆ ParseBlock_0x3B()

◆ ParseBlock_0x3C()

◆ ParseLayerInfo()

◆ ParseTextProps()

◆ ReadAllegroFloat()

static double ReadAllegroFloat ( FILE_STREAM & aStream)
static

Definition at line 76 of file allegro_parser.cpp.

References ALLEGRO::FILE_STREAM::ReadU32(), and result.

Referenced by ParseBlock_0x01_ARC().

◆ ReadArrayU32()

◆ ReadCond()

◆ ReadField()

template<typename T>
static T ReadField ( FILE_STREAM & aStream,
FMT_VER aFmtVer )
static

◆ ReadLL()

static FILE_HEADER::LINKED_LIST ReadLL ( FILE_STREAM & aStream,
FMT_VER aVer )
static

◆ ReadStringMap()

static void ReadStringMap ( FILE_STREAM & stream,
DB & aDb,
uint32_t count )
static

Variable Documentation

◆ traceAllegroParserBlocks

const wxChar* const traceAllegroParserBlocks = wxT( "KICAD_ALLEGRO_PARSER_BLOCKS" )
static

Definition at line 50 of file allegro_parser.cpp.

Referenced by ParseBlock_0x03(), and ALLEGRO::PARSER::readObjects().

◆ traceAllegroPerf

const wxChar* const traceAllegroPerf = wxT( "KICAD_ALLEGRO_PERF" )
static

Definition at line 51 of file allegro_parser.cpp.