16 #ifndef vtkCompositeDataSetRange_h
17 #define vtkCompositeDataSetRange_h
48 struct CompositeDataSetRange;
49 struct CompositeDataSetIterator;
57 :
public std::iterator<std::forward_iterator_tag, vtkDataObject*, int,
58 CompositeDataSetIteratorReference, CompositeDataSetIteratorReference>
61 using Superclass = std::iterator<std::forward_iterator_tag,
vtkDataObject*, int,
70 using pointer =
typename Superclass::pointer;
74 : Iterator(o.Iterator ?
SmartIterator::Take(o.Iterator->NewInstance()) : nullptr)
76 this->CopyState(o.Iterator);
83 this->Iterator = o.Iterator ? SmartIterator::Take(o.Iterator->NewInstance()) :
nullptr;
84 this->CopyState(o.Iterator);
131 return !(lhs == rhs);
137 swap(lhs.Iterator, rhs.Iterator);
146 : Iterator(std::move(iter))
158 void CopyState(InternalIterator*
source)
162 assert(this->Iterator !=
nullptr);
163 this->Iterator->SetDataSet(source->GetDataSet());
164 this->Iterator->SetSkipEmptyNodes(source->GetSkipEmptyNodes());
165 this->Iterator->InitTraversal();
170 this->AdvanceTo(source->GetCurrentFlatIndex());
174 void AdvanceTo(
const unsigned int flatIdx)
176 assert(this->Iterator !=
nullptr);
177 assert(this->Iterator->GetCurrentFlatIndex() <= flatIdx);
178 while (this->Iterator->GetCurrentFlatIndex() < flatIdx)
186 assert(this->Iterator !=
nullptr);
187 assert(!this->Iterator->IsDoneWithTraversal());
188 this->Iterator->GoToNextItem();
191 CompositeDataSetIteratorReference
GetData()
const
193 assert(this->Iterator !=
nullptr);
194 assert(!this->Iterator->IsDoneWithTraversal());
195 return CompositeDataSetIteratorReference{ this->Iterator };
198 mutable SmartIterator Iterator;
221 : CompositeDataSet(cds)
224 assert(this->CompositeDataSet);
235 auto iter = this->NewIterator();
236 iter->InitTraversal();
237 while (!iter->IsDoneWithTraversal())
240 iter->GoToNextItem();
256 SmartIterator NewIterator()
const
260 auto result = SmartIterator::Take(this->CompositeDataSet->NewIterator());
261 result->SetSkipEmptyNodes((this->Options & Opts::SkipEmptyNodes) != Opts::None);
262 result->InitTraversal();
273 #endif // vtkCompositeDataSetRange_h
vtk::CompositeDataSetNodeReference< vtkCompositeDataIterator, CompositeDataSetIterator > CompositeDataSetIteratorReference
virtual int IsDoneWithTraversal()=0
Test whether the iterator is finished with the traversal.
CompositeDataSetIterator operator++(int)
typename Superclass::iterator_category iterator_category
CompositeDataSetRange(vtkCompositeDataSet *cds, CompositeDataSetOptions opts=CompositeDataSetOptions::None)
CompositeDataSetOptions GetOptions() const noexcept
CompositeDataSetIterator(const CompositeDataSetIterator &o)
Specialization of tuple ranges and iterators for vtkAOSDataArrayTemplate.
const_iterator cbegin() const
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
CompositeDataSetIterator & operator++()
vtkCompositeDataSet * GetCompositeDataSet() const noexcept
typename Superclass::value_type value_type
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
vtkSmartPointer< vtkDataArray > GetData(const Ioss::GroupingEntity *entity, const std::string &fieldname, Ioss::Transform *transform=nullptr, Cache *cache=nullptr, const std::string &cachekey=std::string())
Returns a VTK array for a given field (fieldname) on the chosen block (or set) entity.
CompositeDataSetIterator(SmartIterator &&iter) noexcept
A reference proxy into a vtkCompositeDataSet, obtained by dereferencing an iterator from the vtk::Ran...
typename Superclass::pointer pointer
reference operator*() const
pointer operator->() const
const_iterator cend() const
typename Superclass::difference_type difference_type
general representation of visualization data
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)