8#ifndef OPENVDB_TREE_ITERATOR_HAS_BEEN_INCLUDED 
    9#define OPENVDB_TREE_ITERATOR_HAS_BEEN_INCLUDED 
   28template<
typename MaskIterT, 
typename NodeT>
 
   39        return (mParentNode == other.mParentNode) && (mMaskIter == other.mMaskIter);
 
 
   43        return !(*
this == other);
 
 
   60    Index pos()
 const { 
return mMaskIter.offset(); }
 
   63    bool test()
 const { 
return mMaskIter.test(); }
 
   65    operator bool()
 const { 
return this->
test(); }
 
   68    bool next() { 
return mMaskIter.next(); }
 
  100    mutable NodeT* mParentNode;
 
 
  141        return static_cast<const IterT*
>(
this)->
getItem(this->
pos()); 
 
 
  147        static_assert(!std::is_const<NodeT>::value, 
"setValue() not allowed for const iterators");
 
  148        static_cast<const IterT*
>(
this)->
setItem(this->
pos(), value); 
 
 
  155    template<
typename ModifyOp>
 
  158        static_assert(!std::is_const<NodeT>::value,
 
  159            "modifyValue() not allowed for const iterators");
 
  160        static_cast<const IterT*
>(
this)->modifyItem(this->
pos(), op); 
 
 
 
  211        SetItemT* child = 
nullptr;
 
  212        static_cast<const IterT*
>(
this)->
getItem(this->
pos(), child, value); 
 
 
  221        return (child != 
nullptr);
 
 
  228        SetItemT* child = 
nullptr;
 
  229        const bool isChild = 
static_cast<const IterT*
>(
this)-> 
 
 
  238        static_cast<const IterT*
>(
this)->
setItem(this->
pos(), child); 
 
 
  245        static_cast<const IterT*
>(
this)->
unsetItem(this->
pos(), value); 
 
 
 
Definition Exceptions.h:65
Signed (x, y, z) 32-bit integer coordinates.
Definition Coord.h:26
IteratorBase(const IteratorBase &)=default
Index pos() const
Identical to offset.
Definition Iterator.h:60
bool isValueOn() const
Return true if this iterator is pointing to an active value. Return false if it is pointing to either...
Definition Iterator.h:78
Index offset() const
Return this iterator's position as an index into the parent node's table.
Definition Iterator.h:57
Coord getCoord() const
Return the coordinates of the item to which this iterator is pointing.
Definition Iterator.h:89
bool test() const
Return true if this iterator is not yet exhausted.
Definition Iterator.h:63
NodeT * getParentNode() const
Return a pointer to the node (if any) over which this iterator is iterating.
Definition Iterator.h:47
void setValueOn(bool on=true) const
If this iterator is pointing to a value, set the value's active state. Otherwise, do nothing.
Definition Iterator.h:81
IteratorBase & operator=(const IteratorBase &)=default
NodeT & parent() const
Return a reference to the node over which this iterator is iterating.
Definition Iterator.h:50
void setValueOff() const
If this iterator is pointing to a value, mark the value as inactive.
Definition Iterator.h:86
bool next()
Advance to the next item in the parent node's table.
Definition Iterator.h:68
bool operator==(const IteratorBase &other) const
Definition Iterator.h:37
void getCoord(Coord &xyz) const
Return in xyz the coordinates of the item to which this iterator is pointing.
Definition Iterator.h:91
IteratorBase()
Definition Iterator.h:32
IteratorBase(const MaskIterT &iter, NodeT *parent)
Definition Iterator.h:33
IteratorBase & operator++()
Advance to the next item in the parent node's table.
Definition Iterator.h:72
bool operator!=(const IteratorBase &other) const
Definition Iterator.h:41
void increment(Index n)
Advance n items in the parent node's table.
Definition Iterator.h:74
void increment()
Advance to the next item in the parent node's table.
Definition Iterator.h:70
Definition TreeIterator.h:30
Index32 Index
Definition Types.h:54
Definition Exceptions.h:13
#define OPENVDB_THROW(exception, message)
Definition Exceptions.h:74
typename std::remove_const< ValueT >::type NonConstValueType
Definition Iterator.h:184
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 eithe...
DenseIteratorBase()
Definition Iterator.h:188
void setChild(SetItemT *child) const
Replace with the given child node the item in the parent node's table to which this iterator is point...
Definition Iterator.h:236
void unsetItem(Index, const UnsetItemT &) const
"Unset" the value of the item at the given index in the parent node's table.
ValueT ValueType
Definition Iterator.h:181
typename std::remove_const< ChildT >::type NonConstChildNodeType
Definition Iterator.h:185
static const bool IsSparseIterator
Definition Iterator.h:186
static const bool IsDenseIterator
Definition Iterator.h:186
DenseIteratorBase(const MaskIterT &iter, NodeT *parent)
Definition Iterator.h:189
ChildT ChildNodeType
Definition Iterator.h:182
typename std::remove_const< NodeT >::type NonConstNodeType
Definition Iterator.h:183
void setItem(Index, SetItemT *) const
Set the value of the item at the given index in the parent node's table.
SetItemT * probeChild(NonConstValueType &value) const
If this iterator is pointing to a child node, return a pointer to the node. Otherwise,...
Definition Iterator.h:209
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.
Definition Iterator.h:243
NodeT NodeType
Definition Iterator.h:180
bool isChildNode() const
Return true if this iterator is pointing to a child node.
Definition Iterator.h:205
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 c...
Definition Iterator.h:218
bool probeValue(NonConstValueType &value) const
Return true if this iterator is pointing to a value and return the value in value....
Definition Iterator.h:226
void setItem(Index, const ItemT &) const
Set the value of the item at the given index in the parent node's table.
void modifyValue(const ModifyOp &op) const
Apply a functor to the item to which this iterator is pointing. (Not valid for const iterators....
Definition Iterator.h:156
typename std::remove_const< ItemT >::type NonConstValueType
Definition Iterator.h:119
ItemT & getItem(Index) const
Return the item at the given index in the parent node's table.
ItemT & operator*() const
Return a reference to the item to which this iterator is pointing.
Definition Iterator.h:134
SparseIteratorBase(const MaskIterT &iter, NodeT *parent)
Definition Iterator.h:123
void setValue(const ItemT &value) const
Set the value of the item to which this iterator is pointing. (Not valid for const iterators....
Definition Iterator.h:145
SparseIteratorBase()
Definition Iterator.h:122
static const bool IsSparseIterator
Definition Iterator.h:120
static const bool IsDenseIterator
Definition Iterator.h:120
typename std::remove_const< NodeT >::type NonConstNodeType
Definition Iterator.h:118
ItemT * operator->() const
Return a pointer to the item to which this iterator is pointing.
Definition Iterator.h:136
NodeT NodeType
Definition Iterator.h:116
ItemT ValueType
Definition Iterator.h:117
ValueT & getValue() const
Definition Iterator.h:139
#define OPENVDB_VERSION_NAME
The version namespace name for this library version.
Definition version.h.in:121
#define OPENVDB_USE_VERSION_NAMESPACE
Definition version.h.in:218