KiCad PCB EDA Suite
DSN::WIRE_VIA Class Reference

Class WIRE_VIA corresponds to <wire_via_descriptor> in the specctra dsn spec. More...

#include <specctra.h>

Inheritance diagram for DSN::WIRE_VIA:
DSN::ELEM

Public Member Functions

 WIRE_VIA (ELEM *aParent)
 
const std::string & GetPadstackId ()
 
void Format (OUTPUTFORMATTER *out, int nestLevel) override
 Function Format writes this object 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 FormatContents (OUTPUTFORMATTER *out, int nestLevel)
 Function FormatContents writes the contents 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

std::string padstack_id
 
POINTS vertexes
 
std::string net_id
 
int via_number
 
DSN_T via_type
 
DSN_T attr
 
std::string virtual_pin_name
 
STRINGS contact_layers
 
bool supply
 

Friends

class SPECCTRA_DB
 

Detailed Description

Class WIRE_VIA corresponds to <wire_via_descriptor> in the specctra dsn spec.

Definition at line 2957 of file specctra.h.

Constructor & Destructor Documentation

DSN::WIRE_VIA::WIRE_VIA ( ELEM aParent)
inline

Definition at line 2973 of file specctra.h.

References DSN::T_NONE.

2973  :
2974  ELEM( T_via, aParent )
2975  {
2976  via_number = -1;
2977  via_type = T_NONE;
2978  attr = T_NONE;
2979  supply = false;
2980  }
ELEM(DSN_T aType, ELEM *aParent=0)
Definition: specctra.cpp:3490
DSN_T via_type
Definition: specctra.h:2965

Member Function Documentation

void DSN::WIRE_VIA::Format ( OUTPUTFORMATTER out,
int  nestLevel 
)
inlineoverridevirtual

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 from DSN::ELEM.

Definition at line 2987 of file specctra.h.

References OUTPUTFORMATTER::GetQuoteChar(), DSN::GetTokenText(), DSN::ELEM::Name(), OUTPUTFORMATTER::Print(), supply, DSN::T_NONE, and DSN::T_virtual_pin.

2988  {
2989  const char* quote = out->GetQuoteChar( padstack_id.c_str() );
2990 
2991  const int RIGHTMARGIN = 80;
2992  int perLine = out->Print( nestLevel, "(%s %s%s%s",
2993  Name(),
2994  quote, padstack_id.c_str(), quote );
2995 
2996  for( POINTS::iterator i=vertexes.begin(); i!=vertexes.end(); ++i )
2997  {
2998  if( perLine > RIGHTMARGIN )
2999  {
3000  out->Print( 0, "\n" );
3001  perLine = out->Print( nestLevel+1, "%s", "" );
3002  }
3003  else
3004  perLine += out->Print( 0, " " );
3005 
3006  perLine += out->Print( 0, "%.6g %.6g", i->x, i->y );
3007  }
3008 
3009  if( net_id.size() || via_number!=-1 || via_type!=T_NONE || attr!=T_NONE || supply)
3010  out->Print( 0, " " );
3011 
3012  if( net_id.size() )
3013  {
3014  if( perLine > RIGHTMARGIN )
3015  {
3016  out->Print( 0, "\n" );
3017  perLine = out->Print( nestLevel+1, "%s", "" );
3018  }
3019  quote = out->GetQuoteChar( net_id.c_str() );
3020  perLine += out->Print( 0, "(net %s%s%s)", quote, net_id.c_str(), quote );
3021  }
3022 
3023  if( via_number != -1 )
3024  {
3025  if( perLine > RIGHTMARGIN )
3026  {
3027  out->Print( 0, "\n" );
3028  perLine = out->Print( nestLevel+1, "%s", "" );
3029  }
3030  perLine += out->Print( 0, "(via_number %d)", via_number );
3031  }
3032 
3033  if( via_type != T_NONE )
3034  {
3035  if( perLine > RIGHTMARGIN )
3036  {
3037  out->Print( 0, "\n" );
3038  perLine = out->Print( nestLevel+1, "%s", "" );
3039  }
3040  perLine += out->Print( 0, "(type %s)", GetTokenText( via_type ) );
3041  }
3042 
3043  if( attr != T_NONE )
3044  {
3045  if( perLine > RIGHTMARGIN )
3046  {
3047  out->Print( 0, "\n" );
3048  perLine = out->Print( nestLevel+1, "%s", "" );
3049  }
3050  if( attr == T_virtual_pin )
3051  {
3052  quote = out->GetQuoteChar( virtual_pin_name.c_str() );
3053  perLine += out->Print( 0, "(attr virtual_pin %s%s%s)",
3054  quote, virtual_pin_name.c_str(), quote );
3055  }
3056  else
3057  perLine += out->Print( 0, "(attr %s)", GetTokenText( attr ) );
3058  }
3059 
3060  if( supply )
3061  {
3062  if( perLine > RIGHTMARGIN )
3063  {
3064  out->Print( 0, "\n" );
3065  perLine = out->Print( nestLevel+1, "%s", "" );
3066  }
3067  perLine += out->Print( 0, "(supply)" );
3068  }
3069 
3070  if( contact_layers.size() )
3071  {
3072  out->Print( 0, "\n" );
3073  out->Print( nestLevel+1, "(contact\n" );
3074 
3075  for( STRINGS::iterator i=contact_layers.begin(); i!=contact_layers.end(); ++i )
3076  {
3077  quote = out->GetQuoteChar( i->c_str() );
3078  out->Print( nestLevel+2, "%s%s%s\n", quote, i->c_str(), quote );
3079  }
3080  out->Print( nestLevel+1, "))\n" );
3081  }
3082  else
3083  out->Print( 0, ")\n" );
3084  }
POINTS vertexes
Definition: specctra.h:2962
std::string net_id
Definition: specctra.h:2963
DSN_T via_type
Definition: specctra.h:2965
const char * Name() const
Definition: specctra.cpp:3501
std::string padstack_id
Definition: specctra.h:2961
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
STRINGS contact_layers
Definition: specctra.h:2968
const char * GetTokenText(T aTok)
Function GetTokenText is in the DSN namespace and returns the C string representing a SPECCTRA_DB::ke...
Definition: specctra.cpp:69
std::string virtual_pin_name
Definition: specctra.h:2967
int PRINTF_FUNC Print(int nestLevel, const char *fmt,...)
Function Print formats and writes text to the output stream.
Definition: richio.cpp:404
virtual void DSN::ELEM::FormatContents ( OUTPUTFORMATTER out,
int  nestLevel 
)
inlinevirtualinherited

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 in DSN::WAS_IS, DSN::ROUTE, DSN::HISTORY, DSN::WIRING, DSN::NETWORK, DSN::TOPOLOGY, DSN::LIBRARY, DSN::PADSTACK, DSN::IMAGE, DSN::PLACEMENT, DSN::COMPONENT, DSN::STRUCTURE, DSN::STRUCTURE_OUT, DSN::REGION, DSN::CLASS_CLASS, DSN::CLASSES, DSN::PARSER, and DSN::ELEM_HOLDER.

