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);
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());
161 this->Iterator->InitTraversal();
166 void AdvanceTo(
const unsigned int flatIdx)
168 assert(this->Iterator !=
nullptr);
169 assert(this->Iterator->GetCurrentFlatIndex() <= flatIdx);
170 while (this->Iterator->GetCurrentFlatIndex() < flatIdx)
178 assert(this->Iterator !=
nullptr);
179 assert(!this->Iterator->IsDoneWithTraversal());
180 this->Iterator->GoToNextItem();
183 CompositeDataSetIteratorReference GetData()
const 185 assert(this->Iterator !=
nullptr);
186 assert(!this->Iterator->IsDoneWithTraversal());
187 return CompositeDataSetIteratorReference{ this->Iterator };
213 : CompositeDataSet(cds)
216 assert(this->CompositeDataSet);
227 auto iter = this->NewIterator();
228 iter->InitTraversal();
229 while (!iter->IsDoneWithTraversal())
232 iter->GoToNextItem();
252 auto result = SmartIterator::Take(this->CompositeDataSet->NewIterator());
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)
const_iterator cend() const
typename Superclass::iterator_category iterator_category
CompositeDataSetOptions GetOptions() const noexcept
static vtkSmartPointer< T > NewInstance(T *t)
Create a new instance of the given VTK object.
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 *)
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
vtkCompositeDataSet * GetCompositeDataSet() const noexcept
CompositeDataSetIterator & operator++()
typename Superclass::value_type value_type
CompositeDataSetIterator & operator=(const CompositeDataSetIterator &o)
CompositeDataSetIterator(SmartIterator &&iter) noexcept
pointer operator->() const
A reference proxy into a vtkCompositeDataSet, obtained by dereferencing an iterator from the vtk::Ran...
typename Superclass::pointer pointer
typename Superclass::difference_type difference_type
virtual vtkTypeBool GetSkipEmptyNodes()
If SkipEmptyNodes is true, then nullptr datasets will be skipped.
general representation of visualization data
const_iterator cbegin() const
virtual unsigned int GetCurrentFlatIndex()=0
Flat index is an index to identify the data in a composite data structure.
virtual vtkCompositeDataSet * GetDataSet()
Set the composite dataset this iterator is iterating over.
typename Superclass::reference reference
friend bool operator!=(const CompositeDataSetIterator &lhs, const CompositeDataSetIterator &rhs)