ucc::treemap< T > Class Template Reference

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

#include <linked.h>

Inheritance diagram for ucc::treemap< T >:

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

Collaboration graph
[legend]

Public Member Functions

treemapfind (const char *name) const
 Find a subnode from our node by name.
const T & get (void) const
 Return the typed value of this node.
treemapgetChild (const char *name) const
 Get direct typed child node of our node of specified name.
const T & getData (void) const
 Get the data value of a data based value tree.
treemapgetFirst (void) const
 Get first child of our node.
treemapgetIndexed (unsigned index) const
 Get child member node by index.
treemapgetLeaf (const char *name) const
 Find a direct typed leaf node on our node.
treemapgetParent (void) const
 Get the typed parent node for our node.
const T getPointer (void) const
 Get the pointer of a pointer based value tree.
getValue (const char *name) const
 Get the value pointer of a leaf node of a pointer tree.
bool isAttribute (void) const
 Test if this node is a leaf node for a tree pointer table.
treemapleaf (const char *name) const
 Search for a leaf node of our node.
const T & operator* () const
 Return typed value of this node by pointer reference.
void operator= (const T &data)
 Assign the value of our node.
treemappath (const char *path) const
 Find a subnode by pathname.
void set (const T &reference)
 Set the value of a data based value tree.
void setPointer (const 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 (const treemap &source)
 Construct a copy of the treemap object.
 treemap (char *name=NULL)
 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 ucc::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 1538 of file linked.h.


Constructor & Destructor Documentation

template<typename T>
ucc::treemap< T >::treemap ( char *  name = NULL  )  [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 1549 of file linked.h.

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

Construct a copy of the treemap object.

Parameters:
source of copy for new object.

Definition at line 1555 of file linked.h.

template<typename T>
ucc::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 1563 of file linked.h.

template<typename T>
ucc::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 1571 of file linked.h.


Member Function Documentation

template<typename T>
treemap* ucc::treemap< T >::find ( const char *  name  )  const [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 ucc::NamedTree.

Definition at line 1687 of file linked.h.

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

Return the typed value of this node.

Returns:
reference to value of node.

Definition at line 1578 of file linked.h.

template<typename T>
treemap* ucc::treemap< T >::getChild ( const char *  name  )  const [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 ucc::NamedTree.

Definition at line 1659 of file linked.h.

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

Get the data value of a data based value tree.

Returns:
data value of node.

Definition at line 1614 of file linked.h.

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

Get first child of our node.

This is useful for iterating children.

Returns:
first child or NULL.

Reimplemented from ucc::NamedTree.

Definition at line 1712 of file linked.h.

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

Get child member node by index.

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

Reimplemented from ucc::NamedTree.

Definition at line 1643 of file linked.h.

template<typename T>
treemap* ucc::treemap< T >::getLeaf ( const char *  name  )  const [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 ucc::NamedTree.

Definition at line 1668 of file linked.h.

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

Get the typed parent node for our node.

Returns:
parent node or NULL if root of tree.

Reimplemented from ucc::NamedTree.

Definition at line 1650 of file linked.h.

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

Get the pointer of a pointer based value tree.

Returns:
value pointer of node.

Definition at line 1607 of file linked.h.

template<typename T>
static T ucc::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 1593 of file linked.h.

template<typename T>
T ucc::treemap< T >::getValue ( const char *  name  )  const [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 1678 of file linked.h.

template<typename T>
bool ucc::treemap< T >::isAttribute ( void   )  const [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 1600 of file linked.h.

template<typename T>
treemap* ucc::treemap< T >::leaf ( const char *  name  )  const [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 ucc::NamedTree.

Definition at line 1705 of file linked.h.

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

Return typed value of this node by pointer reference.

Returns:
value of node.

Definition at line 1585 of file linked.h.

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

Assign the value of our node.

Parameters:
data value to assign.

Definition at line 1635 of file linked.h.

template<typename T>
treemap* ucc::treemap< T >::path ( const char *  path  )  const [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 ucc::NamedTree.

Definition at line 1696 of file linked.h.

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

Set the value of a data based value tree.

Parameters:
reference to value to copy into node.

Definition at line 1628 of file linked.h.

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

Set the pointer of a pointer based value tree.

Parameters:
pointer to set.

Definition at line 1621 of file linked.h.


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

Generated on Tue May 17 12:15:48 2011 for UCommon by  doxygen 1.5.6