Definition at line 264 of file specctra.h.

Referenced by DSN::ELEM::Format(), and DSN::ELEM::makeHash().

265  {
266  // overridden in ELEM_HOLDER
267  }
const std::string& DSN::WIRE_VIA::GetPadstackId ( )
inline

Definition at line 2982 of file specctra.h.

References padstack_id.

Referenced by DSN::SPECCTRA_DB::FromSESSION().

2983  {
2984  return padstack_id;
2985  }
std::string padstack_id
Definition: specctra.h:2961
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 2959 of file specctra.h.

Member Data Documentation

DSN_T DSN::WIRE_VIA::attr
private

Definition at line 2966 of file specctra.h.

Referenced by DSN::SPECCTRA_DB::doWIRE_VIA().

STRINGS DSN::WIRE_VIA::contact_layers
private

Definition at line 2968 of file specctra.h.

Referenced by DSN::SPECCTRA_DB::doWIRE_VIA().

std::string DSN::WIRE_VIA::net_id
private

Definition at line 2963 of file specctra.h.

Referenced by DSN::SPECCTRA_DB::doWIRE_VIA(), and DSN::SPECCTRA_DB::FromBOARD().

std::string DSN::WIRE_VIA::padstack_id
private
ELEM* DSN::ELEM::parent
protectedinherited

Definition at line 200 of file specctra.h.

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

STRING_FORMATTER DSN::ELEM::sf
staticprotectedinherited

Definition at line 222 of file specctra.h.

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

bool DSN::WIRE_VIA::supply
private

Definition at line 2969 of file specctra.h.

Referenced by DSN::SPECCTRA_DB::doWIRE_VIA(), and Format().

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().

POINTS DSN::WIRE_VIA::vertexes
private
int DSN::WIRE_VIA::via_number
private

Definition at line 2964 of file specctra.h.

Referenced by DSN::SPECCTRA_DB::doWIRE_VIA().

DSN_T DSN::WIRE_VIA::via_type
private

Definition at line 2965 of file specctra.h.

Referenced by DSN::SPECCTRA_DB::doWIRE_VIA(), and DSN::SPECCTRA_DB::FromBOARD().

std::string DSN::WIRE_VIA::virtual_pin_name
private

Definition at line 2967 of file specctra.h.

Referenced by DSN::SPECCTRA_DB::doWIRE_VIA().


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