NDDEM
Public Member Functions | Private Member Functions | Private Attributes | List of all members
cereal::rapidxml::xml_node< Ch > Class Template Reference

#include <rapidxml.hpp>

+ Inheritance diagram for cereal::rapidxml::xml_node< Ch >:

Public Member Functions

 xml_node (node_type type_)
 
node_type type () const
 
xml_document< Ch > * document () const
 
xml_node< Ch > * first_node (const Ch *name_=0, std::size_t name_size_=0, bool case_sensitive=true) const
 
xml_node< Ch > * last_node (const Ch *name=0, std::size_t name_size=0, bool case_sensitive=true) const
 
xml_node< Ch > * previous_sibling (const Ch *name=0, std::size_t name_size=0, bool case_sensitive=true) const
 
xml_node< Ch > * next_sibling (const Ch *name_=0, std::size_t name_size_=0, bool case_sensitive=true) const
 
xml_attribute< Ch > * first_attribute (const Ch *name_=0, std::size_t name_size_=0, bool case_sensitive=true) const
 
xml_attribute< Ch > * last_attribute (const Ch *name=0, std::size_t name_size=0, bool case_sensitive=true) const
 
void type (node_type type_)
 
void prepend_node (xml_node< Ch > *child)
 
void append_node (xml_node< Ch > *child)
 
void insert_node (xml_node< Ch > *where, xml_node< Ch > *child)
 
void remove_first_node ()
 
void remove_last_node ()
 
void remove_node (xml_node< Ch > *where)
 Removes specified child from the node. More...
 
void remove_all_nodes ()
 Removes all child nodes (but not attributes). More...
 
void prepend_attribute (xml_attribute< Ch > *attribute)
 
void append_attribute (xml_attribute< Ch > *attribute)
 
void insert_attribute (xml_attribute< Ch > *where, xml_attribute< Ch > *attribute)
 
void remove_first_attribute ()
 
void remove_last_attribute ()
 
void remove_attribute (xml_attribute< Ch > *where)
 
void remove_all_attributes ()
 Removes all attributes of node. More...
 
- Public Member Functions inherited from cereal::rapidxml::xml_base< char >
 xml_base ()
 
char * name () const
 
void name (const char *name_, std::size_t size)
 
void name (const char *name_)
 
std::size_t name_size () const
 
char * value () const
 
void value (const char *value_, std::size_t size)
 
void value (const char *value_)
 
std::size_t value_size () const
 
xml_node< char > * parent () const
 

Private Member Functions

 xml_node (const xml_node &)
 
void operator= (const xml_node &)
 

Private Attributes

node_type m_type
 
xml_node< Ch > * m_first_node
 
xml_node< Ch > * m_last_node
 
xml_attribute< Ch > * m_first_attribute
 
xml_attribute< Ch > * m_last_attribute
 
xml_node< Ch > * m_prev_sibling
 
xml_node< Ch > * m_next_sibling
 

Additional Inherited Members

- Static Protected Member Functions inherited from cereal::rapidxml::xml_base< char >
static char * nullstr ()
 
- Protected Attributes inherited from cereal::rapidxml::xml_base< char >
char * m_name
 
char * m_value
 
std::size_t m_name_size
 
std::size_t m_value_size
 
xml_node< char > * m_parent
 

Detailed Description

template<class Ch = char>
class cereal::rapidxml::xml_node< Ch >

Class representing a node of XML document. Each node may have associated name and value strings, which are available through name() and value() functions. Interpretation of name and value depends on type of the node. Type of node can be determined by using type() function.

Note that after parse, both name and value of node, if any, will point interior of source text used for parsing. Thus, this text must persist in the memory for the lifetime of node.

Template Parameters
ChCharacter type to use.

Constructor & Destructor Documentation

◆ xml_node() [1/2]

template<class Ch = char>
cereal::rapidxml::xml_node< Ch >::xml_node ( node_type  type_)
inline

Constructs an empty node with the specified type. Consider using memory_pool of appropriate document to allocate nodes manually.

Parameters
type_Type of node to construct.

◆ xml_node() [2/2]

template<class Ch = char>
cereal::rapidxml::xml_node< Ch >::xml_node ( const xml_node< Ch > &  )
private

Member Function Documentation

◆ append_attribute()

template<class Ch = char>
void cereal::rapidxml::xml_node< Ch >::append_attribute ( xml_attribute< Ch > *  attribute)
inline

Appends a new attribute to the node.

Parameters
attributeAttribute to append.

◆ append_node()

