DCMTK  Version 3.6.5
OFFIS DICOM Toolkit
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
DSRTreeNodeCursor< T > Class Template Reference

Class implementing a tree node cursor. More...

+ Inheritance diagram for DSRTreeNodeCursor< T >:

Public Member Functions

 DSRTreeNodeCursor ()
 default constructor
 
 DSRTreeNodeCursor (const DSRTreeNodeCursor< T > &cursor)
 copy constructor More...
 
 DSRTreeNodeCursor (T *node, const DSRPositionCounter *position=NULL)
 constructor. More...
 
virtual ~DSRTreeNodeCursor ()
 destructor
 
DSRTreeNodeCursor< T > & operator= (const DSRTreeNodeCursor< T > &cursor)
 assignment operator More...
 
DSRTreeNodeCursor< T > & operator= (T *node)
 assignment operator. More...
 
virtual void clear ()
 clear all member variables. More...
 
virtual OFBool isValid () const
 check whether cursor currently points to a valid node More...
 
virtual size_t countChildNodes (const OFBool searchIntoSub=OFTrue) const
 count number of children of the current node. More...
 
OFBool hasParentNode () const
 check whether the current node has a parent More...
 
OFBool hasChildNodes () const
 check whether the current node has any children More...
 
OFBool hasPreviousNode () const
 check whether the current node has a preceding sibling More...
 
OFBool hasNextNode () const
 check whether the current node has a following sibling More...
 
OFBool hasSiblingNodes () const
 check whether the current node has any siblings More...
 
virtual T * getNode () const
 get pointer to current node More...
 
virtual const T * getParentNode () const
 get pointer to parent node. More...
 
virtual const T * getChildNode () const
 get pointer to first child node. More...
 
virtual const T * getPreviousNode () const
 get pointer to previous node. More...
 
virtual const T * getNextNode () const
 get pointer to next node. More...
 
virtual size_t gotoFirst ()
 goto first node on the same level (first sibling). More...
 
virtual size_t gotoLast ()
 goto last node on the same level (last sibling). More...
 
virtual size_t gotoPrevious ()
 goto previous node on the same level (preceding sibling) More...
 
virtual size_t gotoNext ()
 goto next node on the same level (following sibling) More...
 
virtual size_t goUp ()
 goto parent node (one level up) More...
 
virtual size_t goDown ()
 goto first child node (one level down) More...
 
virtual size_t gotoParent ()
 goto parent node (one level up) More...
 
virtual size_t gotoChild ()
 goto first child node (one level down) More...
 
virtual size_t iterate (const OFBool searchIntoSub=OFTrue)
 iterate over all nodes (starting from current position!) More...
 
size_t gotoNode (const size_t searchID)
 set cursor to specified node. More...
 
size_t gotoNode (const OFString &position, const char separator='.')
 set cursor to specified node. More...
 
size_t gotoNode (const DSRTreeNodeAnnotation &annotation)
 set cursor to specified node. More...
 
size_t gotoNode (const T &nodeValue)
 set cursor to specified node. More...
 
size_t getNodeID () const
 get current node ID. More...
 
size_t getLevel () const
 get current level. More...
 
DSRPositionCountergetPositionCounter ()
 get reference to internal position counter. More...
 
const OFStringgetPosition (OFString &position, const char separator='.') const
 get position string of the current node. More...
 

Protected Member Functions

void swap (DSRTreeNodeCursor< T > &cursor)
 fast, non-throwing swap function. More...
 
void clearNodeCursorStack ()
 clear the internal node cursor stack
 
const DSRTreeNodeCursor< T > & getCursor () const
 get cursor More...
 
void setCursor (const DSRTreeNodeCursor< T > &cursor)
 set cursor to specified object More...
 
size_t setCursor (T *node)
 set cursor to specified node. More...
 
T * getChild () const
 get pointer to first child node More...
 

Protected Attributes

T * NodeCursor
 pointer to current node
 
OFStack< T * > NodeCursorStack
 stack of node pointers. Used to store the cursor position of upper levels.
 
