OpenVDB 12.1.0

Loading...
Searching...
No Matches
DenseIteratorBase< MaskIterT, IterT, NodeT, SetItemT, UnsetItemT > Struct Template Reference

Base class for dense iterators over internal and leaf nodes. More...

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

Inheritance diagram for DenseIteratorBase< MaskIterT, IterT, NodeT, SetItemT, UnsetItemT >:

## Public Types
using | NodeType = NodeT
using | ValueType = UnsetItemT
using | ChildNodeType = SetItemT
using | NonConstNodeType = typename std::remove_const<NodeT>::type
using | NonConstValueType = typename std::remove_const<UnsetItemT>::type
using | NonConstChildNodeType = typename std::remove_const<SetItemT>::type

## Public Member Functions
| DenseIteratorBase ()
| DenseIteratorBase (const MaskIterT &iter, NodeT *parent)
bool | getItem (Index, SetItemT *&child, NonConstValueType &value) const
| Return `true` if the item at the given index in the parent node's table is a set value and return either the set value in child or the unset value in value.
void | setItem (Index, SetItemT *) const
| Set the value of the item at the given index in the parent node's table.
void | unsetItem (Index, const UnsetItemT &) const
| "Unset" the value of the item at the given index in the parent node's table.
bool | isChildNode () const
| Return `true` if this iterator is pointing to a child node.
SetItemT * | probeChild (NonConstValueType &value) const
| If this iterator is pointing to a child node, return a pointer to the node. Otherwise, return nullptr and, in value, the value to which this iterator is pointing.
bool | probeChild (SetItemT *&child, NonConstValueType &value) const
| If this iterator is pointing to a child node, return `true` and return a pointer to the child node in child. Otherwise, return `false` and return the value to which this iterator is pointing in value.
bool | probeValue (NonConstValueType &value) const
| Return `true` if this iterator is pointing to a value and return the value in value. Otherwise, return `false`.
void | setChild (SetItemT *child) const
| Replace with the given child node the item in the parent node's table to which this iterator is pointing.
void | setValue (const UnsetItemT &value) const
| Replace with the given value the item in the parent node's table to which this iterator is pointing.
bool | operator== (const IteratorBase &other) const
bool | operator!= (const IteratorBase &other) const
NodeT * | getParentNode () const
| Return a pointer to the node (if any) over which this iterator is iterating.
NodeT & | parent () const
| Return a reference to the node over which this iterator is iterating.
Index | offset () const
| Return this iterator's position as an index into the parent node's table.
Index | pos () const
| Identical to offset.
bool | test () const
| Return `true` if this iterator is not yet exhausted.
| operator bool () const
| Return `true` if this iterator is not yet exhausted.
bool | next ()
| Advance to the next item in the parent node's table.
void | increment ()
| Advance to the next item in the parent node's table.
void | increment (Index n)
| Advance n items in the parent node's table.
IteratorBase & | operator++ ()
| Advance to the next item in the parent node's table.
bool | isValueOn () const
| Return `true` if this iterator is pointing to an active value. Return `false` if it is pointing to either an inactive value or a child node.
void | setValueOn (bool on=true) const
| If this iterator is pointing to a value, set the value's active state. Otherwise, do nothing.
void | setValueOff () const
| If this iterator is pointing to a value, mark the value as inactive.
Coord | getCoord () const
| Return the coordinates of the item to which this iterator is pointing.
void | getCoord (Coord &xyz) const
| Return in xyz the coordinates of the item to which this iterator is pointing.

## Static Public Attributes
static const bool | IsSparseIterator = false
static const bool | IsDenseIterator = true

## Detailed Description

template<typename MaskIterT, typename IterT, typename NodeT, typename SetItemT, typename UnsetItemT>
struct openvdb::v12_1::tree::DenseIteratorBase< MaskIterT, IterT, NodeT, SetItemT, UnsetItemT >

Base class for dense iterators over internal and leaf nodes.

Note
  Dense iterators have no `operator*`() or `operator->`(), because their return type would have to vary depending on whether the iterator is pointing to a value or a child node.

## Member Typedef Documentation

## ◆ ChildNodeType