template<class Ch = char>
void cereal::rapidxml::xml_node< Ch >::append_node ( xml_node< Ch > *  child)
inline

Appends a new child node. The appended child becomes the last child.

Parameters
childNode to append.

◆ document()

template<class Ch = char>
xml_document<Ch>* cereal::rapidxml::xml_node< Ch >::document ( ) const
inline

Gets document of which node is a child.

Returns
Pointer to document that contains this node, or 0 if there is no parent document.

◆ first_attribute()

template<class Ch = char>
xml_attribute<Ch>* cereal::rapidxml::xml_node< Ch >::first_attribute ( const Ch *  name_ = 0,
std::size_t  name_size_ = 0,
bool  case_sensitive = true 
) const
inline

Gets first attribute of node, optionally matching attribute name.

Parameters
name_Name of attribute to find, or 0 to return first attribute regardless of its name; this string doesn't have to be zero-terminated if name_size is non-zero
name_size_Size of name, in characters, or 0 to have size calculated automatically from string
case_sensitiveShould name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters
Returns
Pointer to found attribute, or 0 if not found.

◆ first_node()

template<class Ch = char>
xml_node<Ch>* cereal::rapidxml::xml_node< Ch >::first_node ( const Ch *  name_ = 0,
std::size_t  name_size_ = 0,
bool  case_sensitive = true 
) const
inline

Gets first child node, optionally matching node name.

Parameters
name_Name of child to find, or 0 to return first child regardless of its name; this string doesn't have to be zero-terminated if name_size is non-zero
name_size_Size of name, in characters, or 0 to have size calculated automatically from string
case_sensitiveShould name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters
Returns
Pointer to found child, or 0 if not found.

◆ insert_attribute()

template<class Ch = char>
void cereal::rapidxml::xml_node< Ch >::insert_attribute ( xml_attribute< Ch > *  where,
xml_attribute< Ch > *  attribute 
)
inline

Inserts a new attribute at specified place inside the node. All attributes after and including the specified attribute are moved one position back.

Parameters
wherePlace where to insert the attribute, or 0 to insert at the back.
attributeAttribute to insert.

◆ insert_node()

template<class Ch = char>
void cereal::rapidxml::xml_node< Ch >::insert_node ( xml_node< Ch > *  where,
xml_node< Ch > *  child 
)
inline

Inserts a new child node at specified place inside the node. All children after and including the specified node are moved one position back.

Parameters
wherePlace where to insert the child, or 0 to insert at the back.
childNode to insert.

◆ last_attribute()

template<class Ch = char>
xml_attribute<Ch>* cereal::rapidxml::xml_node< Ch >::last_attribute ( const Ch *  name = 0,
std::size_t  name_size = 0,
bool  case_sensitive = true 
) const
inline

Gets last attribute of node, optionally matching attribute name.

Parameters
nameName of attribute to find, or 0 to return last attribute regardless of its name; this string doesn't have to be zero-terminated if name_size is non-zero
name_sizeSize of name, in characters, or 0 to have size calculated automatically from string
case_sensitiveShould name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters
Returns
Pointer to found attribute, or 0 if not found.

◆ last_node()

template<class Ch = char>
xml_node<Ch>* cereal::rapidxml::xml_node< Ch >::last_node ( const Ch *  name = 0,
std::size_t  name_size = 0,
bool  case_sensitive = true 
) const
inline

Gets last child node, optionally matching node name. Behaviour is undefined if node has no children. Use first_node() to test if node has children.

Parameters
nameName of child to find, or 0 to return last child regardless of its name; this string doesn't have to be zero-terminated if name_size is non-zero
name_sizeSize of name, in characters, or 0 to have size calculated automatically from string
case_sensitiveShould name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters
Returns
Pointer to found child, or 0 if not found.

◆ next_sibling()

template<class Ch = char>
xml_node<Ch>* cereal::rapidxml::xml_node< Ch >::next_sibling ( const Ch *  name_ = 0,
std::size_t  name_size_ = 0,
bool  case_sensitive = true 
) const
inline

Gets next sibling node, optionally matching node name. Behaviour is undefined if node has no parent. Use parent() to test if node has a parent.

Parameters
name_Name of sibling to find, or 0 to return next sibling regardless of its name; this string doesn't have to be zero-terminated if name_size is non-zero
name_size_Size of name, in characters, or 0 to have size calculated automatically from string
case_sensitiveShould name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters
Returns
Pointer to found sibling, or 0 if not found.

◆ operator=()

template<class Ch = char>
void cereal::rapidxml::xml_node< Ch >::operator= ( const xml_node< Ch > &  )
private

