KiCad PCB EDA Suite
DSN::PARSER Class Reference

Class PARSER is simply a configuration record per the SPECCTRA DSN file spec. More...

#include <specctra.h>

Inheritance diagram for DSN::PARSER:
DSN::ELEM

Public Member Functions

 PARSER (ELEM *aParent)
 
void FormatContents (OUTPUTFORMATTER *out, int nestLevel) override
 Function FormatContents writes the contents as ASCII out to an OUTPUTFORMATTER according to the SPECCTRA DSN format. More...
 
DSN_T Type () const
 
const char * Name () const
 
virtual UNIT_RESGetUnits () const
 Function GetUnits returns the units for this section. More...
 
virtual void Format (OUTPUTFORMATTER *out, int nestLevel)
 Function Format writes this object as ASCII out to an OUTPUTFORMATTER according to the SPECCTRA DSN format. More...
 
void SetParent (ELEM *aParent)
 

Protected Member Functions

std::string makeHash ()
 Function makeHash returns a string which uniquely represents this ELEM amoung other ELEMs of the same derived class as "this" one. More...
 

Protected Attributes

DSN_T type
 
ELEMparent
 

Static Protected Attributes

static STRING_FORMATTER sf
 

Private Attributes

char string_quote
 
bool space_in_quoted_tokens
 
bool case_sensitive
 
bool wires_include_testpoint
 
bool routes_include_testpoint
 
bool routes_include_guides
 
bool routes_include_image_conductor
 
bool via_rotate_first
 
bool generated_by_freeroute
 
STRINGS constants
 This holds pairs of strings, one pair for each constant definition. More...
 
std::string host_cad
 
std::string host_version
 

Friends

class SPECCTRA_DB
 

Detailed Description

Class PARSER is simply a configuration record per the SPECCTRA DSN file spec.

It is not actually a parser, but rather corresponds to <parser_descriptor>

Definition at line 367 of file specctra.h.

Constructor & Destructor Documentation

DSN::PARSER::PARSER ( ELEM aParent)

Definition at line 3618 of file specctra.cpp.

References case_sensitive, generated_by_freeroute, GetBuildVersion(), host_cad, host_version, routes_include_guides, routes_include_image_conductor, routes_include_testpoint, space_in_quoted_tokens, string_quote, TO_UTF8, via_rotate_first, and wires_include_testpoint.

3618  :
3619  ELEM( T_parser, aParent )
3620 {
3621  string_quote = '"';
3622  space_in_quoted_tokens = false;
3623 
3624  case_sensitive = false;
3625  wires_include_testpoint = false;
3626  routes_include_testpoint = false;
3627  routes_include_guides = false;
3629  via_rotate_first = true;
3630  generated_by_freeroute = false;
3631 
3632  host_cad = "KiCad's Pcbnew";
3633  wxString msg = GetBuildVersion();
3634  host_version = TO_UTF8(msg);
3635 }
bool space_in_quoted_tokens
Definition: specctra.h:372
ELEM(DSN_T aType, ELEM *aParent=0)
Definition: specctra.cpp:3490
bool via_rotate_first
Definition: specctra.h:378
bool routes_include_testpoint
Definition: specctra.h:375
#define TO_UTF8(wxstring)
Macro TO_UTF8 converts a wxString to a UTF8 encoded C string for all wxWidgets build modes...
Definition: macros.h:47
std::string host_version
Definition: specctra.h:385
wxString GetBuildVersion()
Function GetBuildVersion Return the build version string.
bool routes_include_image_conductor
Definition: specctra.h:377
bool case_sensitive
Definition: specctra.h:373
char string_quote
Definition: specctra.h:371
std::string host_cad
Definition: specctra.h:384
bool routes_include_guides
Definition: specctra.h:376
bool wires_include_testpoint
Definition: specctra.h:374
bool generated_by_freeroute
Definition: specctra.h:379

Member Function Documentation

void DSN::ELEM::Format ( OUTPUTFORMATTER out,
int  nestLevel 
)
virtualinherited

