ucommon::treemap< T > Class Template Reference

Embed data objects into a tree structured memory database. More...

#include <linked.h>

Inheritance diagram for ucommon::treemap< T >:

Inheritance graph
[legend]
Collaboration diagram for ucommon::treemap< T >:

Collaboration graph
[legend]

Public Member Functions

treemapfind (char *name)
 Find a subnode from our node by name.
T & get (void)
 Return the typed value of this node.
treemapgetChild (char *name)
 Get direct typed child node of our node of specified name.
T & getData (void)
 Get the data value of a data based value tree.
treemapgetFirst (void)
 Get first child of our node.
treemapgetIndexed (unsigned index)
 Get child member node by index.
treemapgetLeaf (char *name)
 Find a direct typed leaf node on our node.
treemapgetParent (void)
 Get the typed parent node for our node.
getPointer (void)
 Get the pointer of a pointer based value tree.
getValue (char *name)
 Get the value pointer of a leaf node of a pointer tree.
bool is_attribute (void)
 Test if this node is a leaf node for a tree pointer table.
treemapleaf (char *name)
 Search for a leaf node of our node.
T & operator * ()
 Return typed value of this node by pointer reference.
void operator= (T &data)
 Assign the value of our node.
treemappath (char *path)
 Find a subnode by pathname.
void set (T &reference)
 Set the value of a data based value tree.
void setPointer (T pointer)
 Set the pointer of a pointer based value tree.
 treemap (treemap *parent, char *name, T &reference)
 Construct a child node on an existing tree and assign it's value.
 treemap (treemap *parent, char *name)
 Construct a child node on an existing tree.
 treemap (treemap &source)
 Construct a copy of the treemap object.
 treemap (char *name=((void *) 0))
 Construct a typed root node for the tree.

Static Public Member Functions

static T getPointer (treemap *node)
 Return value from tree element when value is a pointer.

Protected Attributes

value

Detailed Description

template<typename T>
class ucommon::treemap< T >

Embed data objects into a tree structured memory database.

This can be used to form XML document trees or other data structures that can be organized in trees. The NamedTree class is used to manage the structure of the tree, and the type specified is embedded as a data value object which can be manipulated. Name identifiers are assumed to be dynamically allocated if tree node elements are deletable.

Embedded values can either be of direct types that are then stored as part of the template object, or of class types that are data pointers. The latter might be used for trees that contain data which might be parsed dynamically from a document and/or saved on a heap. Pointer trees assume that NULL pointers are for nodes that are empty, and that NULL data value nodes with children are trunk nodes. Generally data values are then allocated with a pointer stored in pure leaf nodes.

Author:
David Sugar <dyfet@gnutelephony.org>

Definition at line 1553 of file linked.h.


Constructor & Destructor Documentation

template<typename T>
ucommon::treemap< T >::treemap ( char *  name = ((void*)0)  )  [inline]

Construct a typed root node for the tree.

The root node may be named as a stand-alone node or unnamed.

Parameters:
name of the node we are creating.

Definition at line 1564 of file linked.h.

template<typename T>
ucommon::treemap< T >::treemap ( treemap< T > &  source  )  [inline]

Construct a copy of the treemap object.

Parameters:
source of copy for new object.

Definition at line 1570 of file linked.h.

References ucommon::treemap< T >::value.

template<typename T>
ucommon::treemap< T >::treemap ( treemap< T > *  parent,
char *  name 
) [inline]

Construct a child node on an existing tree.

Parameters:
parent of this node to attach.
name of this node.

Definition at line 1578 of file linked.h.

template<typename T>
ucommon::treemap< T >::treemap ( treemap< T > *  parent,
char *  name,
T &  reference 
) [inline]

Construct a child node on an existing tree and assign it's value.

Parameters:
parent of this node to attach.
name of this node.
reference to value to assign to this node.

Definition at line 1586 of file linked.h.


Member Function Documentation

template<typename T>
treemap* ucommon::treemap< T >::find ( char *  name  )  [inline]

Find a subnode from our node by name.

This performs a recursive search.

Parameters:
name to search for.
Returns:
typed node that is found or NULL if none is found.

Reimplemented from ucommon::NamedTree.

Definition at line 1702 of file linked.h.

template<typename T>
T& ucommon::treemap< T >::get ( void   )  [inline]

Return the typed value of this node.

Returns:
reference to value of node.

Definition at line 1593 of file linked.h.