template<typename MaskIterT, typename IterT, typename NodeT, typename SetItemT, typename UnsetItemT>

using ChildNodeType = SetItemT

## ◆ NodeType

template<typename MaskIterT, typename IterT, typename NodeT, typename SetItemT, typename UnsetItemT>

using NodeType = NodeT

## ◆ NonConstChildNodeType

template<typename MaskIterT, typename IterT, typename NodeT, typename SetItemT, typename UnsetItemT>

using NonConstChildNodeType = typename std::remove_const<SetItemT>::type

## ◆ NonConstNodeType

template<typename MaskIterT, typename IterT, typename NodeT, typename SetItemT, typename UnsetItemT>

using NonConstNodeType = typename std::remove_const<NodeT>::type

## ◆ NonConstValueType

template<typename MaskIterT, typename IterT, typename NodeT, typename SetItemT, typename UnsetItemT>

using NonConstValueType = typename std::remove_const<UnsetItemT>::type

## ◆ ValueType

template<typename MaskIterT, typename IterT, typename NodeT, typename SetItemT, typename UnsetItemT>

using ValueType = UnsetItemT

## Constructor & Destructor Documentation

## ◆ DenseIteratorBase() [1/2]

template<typename MaskIterT, typename IterT, typename NodeT, typename SetItemT, typename UnsetItemT>

DenseIteratorBase | ( |  | ) |
| inline

## ◆ DenseIteratorBase() [2/2]

template<typename MaskIterT, typename IterT, typename NodeT, typename SetItemT, typename UnsetItemT>

DenseIteratorBase | ( | const MaskIterT & | iter,
|  | NodeT * | parent )
| inline

## Member Function Documentation

## ◆ getCoord() [1/2]

template<typename MaskIterT, typename NodeT>

Coord getCoord | ( |  | ) | const
| inline inherited

Return the coordinates of the item to which this iterator is pointing.

## ◆ getCoord() [2/2]

template<typename MaskIterT, typename NodeT>

void getCoord | ( | Coord & | xyz | ) | const
| inline inherited

Return in xyz the coordinates of the item to which this iterator is pointing.

## ◆ getItem()

template<typename MaskIterT, typename IterT, typename NodeT, typename SetItemT, typename UnsetItemT>

bool getItem | ( | Index | ,
|  | SetItemT *& | child,
|  | NonConstValueType & | value ) const

Return `true` if the item at the given index in the parent node's table is a set value and return either the set value in child or the unset value in value.

Note
  All subclasses must implement this accessor.

## ◆ getParentNode()

template<typename MaskIterT, typename NodeT>

NodeT * getParentNode | ( |  | ) | const
| inline inherited

Return a pointer to the node (if any) over which this iterator is iterating.

## ◆ increment() [1/2]

template<typename MaskIterT, typename NodeT>

void increment | ( |  | ) |
| inline inherited

Advance to the next item in the parent node's table.

## ◆ increment() [2/2]

template<typename MaskIterT, typename NodeT>

void increment | ( | Index | n | ) |
| inline inherited

Advance n items in the parent node's table.

## ◆ isChildNode()

template<typename MaskIterT, typename IterT, typename NodeT, typename SetItemT, typename UnsetItemT>

bool isChildNode | ( |  | ) | const
| inline

Return `true` if this iterator is pointing to a child node.

## ◆ isValueOn()

template<typename MaskIterT, typename NodeT>

bool isValueOn | ( |  | ) | const
| inline inherited

Return `true` if this iterator is pointing to an active value. Return `false` if it is pointing to either an inactive value or a child node.

## ◆ next()

template<typename MaskIterT, typename NodeT>

bool next | ( |  | ) |
| inline inherited

Advance to the next item in the parent node's table.

## ◆ offset()

template<typename MaskIterT, typename NodeT>

Index offset | ( |  | ) | const
| inline inherited

Return this iterator's position as an index into the parent node's table.

## ◆ operator bool()

template<typename MaskIterT, typename NodeT>

operator bool | ( |  | ) | const
| inline inherited

Return `true` if this iterator is not yet exhausted.

## ◆ operator!=()

template<typename MaskIterT, typename NodeT>

bool operator!= | ( | const IteratorBase< MaskIterT, NodeT > & | other | ) | const
| inline inherited

