29 #ifndef HPP_MANIPULATION_PARSER_HH 30 #define HPP_MANIPULATION_PARSER_HH 153 std::string
name()
const;
159 std::string
getAttribute(
const std::string& attr)
const;
176 void name(
const std::string& n);
179 void name(
const char* n);
182 template <
typename T>
184 return static_cast<T*
>(
this);
204 virtual std::ostream&
print(std::ostream& os)
const;
209 typedef std::map<std::string, ObjectFactoryList> ChildrenMap;
210 ChildrenMap children_;
214 typedef std::map<std::string, std::string> AttributeMap;
215 AttributeMap attrMap_;
216 std::string name_, tagName_;
225 template <
typename T>
228 return new T(parent, element);
238 typedef std::function<ObjectFactory*(ObjectFactory*, const XMLElement*)>
249 virtual void parse(
const char* xmlString);
251 virtual void parseFile(
const std::string& filename);
259 bool checkError()
const;
261 void loadString(
const char* xmlstring);
267 typedef std::map<std::string, FactoryType> ObjectFactoryMap;
268 typedef std::pair<std::string, FactoryType> ObjectFactoryPair;
269 typedef std::pair<ObjectFactoryMap::iterator, bool> ObjectFactoryInsertRet;
270 ObjectFactoryMap objFactoryMap_;
273 typedef std::list<ObjectFactory*> ObjectFactoryList;
274 ObjectFactoryList objectFactories_;
276 std::ostream& print(std::ostream&)
const;
286 #endif // HPP_MANIPULATION_PARSER_HH virtual void finishFile()
Called when parsing is finished.
Definition: parser.cc:160
std::string name() const
Definition: parser.cc:196
ObjectFactory(ObjectFactory *parent=NULL, const XMLElement *element=NULL)
Definition: parser.cc:137
T * as()
Cast this class to any child class.
Definition: parser.hh:183
virtual bool finishAttributes()
Definition: parser.cc:156
friend std::ostream & operator<<(std::ostream &, const Parser &)
Definition: parser.cc:129
void addObjectFactory(const std::string &tagname, FactoryType factory)
Definition: parser.cc:81
TiXmlText XMLText
Definition: parser.hh:48
Definition: assertion.hh:45
virtual void parseFile(const std::string &filename)
Definition: parser.cc:55
std::function< ObjectFactory *(ObjectFactory *, const XMLElement *)> FactoryType
Definition: parser.hh:239
virtual ObjectFactory * root()
Definition: parser.cc:204
bool hasParent() const
Definition: parser.cc:206
Class that catch XML Parser events for a specific tag and build the corresponding Object...
Definition: parser.hh:89
void addChild(ObjectFactory *child)
Definition: parser.cc:214
ObjectFactory * create(ObjectFactory *parent=NULL, const XMLElement *element=NULL)
Definition: parser.hh:226
const XMLElement * XMLelement()
Definition: parser.cc:208
void addAttribute(const std::string &name, const std::string &value)
Add an attribute.
Definition: parser.cc:174
TiXmlNode XMLNode
Definition: parser.hh:47
std::string getAttribute(const std::string &attr) const
Return a given attributes.
Definition: parser.cc:267
TiXmlAttribute XMLAttribute
Definition: parser.hh:46
virtual ~Parser()
Definition: parser.cc:41
ObjectFactory * parent()
Definition: parser.cc:202
virtual ~ObjectFactory()
Definition: parser.hh:95
void setAttribute(const XMLAttribute *attr)
Definition: parser.cc:247
TiXmlComment XMLComment
Definition: parser.hh:49
ObjectFactoryList getChildrenOfType(std::string type)
Get a list of ObjectFactory whose tag name is type.
Definition: parser.cc:218
TiXmlElement XMLElement
Definition: parser.hh:43
virtual void parse(const char *xmlString)
Definition: parser.cc:48
std::ostream & operator<<(std::ostream &, const ObjectFactory &)
Definition: parser.cc:133
std::string tagName() const
Definition: parser.cc:194
friend std::ostream & operator<<(std::ostream &, const ObjectFactory &)
Definition: parser.cc:133
Parser(FactoryType defaultFactory=create< ObjectFactory >)
Definition: parser.cc:38
TiXmlDocument XMLDocument
Definition: parser.hh:44
virtual std::ostream & print(std::ostream &os) const
Definition: parser.cc:237
XMLNode * write(XMLNode *node) const
Get a new XMLElement from the content of this factory.
Definition: parser.cc:180
TiXmlPrinter XMLPrinter
Definition: parser.hh:51
bool getChildOfType(std::string type, ObjectFactory *&o)
Definition: parser.cc:222
std::list< ObjectFactory * > ObjectFactoryList
Definition: parser.hh:91
Parse an XML document.
Definition: parser.hh:236
virtual void addTextChild(const XMLText *text)
Add Text child.
Definition: parser.cc:162
virtual bool init()
Definition: parser.cc:154
bool hasAttribute(const std::string &attr) const
Check if an attribute was set.
Definition: parser.cc:263
TiXmlDeclaration XMLDeclaration
Definition: parser.hh:45
virtual void impl_write(XMLElement *element) const
Definition: parser.cc:212
virtual void impl_setAttribute(const XMLAttribute *attr)
Definition: parser.cc:210
virtual void finishTags()
Called when all the child tags have been processed.
Definition: parser.cc:158
ObjectFactory * root() const
Definition: parser.cc:121