DSRPositionCounter Position
 counter for the current position within the current level and on upper levels
 

Detailed Description

template<typename T = DSRTreeNode>
class DSRTreeNodeCursor< T >

Class implementing a tree node cursor.

Template Parameters
Ttemplate type used for the tree node pointers

Constructor & Destructor Documentation

◆ DSRTreeNodeCursor() [1/2]

template<typename T>
DSRTreeNodeCursor< T >::DSRTreeNodeCursor ( const DSRTreeNodeCursor< T > &  cursor)

copy constructor

Parameters
cursorobject to be copied

◆ DSRTreeNodeCursor() [2/2]

template<typename T>
DSRTreeNodeCursor< T >::DSRTreeNodeCursor ( T *  node,
const DSRPositionCounter position = NULL 
)

constructor.

See comments on setCursor(T*) method.

Parameters
nodepointer to tree node used to initialize the cursor
positionoptional pointer to position counter that should be used to initialize the internal counter

Member Function Documentation

◆ clear()

template<typename T >
void DSRTreeNodeCursor< T >::clear ( )
virtual

◆ countChildNodes()

template<typename T >
size_t DSRTreeNodeCursor< T >::countChildNodes ( const OFBool  searchIntoSub = OFTrue) const
virtual

count number of children of the current node.

This method iterates over all children of the current node, either on all sub-levels or on the first child level only.

Parameters
searchIntoSubflag indicating whether to search into sub-trees ("deep search") or on the first child level only
Returns
number of children of the current node, 0 if none

Reimplemented in DSRIncludedTemplateNodeCursor.

◆ getChild()

template<typename T >
T * DSRTreeNodeCursor< T >::getChild ( ) const
protected

get pointer to first child node

Returns
pointer to first child node (if any), NULL otherwise

◆ getChildNode()

template<typename T >
const T * DSRTreeNodeCursor< T >::getChildNode ( ) const
virtual

get pointer to first child node.

Can be used to have a lookup to the first child node without changing the cursor.

Returns
pointer to first child node (if any), NULL otherwise

Reimplemented in DSRIncludedTemplateNodeCursor.

◆ getCursor()

template<typename T >
const DSRTreeNodeCursor< T > & DSRTreeNodeCursor< T >::getCursor ( ) const
inlineprotected

get cursor

Returns
reference to cursor (this object)

◆ getLevel()

template<typename T >
size_t DSRTreeNodeCursor< T >::getLevel ( ) const
inline

get current level.

The level starts with 1 for the root node, then 2 for its child nodes, etc.

Returns
number of the current level if valid, 0 otherwise

◆ getNextNode()

template<typename T >
const T * DSRTreeNodeCursor< T >::getNextNode ( ) const
virtual

get pointer to next node.

Can be used to have a lookup to the next node without changing the cursor.

Returns
pointer to next node (if any), NULL otherwise

◆ getNode()

template<typename T >
T * DSRTreeNodeCursor< T >::getNode ( ) const
virtual

get pointer to current node

Returns
pointer to current node (might be NULL)

Reimplemented in DSRDocumentSubTree.

Referenced by DSRTree< DSRDocumentTreeNode >::clearAnnotations(), and DSRTree< DSRDocumentTreeNode >::DSRTree().

◆ getNodeID()

template<typename T >
size_t DSRTreeNodeCursor< T >::getNodeID ( ) const
inline

get current node ID.

The node ID uniquely identifies a content item in the document tree. Most of the navigation methods above do return this ID too.

Returns
ID of the current node if valid, 0 otherwise

◆ getParentNode()

template<typename T >
const T * DSRTreeNodeCursor< T >::getParentNode ( ) const
virtual

get pointer to parent node.

Can be used to have a lookup to the parent node without changing the cursor.

Returns
pointer to parent node (if any), NULL otherwise

◆ getPosition()

template<typename T >
const OFString & DSRTreeNodeCursor< T >::getPosition ( OFString position,
const char  separator = '.' 
) const
inline

get position string of the current node.

