hpp::manipulation::parser::ObjectFactory Class Reference

Class that catch XML Parser events for a specific tag and build the corresponding Object. More...

#include <hpp/manipulation/parser/parser.hh>

Inheritance diagram for hpp::manipulation::parser::ObjectFactory:
[legend]

Public Types

typedef std::vector< ObjectFactory * > ObjectFactoryList
 

Public Member Functions

 ObjectFactory (ObjectFactory *parent=NULL, const XMLElement *element=NULL)
 
virtual ~ObjectFactory ()
 
void name (const std::string &n)
 Set the name. More...
 
void name (const char *n)
 See name(const std::string&) More...
 
template<typename T >
T * as ()
 Cast this class to any child class. More...
 
Events
virtual bool init ()
 Called when the object is created. More...
 
void setAttribute (const XMLAttribute *attr)
 Called for each attribute. More...
 
virtual void addTextChild (const XMLText *text)
 Add Text child. More...
 
virtual bool finishAttributes ()
 Called when all the attributes have been processed. More...
 
virtual void finishTags ()
 Called when all the child tags have been processed. More...
 
virtual void finishFile ()
 Called when parsing is finished. More...
 
Accessors
std::string tagName () const
 Return tag name of the element is any. More...
 
std::string name () const
 Return the content of the attribute name, or an empty string. More...
 
bool hasAttribute (const std::string &attr) const
 Check if an attribute was set. More...
 
std::string getAttribute (const std::string &attr) const
 Return a given attributes. More...
 
ObjectFactoryList getChildrenOfType (std::string type)
 Get a list of ObjectFactory whose tag name is type. More...
 
bool getChildOfType (std::string type, ObjectFactory *&o)
 Get the ObjectFactory whose tag name is type. More...
 

Protected Member Functions

 ObjectFactory (RootFactory *root)
 
ObjectFactoryparent ()
 
RootFactoryroot ()
 
bool hasParent () const
 
const XMLElementXMLelement ()
 
virtual void impl_setAttribute (const XMLAttribute *attr)
 
void addChild (ObjectFactory *child)
 
virtual std::ostream & print (std::ostream &os) const
 

Friends

std::ostream & operator<< (std::ostream &, const ObjectFactory &)
 

Detailed Description

Class that catch XML Parser events for a specific tag and build the corresponding Object.

Derive this class if you wish to extend the Parser. The event callbacks are called in the following order:

Note
The derived class must have the following construtor
DerivedFactory (ObjectFactory* parent, const XMLElement* element) :
ObjectFactory (parent, element)
{
/*
* Keep in mind that it might be more convenient
* to build objects in an event callback, when some information
* has already been parsed.
*/
}

Member Typedef Documentation

◆ ObjectFactoryList

Constructor & Destructor Documentation

◆ ObjectFactory() [1/2]

hpp::manipulation::parser::ObjectFactory::ObjectFactory ( ObjectFactory parent = NULL,
const XMLElement element = NULL 
)

Referenced by as().

◆ ~ObjectFactory()

virtual hpp::manipulation::parser::ObjectFactory::~ObjectFactory ( )
inlinevirtual

◆ ObjectFactory() [2/2]

hpp::manipulation::parser::ObjectFactory::ObjectFactory ( RootFactory root)
protected

Member Function Documentation

◆ addChild()

void hpp::manipulation::parser::ObjectFactory::addChild ( ObjectFactory child)
protected

Referenced by as().

◆ addTextChild()

virtual void hpp::manipulation::parser::ObjectFactory::addTextChild ( const XMLText text)
virtual

◆ as()

template<typename T >
T* hpp::manipulation::parser::ObjectFactory::as ( )
inline

Cast this class to any child class.

References addChild(), hasParent(), impl_setAttribute(), ObjectFactory(), operator<<, parent(), print(), root(), tagName(), and XMLelement().

◆ finishAttributes()

virtual bool hpp::manipulation::parser::ObjectFactory::finishAttributes ( )
virtual

