4#ifndef vtkCompositeDataSetRange_h
5#define vtkCompositeDataSetRange_h
18VTK_ABI_NAMESPACE_BEGIN
30VTK_ABI_NAMESPACE_BEGIN
38VTK_ABI_NAMESPACE_BEGIN
62 : Iterator(o.Iterator ? SmartIterator::Take(o.Iterator->NewInstance()) : nullptr)
64 this->CopyState(o.Iterator);
72 this->CopyState(o.Iterator);
96 InternalIterator* l = lhs.Iterator;
97 InternalIterator* r = rhs.Iterator;
119 return !(lhs == rhs);
125 swap(lhs.Iterator, rhs.Iterator);
134 : Iterator(std::move(iter))
146 void CopyState(InternalIterator*
source)
150 assert(this->Iterator !=
nullptr);
158 this->AdvanceTo(
source->GetCurrentFlatIndex());
162 void AdvanceTo(
const unsigned int flatIdx)
164 assert(this->Iterator !=
nullptr);
174 assert(this->Iterator !=
nullptr);
175 assert(!this->Iterator->IsDoneWithTraversal());
176 this->Iterator->GoToNextItem();
181 assert(this->Iterator !=
nullptr);
182 assert(!this->Iterator->IsDoneWithTraversal());
186 mutable SmartIterator Iterator;
209 : CompositeDataSet(cds)
212 assert(this->CompositeDataSet);
223 auto iter = this->NewIterator();
224 iter->InitTraversal();
225 while (!iter->IsDoneWithTraversal())
228 iter->GoToNextItem();
244 SmartIterator NewIterator()
const
249 result->SetSkipEmptyNodes((this->Options & Opts::SkipEmptyNodes) != Opts::None);
250 result->InitTraversal();
superclass for composite data iterators
virtual void SetDataSet(vtkCompositeDataSet *ds)
Set the composite dataset this iterator is iterating over.
virtual int IsDoneWithTraversal()=0
Test whether the iterator is finished with the traversal.
virtual void InitTraversal()
Begin iterating over the composite dataset structure.
virtual void SetSkipEmptyNodes(vtkTypeBool)
If SkipEmptyNodes is true, then nullptr datasets will be skipped.
virtual unsigned int GetCurrentFlatIndex()=0
Flat index is an index to identify the data in a composite data structure.
abstract superclass for composite (multi-block or AMR) datasets
virtual vtkCompositeDataIterator * NewIterator()=0
Return a new iterator (the iterator has to be deleted by user).
general representation of visualization data
Hold a reference to a vtkObjectBase instance.
static vtkSmartPointer< InternalIterator > Take(InternalIterator *t)
A reference proxy into a vtkCompositeDataSet, obtained by dereferencing an iterator from the vtk::Ran...
vtk::CompositeDataSetNodeReference< vtkCompositeDataIterator, CompositeDataSetIterator > CompositeDataSetIteratorReference
Specialization of tuple ranges and iterators for vtkAOSDataArrayTemplate.
friend struct CompositeDataSetRange
CompositeDataSetIterator & operator++()
CompositeDataSetIterator operator++(int)
CompositeDataSetIterator(CompositeDataSetIterator &&) noexcept=default
pointer operator->() const
friend bool operator!=(const CompositeDataSetIterator &lhs, const CompositeDataSetIterator &rhs)
friend void swap(CompositeDataSetIterator &lhs, CompositeDataSetIterator &rhs) noexcept
CompositeDataSetIteratorReference reference
reference operator*() const
CompositeDataSetIterator(SmartIterator &&iter) noexcept
std::forward_iterator_tag iterator_category
vtkDataObject * value_type
CompositeDataSetIterator(const CompositeDataSetIterator &o)
friend bool operator==(const CompositeDataSetIterator &lhs, const CompositeDataSetIterator &rhs)
CompositeDataSetIterator() noexcept
CompositeDataSetIteratorReference pointer
CompositeDataSetIterator const_iterator
vtkDataObject * value_type
const_iterator cend() const
CompositeDataSetOptions GetOptions() const noexcept
vtkCompositeDataSet * GetCompositeDataSet() const noexcept
const CompositeDataSetIteratorReference const_reference
CompositeDataSetIteratorReference reference
CompositeDataSetIterator iterator
const_iterator cbegin() const
CompositeDataSetRange(vtkCompositeDataSet *cds, CompositeDataSetOptions opts=CompositeDataSetOptions::None)
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)