Specifies the position of each node by means of a dot separated string of position counters. The first figure of this string specifies the position within the first level (e.g. "1"), the second one the position in the second level (e.g. "2"), the third one the position in the third level (e.g. "3"), etc. A position string of "1.2.3" would, therefore, point to the third child of the second child of the first node.

Parameters
positionvariable where the position string should be stored
separatorcharacter used to separate the figures (default: '.')
Returns
reference to the resulting position string (empty if invalid)

◆ getPositionCounter()

template<typename T >
DSRPositionCounter & DSRTreeNodeCursor< T >::getPositionCounter ( )
inline

get reference to internal position counter.

Please note that this method allows for manipulating the internal position counter, so handle with care!

Returns
reference to internal position counter

◆ getPreviousNode()

template<typename T >
const T * DSRTreeNodeCursor< T >::getPreviousNode ( ) const
virtual

get pointer to previous node.

Can be used to have a lookup to the previous node without changing the cursor.

Returns
pointer to previous node (if any), NULL otherwise

◆ goDown()

template<typename T >
size_t DSRTreeNodeCursor< T >::goDown ( )
virtual

goto first child node (one level down)

Returns
ID of the first child node if successful, 0 otherwise

Reimplemented in DSRIncludedTemplateNodeCursor.

◆ gotoChild()

template<typename T >
size_t DSRTreeNodeCursor< T >::gotoChild ( )
virtual

goto first child node (one level down)

Returns
ID of the first child node if successful, 0 otherwise

◆ gotoFirst()

template<typename T >
size_t DSRTreeNodeCursor< T >::gotoFirst ( )
virtual

goto first node on the same level (first sibling).

Please note that the first node might be identical to the current node.

Returns
ID of the first node if successful, 0 otherwise

◆ gotoLast()

template<typename T >
size_t DSRTreeNodeCursor< T >::gotoLast ( )
virtual

goto last node on the same level (last sibling).

Please note that the last node might be identical to the current node.

Returns
ID of the last node if successful, 0 otherwise

◆ gotoNext()

template<typename T >
size_t DSRTreeNodeCursor< T >::gotoNext ( )
virtual

goto next node on the same level (following sibling)

Returns
ID of the next node if successful, 0 otherwise

◆ gotoNode() [1/4]

template<typename T >
size_t DSRTreeNodeCursor< T >::gotoNode ( const size_t  searchID)

set cursor to specified node.

Starts search from current position.

Parameters
searchIDID of the node to set the cursor to
Returns
ID of the new current node if successful, 0 otherwise

Referenced by DSRTree< DSRDocumentTreeNode >::gotoNode().

◆ gotoNode() [2/4]

template<typename T >
size_t DSRTreeNodeCursor< T >::gotoNode ( const OFString position,
const char  separator = '.' 
)

set cursor to specified node.

Starts search from current position.

Parameters
positionposition string of the node to set the cursor to. (the format is e.g. "1.2.3" for the third child of the second child of the first node - see getPosition()).
separatorcharacter used to separate the figures (default: '.')
Returns
ID of the new current node if successful, 0 otherwise

◆ gotoNode() [3/4]

template<typename T >
size_t DSRTreeNodeCursor< T >::gotoNode ( const DSRTreeNodeAnnotation annotation)

set cursor to specified node.

Starts search from current position.

Parameters
annotationannotation of the node to set the cursor to
Returns
ID of the new current node if successful, 0 otherwise

◆ gotoNode() [4/4]

template<typename T>
size_t DSRTreeNodeCursor< T >::gotoNode ( const T &  nodeValue)

set cursor to specified node.

Starts search from current position. This method requires that T implements the comparison operator "not equal".

Parameters
nodeValuevalue of the node to set the cursor to
Returns
ID of the new current node if successful, 0 otherwise

◆ gotoParent()

template<typename T >
size_t DSRTreeNodeCursor< T >::gotoParent ( )
virtual

goto parent node (one level up)

Returns
ID of the parent node if successful, 0 otherwise

◆ gotoPrevious()

template<typename T >
size_t DSRTreeNodeCursor< T >::gotoPrevious ( )
virtual

