16 #ifndef vtkCompositeDataSetRange_h 17 #define vtkCompositeDataSetRange_h 50 struct CompositeDataSetRange;
51 struct CompositeDataSetIterator;
59 :
public std::iterator<std::forward_iterator_tag, vtkDataObject*, int,
60 CompositeDataSetIteratorReference, CompositeDataSetIteratorReference>
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);
162 this->AdvanceTo(
source->GetCurrentFlatIndex());
166 void AdvanceTo(
const unsigned int flatIdx)
168 assert(this->Iterator !=
nullptr);
178 assert(this->Iterator !=
nullptr);
185 assert(this->Iterator !=
nullptr);
190 mutable SmartIterator Iterator;
213 : CompositeDataSet(cds)
216 assert(this->CompositeDataSet);
227 auto iter = this->NewIterator();
228 iter->InitTraversal();
229 while (!iter->IsDoneWithTraversal())
232 iter->GoToNextItem();
248 SmartIterator NewIterator()
const 254 result->InitTraversal();
265 #endif // __VTK_WRAP__ 267 #endif // vtkCompositeDataSetRange_h
vtk::CompositeDataSetNodeReference< vtkCompositeDataIterator, CompositeDataSetIterator > CompositeDataSetIteratorReference
virtual int IsDoneWithTraversal()=0
Test whether the iterator is finished with the traversal.
CompositeDataSetIterator operator++(int)
static vtkSmartPointer< InternalIterator > Take(InternalIterator *t)
Transfer ownership of one reference to the given VTK object to a new smart pointer.
const_iterator cend() const
typename Superclass::iterator_category iterator_category
CompositeDataSetOptions GetOptions() const noexcept
CompositeDataSetRange(vtkCompositeDataSet *cds, CompositeDataSetOptions opts=CompositeDataSetOptions::None)
CompositeDataSetIterator(const CompositeDataSetIterator &o)
reference operator*() const
Specialization of tuple ranges and iterators for vtkAOSDataArrayTemplate.
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph *>::edge_descriptor e, vtkGraph *)
virtual void GoToNextItem()=0
Move the iterator to the next item in the collection.
CompositeDataSetIterator() noexcept
superclass for composite data iterators
friend bool operator==(const CompositeDataSetIterator &lhs, const CompositeDataSetIterator &rhs)
abstract superclass for composite (multi-block or AMR) datasets
friend void swap(CompositeDataSetIterator &lhs, CompositeDataSetIterator &rhs) noexcept
virtual void InitTraversal()
Begin iterating over the composite dataset structure.
vtkCompositeDataSet * GetCompositeDataSet() const noexcept
CompositeDataSetIterator & operator++()
typename Superclass::value_type value_type
CompositeDataSetIterator(SmartIterator &&iter) noexcept
pointer operator->() const
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.
typename Superclass::pointer pointer
typename Superclass::difference_type difference_type
general representation of visualization data
const_iterator cbegin() const
virtual vtkCompositeDataIterator * NewIterator()=0
Return a new iterator (the iterator has to be deleted by user).
virtual unsigned int GetCurrentFlatIndex()=0
Flat index is an index to identify the data in a composite data structure.
typename Superclass::reference reference
friend bool operator!=(const CompositeDataSetIterator &lhs, const CompositeDataSetIterator &rhs)
virtual void SetSkipEmptyNodes(vtkTypeBool)
If SkipEmptyNodes is true, then nullptr datasets will be skipped.