16 #ifndef vtkCompositeDataSetRange_h
17 #define vtkCompositeDataSetRange_h
30 VTK_ABI_NAMESPACE_BEGIN
42 VTK_ABI_NAMESPACE_BEGIN
50 VTK_ABI_NAMESPACE_BEGIN
52 struct CompositeDataSetRange;
53 struct CompositeDataSetIterator;
74 : Iterator(o.Iterator ?
SmartIterator::Take(o.Iterator->NewInstance()) : nullptr)
76 this->CopyState(o.Iterator);
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);
170 this->AdvanceTo(
source->GetCurrentFlatIndex());
174 void AdvanceTo(
const unsigned int flatIdx)
176 assert(this->Iterator !=
nullptr);
186 assert(this->Iterator !=
nullptr);
193 assert(this->Iterator !=
nullptr);
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
261 result->SetSkipEmptyNodes((this->Options & Opts::SkipEmptyNodes) != Opts::None);
262 result->InitTraversal();
270 VTK_ABI_NAMESPACE_END
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...
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.
vtk::CompositeDataSetNodeReference< vtkCompositeDataIterator, CompositeDataSetIterator > CompositeDataSetIteratorReference
Specialization of tuple ranges and iterators for vtkAOSDataArrayTemplate.
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
CompositeDataSetIterator & operator++()
std::forward_iterator_tag iterator_category
CompositeDataSetIterator(const CompositeDataSetIterator &o)
friend bool operator==(const CompositeDataSetIterator &lhs, const CompositeDataSetIterator &rhs)
CompositeDataSetIterator() noexcept
vtkCompositeDataSet * GetCompositeDataSet() const noexcept
const_iterator cend() const
CompositeDataSetOptions GetOptions() 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 *)