goto previous node on the same level (preceding sibling)

Returns
ID of the previous node if successful, 0 otherwise

◆ goUp()

template<typename T >
size_t DSRTreeNodeCursor< T >::goUp ( )
virtual

goto parent node (one level up)

Returns
ID of the parent node if successful, 0 otherwise

Referenced by DSRTree< DSRDocumentTreeNode >::DSRTree().

◆ hasChildNodes()

template<typename T >
OFBool DSRTreeNodeCursor< T >::hasChildNodes ( ) const
inline

check whether the current node has any children

Returns
OFTrue if the current node has any children, OFFalse otherwise

◆ hasNextNode()

template<typename T >
OFBool DSRTreeNodeCursor< T >::hasNextNode ( ) const
inline

check whether the current node has a following sibling

Returns
OFTrue if the current node has a following sibling, OFFalse otherwise

◆ hasParentNode()

template<typename T >
OFBool DSRTreeNodeCursor< T >::hasParentNode ( ) const
inline

check whether the current node has a parent

Returns
OFTrue if the current node has a parent, OFFalse otherwise

◆ hasPreviousNode()

template<typename T >
OFBool DSRTreeNodeCursor< T >::hasPreviousNode ( ) const
inline

check whether the current node has a preceding sibling

Returns
OFTrue if the current node has a preceding sibling, OFFalse otherwise

◆ hasSiblingNodes()

template<typename T >
OFBool DSRTreeNodeCursor< T >::hasSiblingNodes ( ) const
inline

check whether the current node has any siblings

Returns
OFTrue if the current node has any siblings, OFFalse otherwise

◆ isValid()

template<typename T >
OFBool DSRTreeNodeCursor< T >::isValid ( ) const
virtual

◆ iterate()

template<typename T >
size_t DSRTreeNodeCursor< T >::iterate ( const OFBool  searchIntoSub = OFTrue)
virtual

iterate over all nodes (starting from current position!)

Parameters
searchIntoSubflag indicating whether to search into sub-trees ("deep search") or on the current level only
Returns
ID of the next node if successful, 0 otherwise

Reimplemented in DSRIncludedTemplateNodeCursor.

Referenced by DSRTree< DSRDocumentTreeNode >::clearAnnotations(), and DSRTree< DSRDocumentTreeNode >::countNodes().

◆ operator=() [1/2]

template<typename T>
DSRTreeNodeCursor< T > & DSRTreeNodeCursor< T >::operator= ( const DSRTreeNodeCursor< T > &  cursor)

assignment operator

Parameters
cursorobject to be copied
Returns
reference to modified cursor (this object)

◆ operator=() [2/2]

template<typename T>
DSRTreeNodeCursor< T > & DSRTreeNodeCursor< T >::operator= ( T *  node)

assignment operator.

See comments on setCursor(T*) method.

Parameters
nodenode to which the cursor should be set
Returns
reference to modified cursor (this object)

◆ setCursor() [1/2]

template<typename T>
void DSRTreeNodeCursor< T >::setCursor ( const DSRTreeNodeCursor< T > &  cursor)
inlineprotected

set cursor to specified object

Parameters
cursorobject to set this cursor to

◆ setCursor() [2/2]

template<typename T>
size_t DSRTreeNodeCursor< T >::setCursor ( T *  node)
protected

set cursor to specified node.

Clears the internal position counter and sets the position of the current level to 1 (if the passed 'node' is valid) or 0 (if the 'node' is invalid).

Parameters
nodenode to which the cursor should be set
Returns
ID of the new current node if successful, 0 otherwise

◆ swap()

template<typename T>
void DSRTreeNodeCursor< T >::swap ( DSRTreeNodeCursor< T > &  cursor)
protected

fast, non-throwing swap function.

The time complexity of this function is constant.

Parameters
cursorcursor to swap with

Referenced by DSRTree< DSRDocumentTreeNode >::swap().


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


Generated on Mon Oct 28 2019 for DCMTK Version 3.6.5 by Doxygen 1.8.15