Function Format writes this object as ASCII out to an OUTPUTFORMATTER according to the SPECCTRA DSN format.

Parameters
outThe formatter to write to.
nestLevelA multiple of the number of spaces to preceed the output with.
Exceptions
IO_ERRORif a system error writing the output, such as a full disk.

Reimplemented in DSN::SESSION, DSN::NET_OUT, DSN::SUPPLY_PIN, DSN::ANCESTOR, DSN::PCB, DSN::WIRE_VIA, DSN::WIRE, DSN::CLASS, DSN::NET, DSN::COMP_ORDER, DSN::FROMTO, DSN::PADSTACK, DSN::IMAGE, DSN::PIN, DSN::SHAPE, DSN::COMPONENT, DSN::PLACE, DSN::GRID, DSN::STRINGPROP, DSN::TOKPROP, DSN::LAYER_NOISE_WEIGHT, DSN::SPECCTRA_LAYER_PAIR, DSN::LAYER, DSN::CONTROL, DSN::VIA, DSN::KEEPOUT, DSN::WINDOW, DSN::QARC, DSN::CIRCLE, DSN::BOUNDARY, DSN::PATH, DSN::LAYER_RULE, DSN::RULE, DSN::RECTANGLE, and DSN::UNIT_RES.

Definition at line 3515 of file specctra.cpp.

References DSN::ELEM::FormatContents(), DSN::ELEM::Name(), and OUTPUTFORMATTER::Print().

Referenced by DSN::WINDOW::Format(), DSN::KEEPOUT::Format(), DSN::CONTROL::Format(), DSN::PLACE::Format(), DSN::SHAPE::Format(), DSN::CLASS::Format(), DSN::WIRE::Format(), DSN::PCB::Format(), DSN::SESSION::Format(), DSN::ELEM_HOLDER::FormatContents(), DSN::CLASS_CLASS::FormatContents(), DSN::STRUCTURE::FormatContents(), and DSN::ROUTE::FormatContents().

3516 {
3517  out->Print( nestLevel, "(%s\n", Name() );
3518 
3519  FormatContents( out, nestLevel+1 );
3520 
3521  out->Print( nestLevel, ")\n" );
3522 }
virtual void FormatContents(OUTPUTFORMATTER *out, int nestLevel)
Function FormatContents writes the contents as ASCII out to an OUTPUTFORMATTER according to the SPECC...
Definition: specctra.h:264
const char * Name() const
Definition: specctra.cpp:3501
int PRINTF_FUNC Print(int nestLevel, const char *fmt,...)
Function Print formats and writes text to the output stream.
Definition: richio.cpp:404
void DSN::PARSER::FormatContents ( OUTPUTFORMATTER out,
int  nestLevel 
)
overridevirtual

Function FormatContents writes the contents as ASCII out to an OUTPUTFORMATTER according to the SPECCTRA DSN format.

This is the same as Format() except that the outer wrapper is not included.

Parameters
outThe formatter to write to.
nestLevelA multiple of the number of spaces to preceed the output with.
Exceptions
IO_ERRORif a system error writing the output, such as a full disk.

Reimplemented from DSN::ELEM.

Definition at line 3638 of file specctra.cpp.

References case_sensitive, constants, OUTPUTFORMATTER::GetQuoteChar(), host_cad, host_version, OUTPUTFORMATTER::Print(), routes_include_guides, routes_include_image_conductor, routes_include_testpoint, space_in_quoted_tokens, string_quote, via_rotate_first, and wires_include_testpoint.

