KiCad PCB EDA Suite
XPATH Class Reference

Keep track of what we are working on within a PTREE. More...

#include <eagle_parser.h>

Public Member Functions

void push (const char *aPathSegment, const char *aAttribute="")
 
void clear ()
 
void pop ()
 
void Value (const char *aValue)
 modify the last path node's value More...
 
void Attribute (const char *aAttribute)
 modify the last path node's attribute More...
 
wxString Contents ()
 return the contents of the XPATH as a single string More...
 

Private Attributes

std::vector< TRIPLETp
 

Detailed Description

Keep track of what we are working on within a PTREE.

Then if an exception is thrown, the place within the tree that gave us grief can be reported almost accurately. To minimally impact speed, merely assign const char* pointers during the tree walking expedition. The const char* pointers must be to C strings residing either in the data or code segment (i.e. "compiled in") or within the XML document, but not on the stack, since the stack is unwound during the throwing of the exception. The XML document will not immediately vanish since we capture the xpath (using function Contents()) before the XML document tree (PTREE) is destroyed.

Definition at line 110 of file eagle_parser.h.

Member Function Documentation

◆ Attribute()

void XPATH::Attribute ( const char *  aAttribute)
inline

modify the last path node's attribute

Definition at line 131 of file eagle_parser.h.

132  {
133  p.back().attribute = aAttribute;
134  }
std::vector< TRIPLET > p
Definition: eagle_parser.h:112

References p.

◆ clear()

void XPATH::clear ( )
inline

Definition at line 120 of file eagle_parser.h.

120 { p.clear(); }
std::vector< TRIPLET > p
Definition: eagle_parser.h:112

References p.

Referenced by EAGLE_PLUGIN::init().

◆ Contents()

wxString XPATH::Contents ( )
inline

return the contents of the XPATH as a single string

Definition at line 137 of file eagle_parser.h.

138  {
139  typedef std::vector<TRIPLET>::const_iterator CITER_TRIPLET;
140 
141  wxString ret;
142 
143  for( CITER_TRIPLET it = p.begin(); it != p.end(); ++it )
144  {
145  if( it != p.begin() )
146  ret += '.';
147 
148  ret += it->element;
149 
150  if( it->attribute[0] && it->value[0] )
151  {
152  ret += '[';
153  ret += it->attribute;
154  ret += '=';
155  ret += it->value;
156  ret += ']';
157  }
158  }
159 
160  return ret;
161  }
std::vector< TRIPLET > p
Definition: eagle_parser.h:112

References p.

Referenced by EAGLE_PLUGIN::Load().

◆ pop()

◆ push()

void XPATH::push ( const char *  aPathSegment,
const char *  aAttribute = "" 
)
inline

Definition at line 115 of file eagle_parser.h.

116  {
117  p.emplace_back( aPathSegment, aAttribute );
118  }
std::vector< TRIPLET > p
Definition: eagle_parser.h:112

References p.

Referenced by EAGLE_PLUGIN::cacheLib(), EAGLE_PLUGIN::loadAllSections(), EAGLE_PLUGIN::loadDesignRules(), EAGLE_PLUGIN::loadElements(), EAGLE_PLUGIN::loadLibraries(), EAGLE_PLUGIN::loadLibrary(), EAGLE_PLUGIN::loadPlain(), and EAGLE_PLUGIN::loadSignals().

◆ Value()

void XPATH::Value ( const char *  aValue)
inline

modify the last path node's value

Definition at line 125 of file eagle_parser.h.

126  {
127  p.back().value = aValue;
128  }
std::vector< TRIPLET > p
Definition: eagle_parser.h:112

References p.

Referenced by EAGLE_PLUGIN::loadElements(), EAGLE_PLUGIN::loadLibraries(), EAGLE_PLUGIN::loadLibrary(), and EAGLE_PLUGIN::loadSignals().

Member Data Documentation

◆ p

std::vector<TRIPLET> XPATH::p
private

Definition at line 112 of file eagle_parser.h.

Referenced by Attribute(), clear(), Contents(), pop(), push(), and Value().


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