OpenVDB: IterListItem< PrevItemT, NodeVecT, VecSize, _Level > Class Template Reference

OpenVDB 10.0.1

Public Types | Public Member Functions | Static Public Attributes | List of all members
IterListItem< PrevItemT, NodeVecT, VecSize, _Level > Class Template Reference

An IterListItem is an element of a compile-time linked list of iterators to nodes of different types. More...

`#include <openvdb/tree/TreeIterator.h>`

## Public Types
using | PrevIterT = typename PrevItemT::IterT
| The type of iterator stored in the previous list item. More...
using | _NodeT = typename NodeVecT::Front
| The type of node (non-const) whose iterator is stored in this list item. More...
using | IterT = typename IterTraits< typename PrevIterT::NonConstNodeType, PrevIterT >::template NodeConverter< _NodeT >::Type
| The type of iterator stored in this list item (e.g., InternalNode::ValueOnCIter) More...
using | NodeT = typename IterT::NodeType
| The type of node (const or non-const) over which IterT iterates (e.g., const RootNode<...>) More...
using | NCNodeT = typename IterT::NonConstNodeType
| The type of the node with const qualifiers removed ("Non-Const") More...
using | NCValueT = typename IterT::NonConstValueType
| The type of value (with const qualifiers removed) to which the iterator points. More...
using | ChildT = typename CopyConstness< NodeT, typename NodeT::ChildNodeType >::Type
| NodeT's child node type, with the same constness (e.g., const InternalNode<...>) More...
using | NCChildT = typename CopyConstness< NCNodeT, typename NCNodeT::ChildNodeType >::Type
| NodeT's child node type with const qualifiers removed. More...
using | ITraits = IterTraits< NCNodeT, IterT >

## Public Member Functions
| IterListItem (PrevItemT *prev)
| IterListItem (const IterListItem &other)
IterListItem & | operator= (const IterListItem &other)
void | updateBackPointers (PrevItemT *prev)
void | setIter (const IterT &iter)
template<typename OtherIterT >
void | setIter (const OtherIterT &iter)
void | getNode (Index lvl, NodeT *&node) const
| Return the node over which this list element's iterator iterates. More...
template<typename OtherNodeT >
void | getNode (Index lvl, OtherNodeT *&node) const
| Return the node over which one of the following list elements' iterator iterates. More...
template<typename OtherIterListItemT >
void | initLevel (Index lvl, OtherIterListItemT &otherListItem)
| Initialize the iterator for level lvl of the tree with the node over which the corresponding iterator of otherListItem is iterating. More...
Index | pos (Index lvl) const
| Return The table offset of the iterator at level lvl of the tree. More...
bool | test (Index lvl) const
| Return `true` if the iterator at level lvl of the tree has not yet reached its end. More...
bool | next (Index lvl)
| Increment the iterator at level lvl of the tree. More...
bool | down (Index lvl)
| If the iterator at level lvl of the tree points to a child node, initialize the next iterator in this list with that child node. More...
Coord | getCoord (Index lvl) const
| Return the global coordinates of the voxel or tile to which the iterator at level lvl of the tree is currently pointing. More...
Index | getChildDim (Index lvl) const
Index64 | getVoxelCount (Index lvl) const
| Return the number of (virtual) voxels spanned by a tile value or child node. More...
bool | isValueOn (Index lvl) const
| Return `true` if the iterator at level lvl of the tree points to an active value. More...
const NCValueT & | getValue (Index lvl) const
| Return the value to which the iterator at level lvl of the tree points. More...
void | setValue (Index lvl, const NCValueT &val) const
| Set the value (to val) to which the iterator at level lvl of the tree points and mark the value as active. More...
void | setValueOn (Index lvl, bool on=true) const
| Set the value (to val) to which the iterator at level lvl of the tree points and mark the value as active if on is `true`, or inactive otherwise. More...
void | setValueOff (Index lvl) const
| Mark the value to which the iterator at level lvl of the tree points as inactive. More...
template<typename ModifyOp >
void | modifyValue (Index lvl, const ModifyOp &op) const
| Apply a functor to the item to which this iterator is pointing. More...

## Static Public Attributes
static const Index | Level = _Level
| NodeT's level in its tree (0 = LeafNode) More...

## Detailed Description

template<typename PrevItemT, typename NodeVecT, size_t VecSize, Index _Level>
class openvdb::v10_0::tree::IterListItem< PrevItemT, NodeVecT, VecSize, _Level >

An IterListItem is an element of a compile-time linked list of iterators to nodes of different types.

The list is constructed by traversing the template hierarchy of a Tree in reverse order, so typically the elements will be a LeafNode iterator of some type (e.g., ValueOnCIter), followed by one or more InternalNode iterators of the same type, followed by a RootNode iterator of the same type.

The length of the list is fixed at compile time, and because it is implemented using nested, templated classes, much of the list traversal logic can be optimized away.

## Member Typedef Documentation

## ◆ _NodeT

using _NodeT = typename NodeVecT::Front

The type of node (non-const) whose iterator is stored in this list item.

## ◆ ChildT

using ChildT = typename CopyConstness<NodeT, typename NodeT::ChildNodeType>::Type

NodeT's child node type, with the same constness (e.g., const InternalNode<...>)

