4#ifndef vtkCompositeDataSetRange_h
5#define vtkCompositeDataSetRange_h
18VTK_ABI_NAMESPACE_BEGIN
30VTK_ABI_NAMESPACE_BEGIN
38VTK_ABI_NAMESPACE_BEGIN
40struct CompositeDataSetRange;
41struct CompositeDataSetIterator;
62 : Iterator(o.Iterator ?
SmartIterator::Take(o.Iterator->NewInstance()) : nullptr)
64 this->CopyState(o.Iterator);
72 this->CopyState(o.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);
181 assert(this->Iterator !=
nullptr);
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 void GoToNextItem()=0
Move the iterator to the next item in the collection.
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
static vtkSmartPointer< InternalIterator > Take(InternalIterator *t)
Transfer ownership of one reference to the given VTK object to a new smart pointer.
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.
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
reference operator*() const
CompositeDataSetIterator(SmartIterator &&iter) noexcept
std::forward_iterator_tag iterator_category
CompositeDataSetIterator(const CompositeDataSetIterator &o)
friend bool operator==(const CompositeDataSetIterator &lhs, const CompositeDataSetIterator &rhs)
CompositeDataSetIterator() noexcept
const_iterator cend() const
CompositeDataSetOptions GetOptions() const noexcept
vtkCompositeDataSet * GetCompositeDataSet() const noexcept
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 *)