KiCad PCB EDA Suite
DSN::STRUCTURE Class Reference

#include <specctra.h>

Inheritance diagram for DSN::STRUCTURE:
DSN::ELEM_HOLDER DSN::ELEM

Public Member Functions

 STRUCTURE (ELEM *aParent)
 
 ~STRUCTURE ()
 
void SetBOUNDARY (BOUNDARY *aBoundary)
 
void SetPlaceBOUNDARY (BOUNDARY *aBoundary)
 
void FormatContents (OUTPUTFORMATTER *out, int nestLevel) override
 Write the contents as ASCII out to an OUTPUTFORMATTER according to the SPECCTRA DSN format. More...
 
UNIT_RESGetUnits () const override
 Return the units for this section. More...
 
int FindElem (DSN_T aType, int instanceNum=0)
 Find a particular instance number of a given type of ELEM. More...
 
int Length () const
 Return the number of ELEMs in this holder. More...
 
void Append (ELEM *aElem)
 
ELEMReplace (int aIndex, ELEM *aElem)
 
ELEMRemove (int aIndex)
 
void Insert (int aIndex, ELEM *aElem)
 
ELEMAt (int aIndex) const
 
ELEMoperator[] (int aIndex) const
 
void Delete (int aIndex)
 
DSN_T Type () const
 
const char * Name () const
 
virtual void Format (OUTPUTFORMATTER *out, int nestLevel)
 Write 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 ()
 Return a string which uniquely represents this ELEM among 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 Types

typedef boost::ptr_vector< REGIONREGIONS
 
typedef boost::ptr_vector< GRIDGRIDS
 
typedef boost::ptr_vector< ELEMELEM_ARRAY
 

Private Attributes

UNIT_RESunit
 
LAYERS layers
 
LAYER_NOISE_WEIGHTlayer_noise_weight
 
BOUNDARYboundary
 
BOUNDARYplace_boundary
 
VIAvia
 
CONTROLcontrol
 
RULErules
 
KEEPOUTS keepouts
 
COPPER_PLANES planes
 
REGIONS regions
 
RULEplace_rules
 
GRIDS grids
 
ELEM_ARRAY kids
 ELEM pointers. More...
 

Friends

class SPECCTRA_DB
 

Detailed Description

Definition at line 1554 of file specctra.h.

Member Typedef Documentation

◆ ELEM_ARRAY

typedef boost::ptr_vector<ELEM> DSN::ELEM_HOLDER::ELEM_ARRAY
privateinherited

Definition at line 358 of file specctra.h.

◆ GRIDS

typedef boost::ptr_vector<GRID> DSN::STRUCTURE::GRIDS
private

Definition at line 1679 of file specctra.h.

◆ REGIONS

typedef boost::ptr_vector<REGION> DSN::STRUCTURE::REGIONS
private

Definition at line 1674 of file specctra.h.

Constructor & Destructor Documentation

◆ STRUCTURE()

DSN::STRUCTURE::STRUCTURE ( ELEM aParent)
inline

Definition at line 1557 of file specctra.h.

1557 :
1558 ELEM_HOLDER( T_structure, aParent )
1559 {
1560 unit = 0;
1562 boundary = 0;
1563 place_boundary = 0;
1564 via = 0;
1565 control = 0;
1566 rules = 0;
1567 place_rules = 0;
1568 }
ELEM_HOLDER(DSN_T aType, ELEM *aParent=0)
Definition: specctra.h:292
UNIT_RES * unit
Definition: specctra.h:1658
RULE * rules
Definition: specctra.h:1668
BOUNDARY * place_boundary
Definition: specctra.h:1665
RULE * place_rules
Definition: specctra.h:1677
BOUNDARY * boundary
Definition: specctra.h:1664
CONTROL * control
Definition: specctra.h:1667
LAYER_NOISE_WEIGHT * layer_noise_weight
Definition: specctra.h:1662

References boundary, control, layer_noise_weight, place_boundary, place_rules, rules, unit, and via.

◆ ~STRUCTURE()

DSN::STRUCTURE::~STRUCTURE ( )
inline

Definition at line 1570 of file specctra.h.

1571 {
1572 delete unit;
1573 delete layer_noise_weight;
1574 delete boundary;
1575 delete place_boundary;
1576 delete via;
1577 delete control;
1578 delete rules;
1579 delete place_rules;
1580 }

References boundary, control, layer_noise_weight, place_boundary, place_rules, rules, unit, and via.