template<typename T>
treemap* ucommon::treemap< T >::getChild ( char *  name  )  [inline]

Get direct typed child node of our node of specified name.

This does not perform a recursive search.

Parameters:
name of child node.
Returns:
typed child node pointer or NULL if not found.

Reimplemented from ucommon::NamedTree.

Definition at line 1674 of file linked.h.

template<typename T>
T& ucommon::treemap< T >::getData ( void   )  [inline]

Get the data value of a data based value tree.

Returns:
data value of node.

Definition at line 1629 of file linked.h.

template<typename T>
treemap* ucommon::treemap< T >::getFirst ( void   )  [inline]

Get first child of our node.

This is useful for iterating children.

Returns:
first child or NULL.

Reimplemented from ucommon::NamedTree.

Definition at line 1727 of file linked.h.

template<typename T>
treemap* ucommon::treemap< T >::getIndexed ( unsigned  index  )  [inline]

Get child member node by index.

Parameters:
index of child member.
Returns:
node or NULL if past end.

Reimplemented from ucommon::NamedTree.

Definition at line 1658 of file linked.h.

template<typename T>
treemap* ucommon::treemap< T >::getLeaf ( char *  name  )  [inline]

Find a direct typed leaf node on our node.

A leaf node is a node that has no children of it's own. This does not perform a recursive search.

Parameters:
name of leaf child node to find.
Returns:
typed leaf node object of leaf or NULL.

Reimplemented from ucommon::NamedTree.

Definition at line 1683 of file linked.h.

template<typename T>
treemap* ucommon::treemap< T >::getParent ( void   )  [inline]

Get the typed parent node for our node.

Returns:
parent node or NULL if root of tree.

Reimplemented from ucommon::NamedTree.

Definition at line 1665 of file linked.h.

template<typename T>
T ucommon::treemap< T >::getPointer ( void   )  [inline]

Get the pointer of a pointer based value tree.

Returns:
value pointer of node.

Definition at line 1622 of file linked.h.

template<typename T>
static T ucommon::treemap< T >::getPointer ( treemap< T > *  node  )  [inline, static]

Return value from tree element when value is a pointer.

Parameters:
node in our typed tree.
Returns:
value of node.

Definition at line 1608 of file linked.h.

References ucommon::treemap< T >::value.

template<typename T>
T ucommon::treemap< T >::getValue ( char *  name  )  [inline]

Get the value pointer of a leaf node of a pointer tree.

This allows one to find a leaf node and return it's pointer value in a single operation.

Parameters:
name of leaf node.
Returns:
value of leaf pointer if found and contains value, or NULL.

Definition at line 1693 of file linked.h.

template<typename T>
bool ucommon::treemap< T >::is_attribute ( void   )  [inline]

Test if this node is a leaf node for a tree pointer table.

Returns:
true if value pointer is not NULL and there are no children.

Definition at line 1615 of file linked.h.

template<typename T>
treemap* ucommon::treemap< T >::leaf ( char *  name  )  [inline]

Search for a leaf node of our node.

This performs a recursive search.

Parameters:
name to search for.
Returns:
typed not that is found or NULL if none is found.

Reimplemented from ucommon::NamedTree.

Definition at line 1720 of file linked.h.

template<typename T>
T& ucommon::treemap< T >::operator * (  )  [inline]

Return typed value of this node by pointer reference.

Returns:
value of node.

Definition at line 1600 of file linked.h.

template<typename T>
void ucommon::treemap< T >::operator= ( T &  data  )  [inline]

Assign the value of our node.

Parameters:
data value to assign.

Definition at line 1650 of file linked.h.

template<typename T>
treemap* ucommon::treemap< T >::path ( char *  path  )  [inline]

Find a subnode by pathname.

This is the same as the NamedTree path member function.

Parameters:
path name to search for node.
Returns:
typed node that is found at path or NULL.

Reimplemented from ucommon::NamedTree.

Definition at line 1711 of file linked.h.

template<typename T>
void ucommon::treemap< T >::set ( T &  reference  )  [inline]

Set the value of a data based value tree.

Parameters:
reference to value to copy into node.

Definition at line 1643 of file linked.h.

template<typename T>
void ucommon::treemap< T >::setPointer ( pointer  )  [inline]

Set the pointer of a pointer based value tree.

Parameters:
pointer to set.

Definition at line 1636 of file linked.h.


The documentation for this class was generated from the following file:
Generated on 14 Aug 2013 for UCommon by  doxygen 1.4.7