3639 {
3640  out->Print( nestLevel, "(string_quote %c)\n", string_quote );
3641  out->Print( nestLevel, "(space_in_quoted_tokens %s)\n", space_in_quoted_tokens ? "on" : "off" );
3642  out->Print( nestLevel, "(host_cad \"%s\")\n", host_cad.c_str() );
3643  out->Print( nestLevel, "(host_version \"%s\")\n", host_version.c_str() );
3644 
3645  for( STRINGS::iterator i=constants.begin(); i!=constants.end(); )
3646  {
3647  const std::string& s1 = *i++;
3648  const std::string& s2 = *i++;
3649 
3650  const char* q1 = out->GetQuoteChar( s1.c_str() );
3651  const char* q2 = out->GetQuoteChar( s2.c_str() );
3652  out->Print( nestLevel, "(constant %s%s%s %s%s%s)\n",
3653  q1, s1.c_str(), q1,
3654  q2, s2.c_str(), q2 );
3655  }
3656 
3658  out->Print( nestLevel, "(routes_include%s%s%s)\n",
3659  routes_include_testpoint ? " testpoint" : "",
3660  routes_include_guides ? " guides" : "",
3661  routes_include_image_conductor ? " image_conductor" : "");
3662 
3664  out->Print( nestLevel, "(wires_include testpoint)\n" );
3665 
3666  if( !via_rotate_first )
3667  out->Print( nestLevel, "(via_rotate_first off)\n" );
3668 
3669  if( case_sensitive )
3670  out->Print( nestLevel, "(case_sensitive %s)\n", case_sensitive ? "on" : "off" );
3671 }
bool space_in_quoted_tokens
Definition: specctra.h:372
bool via_rotate_first
Definition: specctra.h:378
bool routes_include_testpoint
Definition: specctra.h:375
std::string host_version
Definition: specctra.h:385
bool routes_include_image_conductor
Definition: specctra.h:377
static const char * GetQuoteChar(const char *wrapee, const char *quote_char)
Function GetQuoteChar performs quote character need determination according to the Specctra DSN speci...
Definition: richio.cpp:327
bool case_sensitive
Definition: specctra.h:373
STRINGS constants
This holds pairs of strings, one pair for each constant definition.
Definition: specctra.h:382
char string_quote
Definition: specctra.h:371
std::string host_cad
Definition: specctra.h:384
bool routes_include_guides
Definition: specctra.h:376
int PRINTF_FUNC Print(int nestLevel, const char *fmt,...)
Function Print formats and writes text to the output stream.
Definition: richio.cpp:404
bool wires_include_testpoint
Definition: specctra.h:374
UNIT_RES * DSN::ELEM::GetUnits ( ) const
virtualinherited

Function GetUnits returns the units for this section.

Derived classes may override this to check for section specific overrides.

Returns
UNIT_RES* - from a local or parent scope

Reimplemented in DSN::ROUTE, DSN::PCB, DSN::WIRING, DSN::LIBRARY, DSN::PADSTACK, DSN::IMAGE, DSN::PLACEMENT, and DSN::STRUCTURE.

Definition at line 3506 of file specctra.cpp.

References DSN::UNIT_RES::Default, DSN::ELEM::GetUnits(), and DSN::ELEM::parent.

Referenced by DSN::SPECCTRA_DB::FromSESSION(), DSN::ELEM::GetUnits(), DSN::STRUCTURE::GetUnits(), DSN::PLACEMENT::GetUnits(), DSN::IMAGE::GetUnits(), DSN::PADSTACK::GetUnits(), DSN::LIBRARY::GetUnits(), DSN::WIRING::GetUnits(), DSN::PCB::GetUnits(), and DSN::ROUTE::GetUnits().

3507 {
3508  if( parent )
3509  return parent->GetUnits();
3510 
3511  return &UNIT_RES::Default;
3512 }
virtual UNIT_RES * GetUnits() const
Function GetUnits returns the units for this section.
Definition: specctra.cpp:3506
ELEM * parent
Definition: specctra.h:200
static UNIT_RES Default
A static instance which holds the default units of T_inch and 2540000.
Definition: specctra.h:414
std::string DSN::ELEM::makeHash ( )
inlineprotectedinherited

Function makeHash returns a string which uniquely represents this ELEM amoung other ELEMs of the same derived class as "this" one.

It is not useable for all derived classes, only those which plan for it by implementing a FormatContents() function that captures all info which will be used in the subsequent string compare. THIS SHOULD NORMALLY EXCLUDE THE TYPENAME, AND INSTANCE NAME OR ID AS WELL.