Member Function Documentation

◆ Append()

void DSN::ELEM_HOLDER::Append ( ELEM aElem)
inlineinherited

◆ At()

ELEM * DSN::ELEM_HOLDER::At ( int  aIndex) const
inlineinherited

Definition at line 341 of file specctra.h.

342 {
343 // we have varying sized objects and are using polymorphism, so we
344 // must return a pointer not a reference.
345 return (ELEM*) &kids[aIndex];
346 }
ELEM(DSN_T aType, ELEM *aParent=0)
Definition: specctra.cpp:3749

References DSN::ELEM_HOLDER::kids.

Referenced by DSN::CONTROL::Format(), DSN::ELEM_HOLDER::FormatContents(), FormatContents(), and DSN::ELEM_HOLDER::operator[]().

◆ Delete()

void DSN::ELEM_HOLDER::Delete ( int  aIndex)
inlineinherited

Definition at line 353 of file specctra.h.

353{ kids.erase( kids.begin() + aIndex ); }

References DSN::ELEM_HOLDER::kids.

◆ FindElem()

int DSN::ELEM_HOLDER::FindElem ( DSN_T  aType,
int  instanceNum = 0 
)
inherited

Find a particular instance number of a given type of ELEM.

Parameters
aTypeThe type of ELEM to find
instanceNumThe instance number of to find: 0 for first, 1 for second, etc.
Returns
int - The index into the kids array or -1 if not found.

Definition at line 3791 of file specctra.cpp.

3792{
3793 int repeats=0;
3794
3795 for( unsigned i = 0; i < kids.size(); ++i )
3796 {
3797 if( kids[i].Type() == aType )
3798 {
3799 if( repeats == instanceNum )
3800 return i;
3801
3802 ++repeats;
3803 }
3804 }
3805
3806 return -1;
3807}
DSN_T Type() const
Definition: specctra.h:210

References DSN::ELEM_HOLDER::kids, and DSN::ELEM::Type().

◆ Format()

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

Write 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 precede the output with.
Exceptions
IO_ERRORif a system error writing the output, such as a full disk.

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

Definition at line 3774 of file specctra.cpp.

3775{
3776 out->Print( nestLevel, "(%s\n", Name() );
3777
3778 FormatContents( out, nestLevel+1 );
3779
3780 out->Print( nestLevel, ")\n" );
3781}
const char * Name() const
Definition: specctra.cpp:3760
virtual void FormatContents(OUTPUTFORMATTER *out, int nestLevel)
Write the contents as ASCII out to an OUTPUTFORMATTER according to the SPECCTRA DSN format.
Definition: specctra.h:242
int PRINTF_FUNC Print(int nestLevel, const char *fmt,...)
Format and write text to the output stream.
Definition: richio.cpp:433

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(), FormatContents(), and DSN::ROUTE::FormatContents().

◆ FormatContents()

void DSN::STRUCTURE::FormatContents ( OUTPUTFORMATTER out,
int  nestLevel 
)
inlineoverridevirtual

Write 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 precede the output with.
Exceptions
IO_ERRORif a system error writing the output, such as a full disk.

Reimplemented from DSN::ELEM_HOLDER.

Definition at line 1600 of file specctra.h.