Called when all the attributes have been processed.

Returns
True to continue parsing this tag, False otherwise.

Reimplemented in hpp::manipulation::srdf::RobotFactory.

Referenced by ~ObjectFactory().

◆ finishFile()

virtual void hpp::manipulation::parser::ObjectFactory::finishFile ( )
virtual

Called when parsing is finished.

Referenced by ~ObjectFactory().

◆ finishTags()

virtual void hpp::manipulation::parser::ObjectFactory::finishTags ( )
virtual

◆ getAttribute()

std::string hpp::manipulation::parser::ObjectFactory::getAttribute ( const std::string &  attr) const

Return a given attributes.

Referenced by ~ObjectFactory().

◆ getChildOfType()

bool hpp::manipulation::parser::ObjectFactory::getChildOfType ( std::string  type,
ObjectFactory *&  o 
)

Get the ObjectFactory whose tag name is type.

Parameters
[out]oSet to the first element of the requested type.
Returns
true if there was only element of the requested type. false if there are more than one.
Exceptions
std::invalid_argumentif no ObjectFactory of the requested type exists.

Referenced by ~ObjectFactory().

◆ getChildrenOfType()

ObjectFactoryList hpp::manipulation::parser::ObjectFactory::getChildrenOfType ( std::string  type)

Get a list of ObjectFactory whose tag name is type.

Referenced by ~ObjectFactory().

◆ hasAttribute()

bool hpp::manipulation::parser::ObjectFactory::hasAttribute ( const std::string &  attr) const

Check if an attribute was set.

Referenced by ~ObjectFactory().

◆ hasParent()

bool hpp::manipulation::parser::ObjectFactory::hasParent ( ) const
protected

Referenced by as().

◆ impl_setAttribute()

virtual void hpp::manipulation::parser::ObjectFactory::impl_setAttribute ( const XMLAttribute attr)
protectedvirtual

Referenced by as().

◆ init()

virtual bool hpp::manipulation::parser::ObjectFactory::init ( )
virtual

Called when the object is created.

Returns
True to continue parsing this tag, False otherwise.

Reimplemented in hpp::manipulation::parser::IgnoreTagFactory.

Referenced by ~ObjectFactory().

◆ name() [1/3]

std::string hpp::manipulation::parser::ObjectFactory::name ( ) const

Return the content of the attribute name, or an empty string.

Referenced by ~ObjectFactory().

◆ name() [2/3]

void hpp::manipulation::parser::ObjectFactory::name ( const std::string &  n)

Set the name.

The default value is the value of the attribute "name" of the XML tag or an empty string if this does not exist.

◆ name() [3/3]

void hpp::manipulation::parser::ObjectFactory::name ( const char *  n)

◆ parent()

ObjectFactory* hpp::manipulation::parser::ObjectFactory::parent ( )
protected

◆ print()

virtual std::ostream& hpp::manipulation::parser::ObjectFactory::print ( std::ostream &  os) const
protectedvirtual

◆ root()

RootFactory* hpp::manipulation::parser::ObjectFactory::root ( )
protected

Referenced by as().

◆ setAttribute()

void hpp::manipulation::parser::ObjectFactory::setAttribute ( const XMLAttribute attr)

Called for each attribute.

A few reserved name are automatocally catched. The reserved names are "name" and "id". "name" expects a string. "id" expects an unsigned integer and can be use to define pointers to elements.

Referenced by ~ObjectFactory().

◆ tagName()

std::string hpp::manipulation::parser::ObjectFactory::tagName ( ) const

Return tag name of the element is any.

Returns "No element" otherwise.

Referenced by as(), and ~ObjectFactory().

◆ XMLelement()

const XMLElement* hpp::manipulation::parser::ObjectFactory::XMLelement ( )
protected

Referenced by as().

Friends And Related Function Documentation

◆ operator<<

std::ostream& operator<< ( std::ostream &  ,
const ObjectFactory  
)
friend