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);
85 this->Iterator = o.Iterator ? SmartIterator::Take(o.Iterator->
NewInstance()) :
nullptr;
86 this->CopyState(o.Iterator);
133 return !(lhs == rhs);
139 swap(lhs.Iterator, rhs.Iterator);
158 assert(this->Iterator !=
nullptr);
159 this->Iterator->SetDataSet(source->
GetDataSet());
163 this->Iterator->InitTraversal();
168 void AdvanceTo(
const unsigned int flatIdx)
170 assert(this->Iterator !=
nullptr);
171 assert(this->Iterator->GetCurrentFlatIndex() <= flatIdx);
172 while (this->Iterator->GetCurrentFlatIndex() < flatIdx)
180 assert(this->Iterator !=
nullptr);
181 assert(!this->Iterator->IsDoneWithTraversal());
182 this->Iterator->GoToNextItem();
185 DataObjectTreeIteratorReference GetData()
const 187 assert(this->Iterator !=
nullptr);
188 assert(!this->Iterator->IsDoneWithTraversal());
189 return DataObjectTreeIteratorReference{ this->Iterator };
213 : DataObjectTree(cds)
216 assert(this->DataObjectTree);
227 auto iter = this->NewIterator();
228 iter->InitTraversal();
229 while (!iter->IsDoneWithTraversal())
232 iter->GoToNextItem();
252 auto result = SmartIterator::Take(this->DataObjectTree->NewTreeIterator());
256 result->InitTraversal();
267 #endif // __VTK_WRAP__ 269 #endif // vtkDataObjectTreeRange_h
reference operator*() const
typename Superclass::value_type value_type
static vtkSmartPointer< T > NewInstance(T *t)
Create a new instance of the given VTK object.
provides implementation for most abstract methods in the superclass vtkCompositeDataSet ...
vtk::CompositeDataSetNodeReference< vtkDataObjectTreeIterator, DataObjectTreeIterator > DataObjectTreeIteratorReference
typename Superclass::iterator_category iterator_category
DataObjectTreeIterator operator++(int)
virtual vtkTypeBool GetTraverseSubTree()
If TraverseSubTree is set to true, the iterator will visit the entire tree structure, otherwise it only visits the first level children.
DataObjectTreeIterator & operator=(const DataObjectTreeIterator &o)
Specialization of tuple ranges and iterators for vtkAOSDataArrayTemplate.
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph *>::edge_descriptor e, vtkGraph *)
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)
virtual vtkTypeBool GetVisitOnlyLeaves()
If VisitOnlyLeaves is true, the iterator will only visit nodes (sub-datasets) that are not composite...
vtkDataObjectTree * GetDataObjectTree() const noexcept
const_iterator cbegin() const
pointer operator->() const
typename Superclass::pointer pointer
DataObjectTreeRange(vtkDataObjectTree *cds, DataObjectTreeOptions opts=DataObjectTreeOptions::None)
typename Superclass::reference reference
DataObjectTreeIterator & operator++()
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...
DataObjectTreeOptions GetOptions() const noexcept
superclass for composite data iterators
typename Superclass::difference_type difference_type
virtual vtkTypeBool GetSkipEmptyNodes()
If SkipEmptyNodes is true, then nullptr datasets will be skipped.
friend void swap(DataObjectTreeIterator &lhs, DataObjectTreeIterator &rhs) noexcept
DataObjectTreeIterator(SmartIterator &&iter) noexcept
DataObjectTreeIterator() noexcept
general representation of visualization data
const_iterator cend() const
virtual vtkCompositeDataSet * GetDataSet()
Set the composite dataset this iterator is iterating over.