 |
VTK
9.0.1
|
Go to the documentation of this file.
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
253 result->SetSkipEmptyNodes((this->Options & Opts::SkipEmptyNodes) != Opts::None);
254 result->SetVisitOnlyLeaves((this->Options & Opts::VisitOnlyLeaves) != Opts::None);
255 result->SetTraverseSubTree((this->Options & Opts::TraverseSubTree) != Opts::None);
256 result->InitTraversal();
267 #endif // __VTK_WRAP__
269 #endif // vtkDataObjectTreeRange_h
vtkDataObjectTree * GetDataObjectTree() const noexcept
provides implementation for most abstract methods in the superclass vtkCompositeDataSet
DataObjectTreeIterator(SmartIterator &&iter) noexcept
virtual void SetVisitOnlyLeaves(vtkTypeBool)
If VisitOnlyLeaves is true, the iterator will only visit nodes (sub-datasets) that are not composite.
virtual void SetSkipEmptyNodes(vtkTypeBool)
If SkipEmptyNodes is true, then nullptr datasets will be skipped.
static vtkSmartPointer< InternalIterator > Take(InternalIterator *t)
Transfer ownership of one reference to the given VTK object to a new smart pointer.
DataObjectTreeIterator & operator++()
DataObjectTreeIterator(const DataObjectTreeIterator &o)
DataObjectTreeIterator operator++(int)
vtk::CompositeDataSetNodeReference< vtkDataObjectTreeIterator, DataObjectTreeIterator > DataObjectTreeIteratorReference
typename Superclass::pointer pointer
DataObjectTreeIterator() noexcept
int IsDoneWithTraversal() override
Test whether the iterator is finished with the traversal.
friend bool operator==(const DataObjectTreeIterator &lhs, const DataObjectTreeIterator &rhs)
DataObjectTreeIterator(DataObjectTreeIterator &&) noexcept=default
DataObjectTreeOptions GetOptions() const noexcept
pointer operator->() const
reference operator*() const
void GoToNextItem() override
Move the iterator to the next item in the collection.
virtual void SetDataSet(vtkCompositeDataSet *ds)
Set the composite dataset this iterator is iterating over.
const_iterator cbegin() const
unsigned int GetCurrentFlatIndex() override
Flat index is an index obtained by traversing the tree in preorder.
typename Superclass::value_type value_type
const_iterator cend() const
virtual void SetTraverseSubTree(vtkTypeBool)
If TraverseSubTree is set to true, the iterator will visit the entire tree structure,...
virtual vtkDataObjectTreeIterator * NewTreeIterator()
Return a new iterator (the iterator has to be deleted by user).
friend void swap(DataObjectTreeIterator &lhs, DataObjectTreeIterator &rhs) noexcept
DataObjectTreeRange(vtkDataObjectTree *cds, DataObjectTreeOptions opts=DataObjectTreeOptions::None)
Specialization of tuple ranges and iterators for vtkAOSDataArrayTemplate.
virtual void InitTraversal()
Begin iterating over the composite dataset structure.
superclass for composite data iterators
typename Superclass::iterator_category iterator_category
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
typename Superclass::reference reference
general representation of visualization data
typename Superclass::difference_type difference_type
friend bool operator!=(const DataObjectTreeIterator &lhs, const DataObjectTreeIterator &rhs)
A reference proxy into a vtkCompositeDataSet, obtained by dereferencing an iterator from the vtk::Ran...