16 #ifndef vtkDataObjectTreeRange_h 17 #define vtkDataObjectTreeRange_h 52 struct DataObjectTreeRange;
53 struct DataObjectTreeIterator;
59 :
public std::iterator<std::forward_iterator_tag, vtkDataObject*, int,
60 DataObjectTreeIteratorReference, DataObjectTreeIteratorReference>
63 using Superclass = std::iterator<std::forward_iterator_tag,
vtkDataObject*, int,
72 using pointer =
typename Superclass::pointer;
76 : Iterator(o.Iterator ?
SmartIterator::Take(o.Iterator->NewInstance()) : nullptr)
78 this->CopyState(o.Iterator);
86 this->CopyState(o.Iterator);
133 return !(lhs == rhs);
139 swap(lhs.Iterator, rhs.Iterator);
154 void CopyState(InternalIterator*
source)
158 assert(this->Iterator !=
nullptr);
164 this->AdvanceTo(
source->GetCurrentFlatIndex());
168 void AdvanceTo(
const unsigned int flatIdx)
170 assert(this->Iterator !=
nullptr);
180 assert(this->Iterator !=
nullptr);
187 assert(this->Iterator !=
nullptr);
192 mutable SmartIterator Iterator;
213 : DataObjectTree(cds)
216 assert(this->DataObjectTree);
227 auto iter = this->NewIterator();
228 iter->InitTraversal();
229 while (!iter->IsDoneWithTraversal())
232 iter->GoToNextItem();
248 SmartIterator NewIterator()
const 256 result->InitTraversal();
267 #endif // __VTK_WRAP__ 269 #endif // vtkDataObjectTreeRange_h
typename Superclass::value_type value_type
static vtkSmartPointer< InternalIterator > Take(InternalIterator *t)
Transfer ownership of one reference to the given VTK object to a new smart pointer.
provides implementation for most abstract methods in the superclass vtkCompositeDataSet
vtk::CompositeDataSetNodeReference< vtkDataObjectTreeIterator, DataObjectTreeIterator > DataObjectTreeIteratorReference
typename Superclass::iterator_category iterator_category
DataObjectTreeIterator operator++(int)
void GoToNextItem() override
Move the iterator to the next item in the collection.
Specialization of tuple ranges and iterators for vtkAOSDataArrayTemplate.
DataObjectTreeIterator(const DataObjectTreeIterator &o)
int IsDoneWithTraversal() override
Test whether the iterator is finished with the traversal.
friend bool operator==(const DataObjectTreeIterator &lhs, const DataObjectTreeIterator &rhs)
friend bool operator!=(const DataObjectTreeIterator &lhs, const DataObjectTreeIterator &rhs)
vtkDataObjectTree * GetDataObjectTree() const noexcept
const_iterator cbegin() const
pointer operator->() const
typename Superclass::pointer pointer
DataObjectTreeRange(vtkDataObjectTree *cds, DataObjectTreeOptions opts=DataObjectTreeOptions::None)
virtual void InitTraversal()
Begin iterating over the composite dataset structure.
typename Superclass::reference reference
virtual void SetVisitOnlyLeaves(vtkTypeBool)
If VisitOnlyLeaves is true, the iterator will only visit nodes (sub-datasets) that are not composite.
virtual vtkDataObjectTreeIterator * NewTreeIterator()
Return a new iterator (the iterator has to be deleted by user).
DataObjectTreeIterator & operator++()
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
unsigned int GetCurrentFlatIndex() override
Flat index is an index obtained by traversing the tree in preorder.
A reference proxy into a vtkCompositeDataSet, obtained by dereferencing an iterator from the vtk::Ran...
virtual void SetDataSet(vtkCompositeDataSet *ds)
Set the composite dataset this iterator is iterating over.
virtual void SetTraverseSubTree(vtkTypeBool)
If TraverseSubTree is set to true, the iterator will visit the entire tree structure,...
reference operator *() const
DataObjectTreeOptions GetOptions() const noexcept
superclass for composite data iterators
typename Superclass::difference_type difference_type
friend void swap(DataObjectTreeIterator &lhs, DataObjectTreeIterator &rhs) noexcept
DataObjectTreeIterator(SmartIterator &&iter) noexcept
DataObjectTreeIterator() noexcept
general representation of visualization data
const_iterator cend() const
virtual void SetSkipEmptyNodes(vtkTypeBool)
If SkipEmptyNodes is true, then nullptr datasets will be skipped.