## ◆ operator++()

template<typename MaskIterT, typename NodeT>

IteratorBase & operator++ | ( |  | ) |
| inline inherited

Advance to the next item in the parent node's table.

## ◆ operator==()

template<typename MaskIterT, typename NodeT>

bool operator== | ( | const IteratorBase< MaskIterT, NodeT > & | other | ) | const
| inline inherited

## ◆ parent()

template<typename MaskIterT, typename NodeT>

NodeT & parent | ( |  | ) | const
| inline inherited

Return a reference to the node over which this iterator is iterating.

Exceptions

  ValueError | if there is no parent node.

## ◆ pos()

template<typename MaskIterT, typename NodeT>

Index pos | ( |  | ) | const
| inline inherited

Identical to offset.

## ◆ probeChild() [1/2]

template<typename MaskIterT, typename IterT, typename NodeT, typename SetItemT, typename UnsetItemT>

SetItemT * probeChild | ( | NonConstValueType & | value | ) | const
| inline

If this iterator is pointing to a child node, return a pointer to the node. Otherwise, return nullptr and, in value, the value to which this iterator is pointing.

## ◆ probeChild() [2/2]

template<typename MaskIterT, typename IterT, typename NodeT, typename SetItemT, typename UnsetItemT>

bool probeChild | ( | SetItemT *& | child,
|  | NonConstValueType & | value ) const
| inline

If this iterator is pointing to a child node, return `true` and return a pointer to the child node in child. Otherwise, return `false` and return the value to which this iterator is pointing in value.

## ◆ probeValue()

template<typename MaskIterT, typename IterT, typename NodeT, typename SetItemT, typename UnsetItemT>

bool probeValue | ( | NonConstValueType & | value | ) | const
| inline

Return `true` if this iterator is pointing to a value and return the value in value. Otherwise, return `false`.

## ◆ setChild()

template<typename MaskIterT, typename IterT, typename NodeT, typename SetItemT, typename UnsetItemT>

void setChild | ( | SetItemT * | child | ) | const
| inline

Replace with the given child node the item in the parent node's table to which this iterator is pointing.

## ◆ setItem()

template<typename MaskIterT, typename IterT, typename NodeT, typename SetItemT, typename UnsetItemT>

void setItem | ( | Index | ,
|  | SetItemT * | ) const

Set the value of the item at the given index in the parent node's table.

Note
  All non-const iterator subclasses must implement this accessor.

## ◆ setValue()

template<typename MaskIterT, typename IterT, typename NodeT, typename SetItemT, typename UnsetItemT>

void setValue | ( | const UnsetItemT & | value | ) | const
| inline

Replace with the given value the item in the parent node's table to which this iterator is pointing.

## ◆ setValueOff()

template<typename MaskIterT, typename NodeT>

void setValueOff | ( |  | ) | const
| inline inherited

If this iterator is pointing to a value, mark the value as inactive.

If this iterator is pointing to a child node, then the current item in the parent node's table is required to be inactive. In that case, this method has no effect.

## ◆ setValueOn()

template<typename MaskIterT, typename NodeT>

void setValueOn | ( | bool | on = true | ) | const
| inline inherited

If this iterator is pointing to a value, set the value's active state. Otherwise, do nothing.

## ◆ test()

template<typename MaskIterT, typename NodeT>

bool test | ( |  | ) | const
| inline inherited

Return `true` if this iterator is not yet exhausted.

## ◆ unsetItem()

template<typename MaskIterT, typename IterT, typename NodeT, typename SetItemT, typename UnsetItemT>

void unsetItem | ( | Index | ,
|  | const UnsetItemT & | ) const

"Unset" the value of the item at the given index in the parent node's table.

Note
  All non-const iterator subclasses must implement this accessor.

## Member Data Documentation

## ◆ IsDenseIterator

template<typename MaskIterT, typename IterT, typename NodeT, typename SetItemT, typename UnsetItemT>

const bool IsDenseIterator = true
| static

## ◆ IsSparseIterator

template<typename MaskIterT, typename IterT, typename NodeT, typename SetItemT, typename UnsetItemT>

const bool IsSparseIterator = false
| static