hpp-util
4.12.0
Debugging tools for the HPP project.
|
Go to the documentation of this file.
17 #ifndef HPP_MANIPULATION_PARSER_HH
18 # define HPP_MANIPULATION_PARSER_HH
24 # include <functional>
141 std::string
name ()
const;
147 std::string
getAttribute (
const std::string& attr)
const;
163 void name (
const std::string& n);
166 void name (
const char* n);
169 template <
typename T> T*
as ()
171 return static_cast <T*
> (
this);
191 virtual std::ostream&
print (std::ostream& os)
const;
196 typedef std::map <std::string, ObjectFactoryList > ChildrenMap;
197 ChildrenMap children_;
201 typedef std::map <std::string, std::string> AttributeMap;
202 AttributeMap attrMap_;
203 std::string name_, tagName_;
212 template <
typename T>
215 return new T (parent, element);
236 virtual void parse (
const char* xmlString);
238 virtual void parseFile (
const std::string& filename);
246 bool checkError ()
const;
248 void loadString (
const char* xmlstring);
254 typedef std::map <std::string, FactoryType> ObjectFactoryMap;
255 typedef std::pair <std::string, FactoryType> ObjectFactoryPair;
256 typedef std::pair <ObjectFactoryMap::iterator, bool> ObjectFactoryInsertRet;
257 ObjectFactoryMap objFactoryMap_;
260 typedef std::list <ObjectFactory*> ObjectFactoryList;
261 ObjectFactoryList objectFactories_;
263 std::ostream& print (std::ostream&)
const;
273 #endif // HPP_MANIPULATION_PARSER_HH
void setAttribute(const XMLAttribute *attr)
Definition: parser.cc:292
ObjectFactoryList getChildrenOfType(std::string type)
Get a list of ObjectFactory whose tag name is type.
Definition: parser.cc:261
std::function< ObjectFactory *(ObjectFactory *, const XMLElement *)> FactoryType
Definition: parser.hh:226
std::ostream & operator<<(std::ostream &, const ObjectFactory &)
Definition: parser.cc:133
Class that catch XML Parser events for a specific tag and build the corresponding Object.
Definition: parser.hh:77
virtual ~Parser()
Definition: parser.cc:30
friend std::ostream & operator<<(std::ostream &, const ObjectFactory &)
Definition: parser.cc:133
ObjectFactory * create(ObjectFactory *parent=NULL, const XMLElement *element=NULL)
Definition: parser.hh:213
virtual void addTextChild(const XMLText *text)
Add Text child.
Definition: parser.cc:173
virtual void finishTags()
Called when all the child tags have been processed.
Definition: parser.cc:167
bool hasAttribute(const std::string &attr) const
Check if an attribute was set.
Definition: parser.cc:309
virtual std::ostream & print(std::ostream &os) const
Definition: parser.cc:281
std::string tagName() const
Definition: parser.cc:210
Parse an XML document.
Definition: parser.hh:223
T * as()
Cast this class to any child class.
Definition: parser.hh:169
TiXmlText XMLText
Definition: parser.hh:36
virtual void finishFile()
Called when parsing is finished.
Definition: parser.cc:170
std::list< ObjectFactory * > ObjectFactoryList
Definition: parser.hh:79
virtual bool init()
Definition: parser.cc:157
virtual ObjectFactory * root()
Definition: parser.cc:235
virtual bool finishAttributes()
Definition: parser.cc:162
bool getChildOfType(std::string type, ObjectFactory *&o)
Definition: parser.cc:266
Parser(FactoryType defaultFactory=create< ObjectFactory >)
Definition: parser.cc:26
TiXmlPrinter XMLPrinter
Definition: parser.hh:39
virtual void impl_write(XMLElement *element) const
Definition: parser.cc:253
Definition: assertion.hh:22
virtual void parse(const char *xmlString)
Definition: parser.cc:38
bool hasParent() const
Definition: parser.cc:240
void addChild(ObjectFactory *child)
Definition: parser.cc:256
TiXmlElement XMLElement
Definition: parser.hh:31
ObjectFactory * root() const
Definition: parser.cc:116
TiXmlAttribute XMLAttribute
Definition: parser.hh:34
virtual void impl_setAttribute(const XMLAttribute *attr)
Definition: parser.cc:250
TiXmlNode XMLNode
Definition: parser.hh:35
virtual ~ObjectFactory()
Definition: parser.hh:83
void addObjectFactory(const std::string &tagname, FactoryType factory)
Definition: parser.cc:75
virtual void parseFile(const std::string &filename)
Definition: parser.cc:46
void addAttribute(const std::string &name, const std::string &value)
Add an attribute.
Definition: parser.cc:188
std::string getAttribute(const std::string &attr) const
Return a given attributes.
Definition: parser.cc:314
ObjectFactory(ObjectFactory *parent=NULL, const XMLElement *element=NULL)
Definition: parser.cc:138
friend std::ostream & operator<<(std::ostream &, const Parser &)
Definition: parser.cc:128
const XMLElement * XMLelement()
Definition: parser.cc:245
TiXmlComment XMLComment
Definition: parser.hh:37
TiXmlDocument XMLDocument
Definition: parser.hh:32
std::string name() const
Definition: parser.cc:215
TiXmlDeclaration XMLDeclaration
Definition: parser.hh:33
XMLNode * write(XMLNode *node) const
Get a new XMLElement from the content of this factory.
Definition: parser.cc:195
ObjectFactory * parent()
Definition: parser.cc:230