Definition at line 212 of file specctra.h.

References STRING_FORMATTER::Clear(), DSN::ELEM::FormatContents(), STRING_FORMATTER::GetString(), DSN::ELEM::sf, and STRING_FORMATTER::StripUseless().

Referenced by DSN::IMAGE::Compare(), and DSN::PADSTACK::Compare().

213  {
214  sf.Clear();
215  FormatContents( &sf, 0 );
216  sf.StripUseless();
217 
218  return sf.GetString();
219  }
virtual void FormatContents(OUTPUTFORMATTER *out, int nestLevel)
Function FormatContents writes the contents as ASCII out to an OUTPUTFORMATTER according to the SPECC...
Definition: specctra.h:264
const std::string & GetString()
Definition: richio.h:475
void StripUseless()
Function StripUseless removes whitespace, '(', and ')' from the mystring.
Definition: richio.cpp:500
static STRING_FORMATTER sf
Definition: specctra.h:222
void Clear()
Function Clear clears the buffer and empties the internal string.
Definition: richio.h:464

Friends And Related Function Documentation

friend class SPECCTRA_DB
friend

Definition at line 369 of file specctra.h.

Member Data Documentation

bool DSN::PARSER::case_sensitive
private

Definition at line 373 of file specctra.h.

Referenced by DSN::SPECCTRA_DB::doPARSER(), FormatContents(), and PARSER().

STRINGS DSN::PARSER::constants
private

This holds pairs of strings, one pair for each constant definition.

Definition at line 382 of file specctra.h.

Referenced by DSN::SPECCTRA_DB::doPARSER(), and FormatContents().

bool DSN::PARSER::generated_by_freeroute
private

Definition at line 379 of file specctra.h.

Referenced by DSN::SPECCTRA_DB::doPARSER(), and PARSER().

std::string DSN::PARSER::host_cad
private

Definition at line 384 of file specctra.h.

Referenced by DSN::SPECCTRA_DB::doPARSER(), FormatContents(), and PARSER().

std::string DSN::PARSER::host_version
private

Definition at line 385 of file specctra.h.

Referenced by DSN::SPECCTRA_DB::doPARSER(), FormatContents(), and PARSER().

ELEM* DSN::ELEM::parent
protectedinherited

Definition at line 200 of file specctra.h.

Referenced by DSN::ELEM::GetUnits().

bool DSN::PARSER::routes_include_guides
private

Definition at line 376 of file specctra.h.

Referenced by DSN::SPECCTRA_DB::doPARSER(), FormatContents(), and PARSER().

bool DSN::PARSER::routes_include_image_conductor
private

Definition at line 377 of file specctra.h.

Referenced by DSN::SPECCTRA_DB::doPARSER(), FormatContents(), and PARSER().

bool DSN::PARSER::routes_include_testpoint
private

Definition at line 375 of file specctra.h.

Referenced by DSN::SPECCTRA_DB::doPARSER(), FormatContents(), and PARSER().

STRING_FORMATTER DSN::ELEM::sf
staticprotectedinherited

Definition at line 222 of file specctra.h.

Referenced by DSN::ELEM::makeHash().

bool DSN::PARSER::space_in_quoted_tokens
private
char DSN::PARSER::string_quote
private

Definition at line 371 of file specctra.h.

Referenced by DSN::SPECCTRA_DB::doPARSER(), FormatContents(), and PARSER().

DSN_T DSN::ELEM::type
protectedinherited

Definition at line 199 of file specctra.h.

Referenced by DSN::UNIT_RES::Format(), DSN::ELEM::Name(), and DSN::ELEM::Type().

bool DSN::PARSER::via_rotate_first
private

Definition at line 378 of file specctra.h.

Referenced by DSN::SPECCTRA_DB::doPARSER(), FormatContents(), and PARSER().

bool DSN::PARSER::wires_include_testpoint
private

Definition at line 374 of file specctra.h.

Referenced by FormatContents(), and PARSER().


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