◆ prepend_attribute()

template<class Ch = char>
void cereal::rapidxml::xml_node< Ch >::prepend_attribute ( xml_attribute< Ch > *  attribute)
inline

Prepends a new attribute to the node.

Parameters
attributeAttribute to prepend.

◆ prepend_node()

template<class Ch = char>
void cereal::rapidxml::xml_node< Ch >::prepend_node ( xml_node< Ch > *  child)
inline

Prepends a new child node. The prepended child becomes the first child, and all existing children are moved one position back.

Parameters
childNode to prepend.

◆ previous_sibling()

template<class Ch = char>
xml_node<Ch>* cereal::rapidxml::xml_node< Ch >::previous_sibling ( const Ch *  name = 0,
std::size_t  name_size = 0,
bool  case_sensitive = true 
) const
inline

Gets previous sibling node, optionally matching node name. Behaviour is undefined if node has no parent. Use parent() to test if node has a parent.

Parameters
nameName of sibling to find, or 0 to return previous sibling regardless of its name; this string doesn't have to be zero-terminated if name_size is non-zero
name_sizeSize of name, in characters, or 0 to have size calculated automatically from string
case_sensitiveShould name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters
Returns
Pointer to found sibling, or 0 if not found.

◆ remove_all_attributes()

template<class Ch = char>
void cereal::rapidxml::xml_node< Ch >::remove_all_attributes ( )
inline

Removes all attributes of node.

◆ remove_all_nodes()

template<class Ch = char>
void cereal::rapidxml::xml_node< Ch >::remove_all_nodes ( )
inline

Removes all child nodes (but not attributes).

◆ remove_attribute()

template<class Ch = char>
void cereal::rapidxml::xml_node< Ch >::remove_attribute ( xml_attribute< Ch > *  where)
inline

Removes specified attribute from node.

Parameters
wherePointer to attribute to be removed.

◆ remove_first_attribute()

template<class Ch = char>
void cereal::rapidxml::xml_node< Ch >::remove_first_attribute ( )
inline

Removes first attribute of the node. If node has no attributes, behaviour is undefined. Use first_attribute() to test if node has attributes.

◆ remove_first_node()

template<class Ch = char>
void cereal::rapidxml::xml_node< Ch >::remove_first_node ( )
inline

Removes first child node. If node has no children, behaviour is undefined. Use first_node() to test if node has children.

◆ remove_last_attribute()

template<class Ch = char>
void cereal::rapidxml::xml_node< Ch >::remove_last_attribute ( )
inline

Removes last attribute of the node. If node has no attributes, behaviour is undefined. Use first_attribute() to test if node has attributes.

◆ remove_last_node()

template<class Ch = char>
void cereal::rapidxml::xml_node< Ch >::remove_last_node ( )
inline

Removes last child of the node. If node has no children, behaviour is undefined. Use first_node() to test if node has children.

◆ remove_node()

template<class Ch = char>
void cereal::rapidxml::xml_node< Ch >::remove_node ( xml_node< Ch > *  where)
inline

Removes specified child from the node.

◆ type() [1/2]

template<class Ch = char>
node_type cereal::rapidxml::xml_node< Ch >::type ( ) const
inline

Gets type of node.

Returns
Type of node.

◆ type() [2/2]

template<class Ch = char>
void cereal::rapidxml::xml_node< Ch >::type ( node_type  type_)
inline

Sets type of node.

Parameters
type_Type of node to set.

Member Data Documentation

◆ m_first_attribute

template<class Ch = char>
xml_attribute<Ch>* cereal::rapidxml::xml_node< Ch >::m_first_attribute
private

◆ m_first_node

template<class Ch = char>
xml_node<Ch>* cereal::rapidxml::xml_node< Ch >::m_first_node
private

◆ m_last_attribute

template<class Ch = char>
xml_attribute<Ch>* cereal::rapidxml::xml_node< Ch >::m_last_attribute
private

◆ m_last_node

template<class Ch = char>
xml_node<Ch>* cereal::rapidxml::xml_node< Ch >::m_last_node
private

◆ m_next_sibling

template<class Ch = char>
xml_node<Ch>* cereal::rapidxml::xml_node< Ch >::m_next_sibling
private

◆ m_prev_sibling

template<class Ch = char>
xml_node<Ch>* cereal::rapidxml::xml_node< Ch >::m_prev_sibling
private

◆ m_type

template<class Ch = char>
node_type cereal::rapidxml::xml_node< Ch >::m_type
private

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