1601 {
1602 if( unit )
1603 unit->Format( out, nestLevel );
1604
1605 for( LAYERS::iterator i=layers.begin(); i!=layers.end(); ++i )
1606 i->Format( out, nestLevel );
1607
1608 if( layer_noise_weight )
1609 layer_noise_weight->Format( out, nestLevel );
1610
1611 if( boundary )
1612 boundary->Format( out, nestLevel );
1613
1614 if( place_boundary )
1615 place_boundary->Format( out, nestLevel );
1616
1617 for( COPPER_PLANES::iterator i=planes.begin(); i!=planes.end(); ++i )
1618 i->Format( out, nestLevel );
1619
1620 for( REGIONS::iterator i=regions.begin(); i!=regions.end(); ++i )
1621 i->Format( out, nestLevel );
1622
1623 for( KEEPOUTS::iterator i=keepouts.begin(); i!=keepouts.end(); ++i )
1624 i->Format( out, nestLevel );
1625
1626 if( via )
1627 via->Format( out, nestLevel );
1628
1629 if( control )
1630 control->Format( out, nestLevel );
1631
1632 for( int i=0; i<Length(); ++i )
1633 {
1634 At(i)->Format( out, nestLevel );
1635 }
1636
1637 if( rules )
1638 rules->Format( out, nestLevel );
1639
1640 if( place_rules )
1641 place_rules->Format( out, nestLevel );
1642
1643 for( GRIDS::iterator i=grids.begin(); i!=grids.end(); ++i )
1644 i->Format( out, nestLevel );
1645 }
void Format(OUTPUTFORMATTER *out, int nestLevel) override
Write this object as ASCII out to an OUTPUTFORMATTER according to the SPECCTRA DSN format.
Definition: specctra.h:710
void Format(OUTPUTFORMATTER *out, int nestLevel) override
Write this object as ASCII out to an OUTPUTFORMATTER according to the SPECCTRA DSN format.
Definition: specctra.h:1176
ELEM * At(int aIndex) const
Definition: specctra.h:341
int Length() const
Return the number of ELEMs in this holder.
Definition: specctra.h:317
virtual void Format(OUTPUTFORMATTER *out, int nestLevel)
Write this object as ASCII out to an OUTPUTFORMATTER according to the SPECCTRA DSN format.
Definition: specctra.cpp:3774
void Format(OUTPUTFORMATTER *out, int nestLevel) override
Write this object as ASCII out to an OUTPUTFORMATTER according to the SPECCTRA DSN format.
Definition: specctra.h:1337
void Format(OUTPUTFORMATTER *out, int nestLevel) override
Write this object as ASCII out to an OUTPUTFORMATTER according to the SPECCTRA DSN format.
Definition: specctra.h:500
COPPER_PLANES planes
Definition: specctra.h:1672
KEEPOUTS keepouts
Definition: specctra.h:1670
REGIONS regions
Definition: specctra.h:1675
LAYERS layers
Definition: specctra.h:1660
void Format(OUTPUTFORMATTER *out, int nestLevel) override
Write this object as ASCII out to an OUTPUTFORMATTER according to the SPECCTRA DSN format.
Definition: specctra.h:422
void Format(OUTPUTFORMATTER *out, int nestLevel) override
Write this object as ASCII out to an OUTPUTFORMATTER according to the SPECCTRA DSN format.
Definition: specctra.h:1052

References DSN::ELEM_HOLDER::At(), boundary, control, DSN::ELEM::Format(), DSN::UNIT_RES::Format(), DSN::RULE::Format(), DSN::BOUNDARY::Format(), DSN::VIA::Format(), DSN::CONTROL::Format(), DSN::LAYER_NOISE_WEIGHT::Format(), grids, keepouts, layer_noise_weight, layers, DSN::ELEM_HOLDER::Length(), place_boundary, place_rules, planes, regions, rules, unit, and via.

◆ GetUnits()

UNIT_RES * DSN::STRUCTURE::GetUnits ( ) const
inlineoverridevirtual

Return the units for this section.

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

Returns
an element from a local or parent scope.

Reimplemented from DSN::ELEM.

Definition at line 1647 of file specctra.h.

1648 {
1649 if( unit )
1650 return unit;
1651
1652 return ELEM::GetUnits();
1653 }
virtual UNIT_RES * GetUnits() const
Return the units for this section.
Definition: specctra.cpp:3765

References DSN::ELEM::GetUnits(), and unit.

◆ Insert()

void DSN::ELEM_HOLDER::Insert ( int  aIndex,
ELEM aElem 
)
inlineinherited

Definition at line 339 of file specctra.h.

339{ kids.insert( kids.begin() + aIndex, aElem ); }

References DSN::ELEM_HOLDER::kids.

◆ Length()

int DSN::ELEM_HOLDER::Length ( ) const
inlineinherited

Return the number of ELEMs in this holder.

Returns
the count of children elements.

Definition at line 317 of file specctra.h.

318 {
319 return kids.size();
320 }

References DSN::ELEM_HOLDER::kids.

Referenced by DSN::CONTROL::Format(), DSN::ELEM_HOLDER::FormatContents(), FormatContents(), and DSN::SPECCTRA_DB::makeVIA().

◆ makeHash()

std::string DSN::ELEM::makeHash ( )
inlineprotectedinherited

Return a string which uniquely represents this ELEM among other ELEMs of the same derived class as "this" one.

It is not usable 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 263 of file specctra.h.

264 {
265 sf.Clear();
266 FormatContents( &sf, 0 );
268
269 return sf.GetString();
270 }
static STRING_FORMATTER sf
Definition: specctra.h:273
void StripUseless()
Removes whitespace, '(', and ')' from the string.
Definition: richio.cpp:519
const std::string & GetString()
Definition: richio.h:438
void Clear()
Clear the buffer and empties the internal string.
Definition: richio.h:428

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