## ◆ IterT

using IterT = typename IterTraits<typename PrevIterT::NonConstNodeType, PrevIterT>::template NodeConverter<_NodeT>::Type

The type of iterator stored in this list item (e.g., InternalNode::ValueOnCIter)

## ◆ ITraits

using ITraits = IterTraits<NCNodeT, IterT>

## ◆ NCChildT

using NCChildT = typename CopyConstness<NCNodeT, typename NCNodeT::ChildNodeType>::Type

NodeT's child node type with const qualifiers removed.

## ◆ NCNodeT

using NCNodeT = typename IterT::NonConstNodeType

The type of the node with const qualifiers removed ("Non-Const")

## ◆ NCValueT

using NCValueT = typename IterT::NonConstValueType

The type of value (with const qualifiers removed) to which the iterator points.

## ◆ NodeT

using NodeT = typename IterT::NodeType

The type of node (const or non-const) over which IterT iterates (e.g., const RootNode<...>)

## ◆ PrevIterT

using PrevIterT = typename PrevItemT::IterT

The type of iterator stored in the previous list item.

## Constructor & Destructor Documentation

## ◆ IterListItem() [1/2]

IterListItem | ( | PrevItemT * | prev | ) |
| inline

## ◆ IterListItem() [2/2]

IterListItem | ( | const IterListItem< PrevItemT, NodeVecT, VecSize, _Level > & | other | ) |
| inline

## Member Function Documentation

## ◆ down()

bool down | ( | Index | lvl | ) |
| inline

If the iterator at level lvl of the tree points to a child node, initialize the next iterator in this list with that child node.

## ◆ getChildDim()

Index getChildDim | ( | Index | lvl | ) | const
| inline

## ◆ getCoord()

Coord getCoord | ( | Index | lvl | ) | const
| inline

Return the global coordinates of the voxel or tile to which the iterator at level lvl of the tree is currently pointing.

## ◆ getNode() [1/2]

void getNode | ( | Index | lvl,
|  | NodeT *& | node
| ) |  | const
| inline

Return the node over which this list element's iterator iterates.

## ◆ getNode() [2/2]

void getNode | ( | Index | lvl,
|  | OtherNodeT *& | node
| ) |  | const
| inline

Return the node over which one of the following list elements' iterator iterates.

## ◆ getValue()

const NCValueT & getValue | ( | Index | lvl | ) | const
| inline

Return the value to which the iterator at level lvl of the tree points.

## ◆ getVoxelCount()

Index64 getVoxelCount | ( | Index | lvl | ) | const
| inline

Return the number of (virtual) voxels spanned by a tile value or child node.

## ◆ initLevel()

void initLevel | ( | Index | lvl,
|  | OtherIterListItemT & | otherListItem
| ) |  |
| inline

Initialize the iterator for level lvl of the tree with the node over which the corresponding iterator of otherListItem is iterating.

For example, if otherListItem contains a LeafNode::ValueOnIter, initialize this list's leaf iterator with the same LeafNode.

## ◆ isValueOn()

bool isValueOn | ( | Index | lvl | ) | const
| inline

Return `true` if the iterator at level lvl of the tree points to an active value.

## ◆ modifyValue()

void modifyValue | ( | Index | lvl,
|  | const ModifyOp & | op
| ) |  | const
| inline

Apply a functor to the item to which this iterator is pointing.

Note
  Not valid when `IterT` is a const iterator type

## ◆ next()

bool next | ( | Index | lvl | ) |
| inline

Increment the iterator at level lvl of the tree.

## ◆ operator=()

IterListItem & operator= | ( | const IterListItem< PrevItemT, NodeVecT, VecSize, _Level > & | other | ) |
| inline

## ◆ pos()

Index pos | ( | Index | lvl | ) | const
| inline

Return The table offset of the iterator at level lvl of the tree.

## ◆ setIter() [1/2]

void setIter | ( | const IterT & | iter | ) |
| inline

## ◆ setIter() [2/2]

void setIter | ( | const OtherIterT & | iter | ) |
| inline

## ◆ setValue()

void setValue | ( | Index | lvl,
|  | const NCValueT & | val
| ) |  | const
| inline

Set the value (to val) to which the iterator at level lvl of the tree points and mark the value as active.

Note
  Not valid when `IterT` is a const iterator type

## ◆ setValueOff()

void setValueOff | ( | Index | lvl | ) | const
| inline

Mark the value to which the iterator at level lvl of the tree points as inactive.

Note
  Not valid when `IterT` is a const iterator type

## ◆ setValueOn()

void setValueOn | ( | Index | lvl,
|  | bool | on = `true`
| ) |  | const
| inline

Set the value (to val) to which the iterator at level lvl of the tree points and mark the value as active if on is `true`, or inactive otherwise.

Note
  Not valid when `IterT` is a const iterator type

## ◆ test()

bool test | ( | Index | lvl | ) | const
| inline

Return `true` if the iterator at level lvl of the tree has not yet reached its end.

## ◆ updateBackPointers()

void updateBackPointers | ( | PrevItemT * | prev | ) |
| inline

## Member Data Documentation

## ◆ Level

const Index Level = _Level
| static

NodeT's level in its tree (0 = LeafNode)