pcce::XmlDoc Class Reference

#include <XmlDoc.h>

List of all members.

Public Member Functions

 XmlDoc ()
 XmlDoc (const std::string &fileName)
 ~XmlDoc ()
void LoadFile (const std::string &fileName)
void SaveFile (const std::string &fileName)
XmlNodeRootNode ()
XmlNodeRootNode (const std::string &nodeName)
XmlNodeCreateRootNode (const std::string &nodeName)
XmlNodeNodeFromElement (TiXmlElement *element)

Private Types

typedef std::map< const
TiXmlElement *, XmlNode
tXmlWrapperMap
typedef std::pair< const
TiXmlElement *, XmlNode
tXmlWrapperPair

Private Attributes

TiXmlDocument * mDoc
tXmlWrapperMap mMap


Detailed Description

Definition at line 46 of file XmlDoc.h.


Member Typedef Documentation

typedef std::map< const TiXmlElement*, XmlNode > pcce::XmlDoc::tXmlWrapperMap [private]

Definition at line 62 of file XmlDoc.h.

typedef std::pair< const TiXmlElement*, XmlNode > pcce::XmlDoc::tXmlWrapperPair [private]

Definition at line 63 of file XmlDoc.h.


Constructor & Destructor Documentation

XmlDoc::XmlDoc (  ) 

Definition at line 42 of file XmlDoc.cpp.

00042               : mDoc(new TiXmlDocument()), mMap() {
00043 }

pcce::XmlDoc::XmlDoc ( const std::string &  fileName  ) 

XmlDoc::~XmlDoc (  ) 

Definition at line 49 of file XmlDoc.cpp.

References mDoc.

00049                 {
00050   delete mDoc;
00051 }


Member Function Documentation

void pcce::XmlDoc::LoadFile ( const std::string &  fileName  ) 

void pcce::XmlDoc::SaveFile ( const std::string &  fileName  ) 

XmlNode * XmlDoc::RootNode (  ) 

Definition at line 88 of file XmlDoc.cpp.

References mDoc, and NodeFromElement().

Referenced by CreateRootNode().

00088                           {
00089   TiXmlElement* elem = mDoc->RootElement();
00090   if (elem == NULL) {
00091     return NULL;
00092   } else {
00093     return NodeFromElement(mDoc->RootElement());
00094   }
00095 }

XmlNode* pcce::XmlDoc::RootNode ( const std::string &  nodeName  ) 

XmlNode * XmlDoc::CreateRootNode ( const std::string &  nodeName  ) 

Definition at line 104 of file XmlDoc.cpp.

References mDoc, NodeFromElement(), PCCE_CHECK, and RootNode().

00104                                                          {
00105   // This isn't thread safe...
00106   XmlNode* root = RootNode();
00107   PCCE_CHECK(root == NULL, "XmlDoc already has root node");
00108 
00109   auto_ptr< TiXmlElement > element(new TiXmlElement(nodeName));
00110   TiXmlElement *p = element.get();
00111   mDoc->LinkEndChild(p);
00112   element.release();
00113   return NodeFromElement(p);
00114 }

XmlNode * XmlDoc::NodeFromElement ( TiXmlElement *  element  ) 

Definition at line 116 of file XmlDoc.cpp.

References mMap, and PCCE_CHECK.

Referenced by CreateRootNode(), pcce::XmlNode::GetFirstChild(), pcce::XmlNode::GetNextSibling(), pcce::XmlNode::GetParent(), pcce::XmlNode::GetPrevSibling(), and RootNode().

00116                                                       {
00117   PCCE_CHECK(element != NULL, "XmlDoc::NodeFromElement: Element is NULL");
00118   tXmlWrapperMap::iterator i = mMap.find(element);
00119   if (i == mMap.end()) {
00120     XmlNode value(this, element);
00121     tXmlWrapperPair pair(element, value);
00122     mMap.insert(i, pair);
00123     i = mMap.find(element);
00124     PCCE_CHECK(i != mMap.end(), "XmlDoc: Internal error creating XmlNode");
00125   }
00126   return &(i->second);
00127 }


Member Data Documentation

TiXmlDocument* pcce::XmlDoc::mDoc [private]

Definition at line 65 of file XmlDoc.h.

Referenced by CreateRootNode(), RootNode(), and ~XmlDoc().

Definition at line 66 of file XmlDoc.h.

Referenced by NodeFromElement().


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

Generated on Thu Mar 6 11:39:28 2008 for Protocce by  doxygen 1.5.5