◆ Name()

◆ operator[]()

ELEM * DSN::ELEM_HOLDER::operator[] ( int  aIndex) const
inlineinherited

Definition at line 348 of file specctra.h.

349 {
350 return At( aIndex );
351 }

References DSN::ELEM_HOLDER::At().

◆ Remove()

ELEM * DSN::ELEM_HOLDER::Remove ( int  aIndex)
inlineinherited

Definition at line 333 of file specctra.h.

334 {
335 ELEM_ARRAY::auto_type ret = kids.release( kids.begin() + aIndex );
336 return ret.release();
337 }

References DSN::ELEM_HOLDER::kids.

◆ Replace()

ELEM * DSN::ELEM_HOLDER::Replace ( int  aIndex,
ELEM aElem 
)
inlineinherited

Definition at line 327 of file specctra.h.

328 {
329 ELEM_ARRAY::auto_type ret = kids.replace( aIndex, aElem );
330 return ret.release();
331 }

References DSN::ELEM_HOLDER::kids.

◆ SetBOUNDARY()

void DSN::STRUCTURE::SetBOUNDARY ( BOUNDARY aBoundary)
inline

Definition at line 1582 of file specctra.h.

1583 {
1584 delete boundary;
1585 boundary = aBoundary;
1586 if( boundary )
1587 {
1588 boundary->SetParent( this );
1589 }
1590 }
void SetParent(ELEM *aParent)
Definition: specctra.h:247

References boundary, and DSN::ELEM::SetParent().

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

◆ SetParent()

◆ SetPlaceBOUNDARY()

void DSN::STRUCTURE::SetPlaceBOUNDARY ( BOUNDARY aBoundary)
inline

Definition at line 1592 of file specctra.h.

1593 {
1594 delete place_boundary;
1595 place_boundary = aBoundary;
1596 if( place_boundary )
1597 place_boundary->SetParent( this );
1598 }

References place_boundary, and DSN::ELEM::SetParent().

◆ Type()

Friends And Related Function Documentation

◆ SPECCTRA_DB

friend class SPECCTRA_DB
friend

Definition at line 1656 of file specctra.h.

Member Data Documentation

◆ boundary

BOUNDARY* DSN::STRUCTURE::boundary
private

◆ control

CONTROL* DSN::STRUCTURE::control
private

Definition at line 1667 of file specctra.h.

Referenced by DSN::SPECCTRA_DB::doSTRUCTURE(), FormatContents(), STRUCTURE(), and ~STRUCTURE().

◆ grids

GRIDS DSN::STRUCTURE::grids
private

Definition at line 1680 of file specctra.h.

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

◆ keepouts

KEEPOUTS DSN::STRUCTURE::keepouts
private

◆ kids

◆ layer_noise_weight

LAYER_NOISE_WEIGHT* DSN::STRUCTURE::layer_noise_weight
private

Definition at line 1662 of file specctra.h.

Referenced by DSN::SPECCTRA_DB::doSTRUCTURE(), FormatContents(), STRUCTURE(), and ~STRUCTURE().

◆ layers

LAYERS DSN::STRUCTURE::layers
private

◆ parent

ELEM* DSN::ELEM::parent
protectedinherited

Definition at line 276 of file specctra.h.

Referenced by DSN::ELEM::GetUnits(), and DSN::ELEM::SetParent().

◆ place_boundary

BOUNDARY* DSN::STRUCTURE::place_boundary
private

◆ place_rules

RULE* DSN::STRUCTURE::place_rules
private

Definition at line 1677 of file specctra.h.

Referenced by DSN::SPECCTRA_DB::doSTRUCTURE(), FormatContents(), STRUCTURE(), and ~STRUCTURE().

◆ planes

COPPER_PLANES DSN::STRUCTURE::planes
private

◆ regions

REGIONS DSN::STRUCTURE::regions
private

Definition at line 1675 of file specctra.h.

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

◆ rules

◆ sf

STRING_FORMATTER DSN::ELEM::sf
staticprotectedinherited

Definition at line 273 of file specctra.h.

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

◆ type

DSN_T DSN::ELEM::type
protectedinherited

Definition at line 275 of file specctra.h.

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

◆ unit

UNIT_RES* DSN::STRUCTURE::unit
private

◆ via


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