KiCad PCB EDA Suite
XPATH Class Reference

Class XPATH keeps track of what we are working on within a PTREE. More...

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...
 
string Contents ()
 return the contents of the XPATH as a single string More...
 

Private Attributes

std::vector< TRIPLETp
 

Detailed Description

Class XPATH keeps 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 124 of file eagle_plugin.cpp.

Member Function Documentation

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

modify the last path node's attribute

Definition at line 145 of file eagle_plugin.cpp.

146  {
147  p.back().attribute = aAttribute;
148  }
std::vector< TRIPLET > p
void XPATH::clear ( )
inline

Definition at line 134 of file eagle_plugin.cpp.

Referenced by EAGLE_PLUGIN::init().

134 { p.clear(); }
std::vector< TRIPLET > p
string XPATH::Contents ( )
inline

return the contents of the XPATH as a single string

Definition at line 151 of file eagle_plugin.cpp.

Referenced by EAGLE_PLUGIN::cacheLib(), and EAGLE_PLUGIN::Load().

152  {
153  typedef std::vector<TRIPLET>::const_iterator CITER_TRIPLET;
154 
155  string ret;
156 
157  for( CITER_TRIPLET it = p.begin(); it != p.end(); ++it )
158  {
159  if( it != p.begin() )
160  ret += '.';
161 
162  ret += it->element;
163 
164  if( it->attribute[0] && it->value[0] )
165  {
166  ret += '[';
167  ret += it->attribute;
168  ret += '=';
169  ret += it->value;
170  ret += ']';
171  }
172  }
173 
174  return ret;
175  }
std::vector< TRIPLET > p
void XPATH::push ( const char *  aPathSegment,
const char *  aAttribute = "" 
)
inline

Definition at line 129 of file eagle_plugin.cpp.

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

130  {
131  p.push_back( TRIPLET( aPathSegment, aAttribute ) );
132  }
segment (element) of our XPATH into the Eagle XML document tree in PTREE form.
std::vector< TRIPLET > p
void XPATH::Value ( const char *  aValue)
inline

modify the last path node's value

Definition at line 139 of file eagle_plugin.cpp.

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

140  {
141  p.back().value = aValue;
142  }
std::vector< TRIPLET > p

Member Data Documentation

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

Definition at line 126 of file eagle_plugin.cpp.


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