DCMTK Version 3.7.0 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...

## 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...
DSRPositionCounter & | getPositionCounter ()
| get reference to internal position counter. More...
const OFString & | getPosition (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

  T | template 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

  cursor | object 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

  node | pointer to tree node used to initialize the cursor
  position | optional pointer to position counter that should be used to initialize the internal counter

References DSRPositionCounter::getFlags(), DSRPositionCounter::initialize(), DSRPositionCounter::isValid(), DSRTreeNodeCursor< T >::NodeCursor, and DSRTreeNodeCursor< T >::Position.

## Member Function Documentation

## ◆ clear()

template<typename T >

void DSRTreeNodeCursor< T >::clear
| virtual

clear all member variables.

The cursor becomes invalid afterwards (same state as after default construction).

Reimplemented in DSRTree< T >, DSRTree< DSRDocumentTreeNode >, DSRSubTemplate, DSRRootTemplate, DSRDocumentTree, DSRDocumentSubTree, TID300_Measurement< T_Measurement, T_Units, T_Method, T_Derivation, T_Purpose >, TID1501_MeasurementGroup< T_Measurement, T_Units, T_Method, T_Derivation, T_Purpose >, TID1500_MeasurementReport, TID1419_ROIMeasurements_Measurement< T_Measurement, T_Units, T_Method, T_Derivation >, and TID1411_VolumetricROIMeasurements< T_Measurement, T_Units, T_Method, T_Derivation >.

## ◆ 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

  searchIntoSub | flag 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.

References DSRTreeNodeCursor< T >::isValid(), and DSRTreeNodeCursor< T >::iterate().

## ◆ getChild()

template<typename T >

T * DSRTreeNodeCursor< T >::getChild
| 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
| 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
| inline protected

get cursor

Returns
  reference to cursor (this object)

## ◆ getLevel()

template<typename T >

size_t DSRTreeNodeCursor< T >::getLevel
| 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
| 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
| virtual

get pointer to current node

Returns
  pointer to current node (might be NULL)

Reimplemented in DSRDocumentSubTree.

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

## ◆ getNodeID()

template<typename T >

size_t DSRTreeNodeCursor< T >::getNodeID
| 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
| 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

  position | variable where the position string should be stored
  separator | character 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
| 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 DSRTreeNodeAnnotation & | annotation | ) |

set cursor to specified node.

Starts search from current position.

Parameters

  annotation | annotation of the node to set the cursor to

Returns
  ID of the new current node if successful, 0 otherwise

References DSRTreeNodeAnnotation::isEmpty().

## ◆ 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

  position | position 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()).
  separator | character used to separate the figures (default: '.')

Returns
  ID of the new current node if successful, 0 otherwise

References OFString::c_str(), OFString::empty(), OFString::find(), DSRTypes::stringToNumber(), and OFString::substr().

## ◆ gotoNode() [3/4]

template<typename T >

size_t DSRTreeNodeCursor< T >::gotoNode | ( | const size_t | searchID | ) |

set cursor to specified node.

Starts search from current position.

Parameters

  searchID | ID of the node to set the cursor to

Returns
  ID of the new current node if successful, 0 otherwise

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

## ◆ 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

  nodeValue | value 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

## ◆ hasChildNodes()

template<typename T >

OFBool DSRTreeNodeCursor< T >::hasChildNodes
| 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
| 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
| 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
| 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
| 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
| virtual

check whether cursor currently points to a valid node

Returns
  OFTrue if valid, OFFalse otherwise

Reimplemented in DSRSubTemplate, DSRRootTemplate, DSRDocumentTree, DSRDocumentSubTree, TID300_Measurement< T_Measurement, T_Units, T_Method, T_Derivation, T_Purpose >, TID1600_ImageLibrary, TID1501_MeasurementGroup< T_Measurement, T_Units, T_Method, T_Derivation, T_Purpose >, TID1500_MeasurementReport, TID1419_ROIMeasurements_Measurement< T_Measurement, T_Units, T_Method, T_Derivation >, and TID1411_VolumetricROIMeasurements< T_Measurement, T_Units, T_Method, T_Derivation >.

Referenced by DSRTree< T >::clearAnnotations(), DSRTreeNodeCursor< T >::countChildNodes(), and DSRTree< T >::countNodes().

## ◆ iterate()

template<typename T >

size_t DSRTreeNodeCursor< T >::iterate | ( | const OFBool | searchIntoSub = `OFTrue` | ) |
| virtual

iterate over all nodes (starting from current position!)

Parameters

  searchIntoSub | flag 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< T >::clearAnnotations(), DSRTreeNodeCursor< T >::countChildNodes(), and DSRTree< T >::countNodes().

## ◆ operator=() [1/2]

template<typename T >

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

assignment operator

Parameters

  cursor | object 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

  node | node 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 | ) |
| inline protected

set cursor to specified object

Parameters

  cursor | object to set this cursor to

References DSRTreeNodeCursor< T >::NodeCursor, DSRTreeNodeCursor< T >::NodeCursorStack, and DSRTreeNodeCursor< T >::Position.

## ◆ 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

  node | node 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

  cursor | cursor to swap with

References DSRTreeNodeCursor< T >::NodeCursor, DSRTreeNodeCursor< T >::NodeCursorStack, OFswap(), and DSRTreeNodeCursor< T >::Position.

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

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

- dcmsr/include/dcmtk/dcmsr/dsrtncsr.h

Generated on Mon Dec 15 2025 for DCMTK Version 3.7.0 by Doxygen 1.9.1