4 #ifndef vtkCompositeDataSetRange_h
5 #define vtkCompositeDataSetRange_h
18 VTK_ABI_NAMESPACE_BEGIN
30 VTK_ABI_NAMESPACE_BEGIN
38 VTK_ABI_NAMESPACE_BEGIN
40 struct CompositeDataSetRange;
41 struct CompositeDataSetIterator;
62 : Iterator(o.Iterator ?
SmartIterator::Take(o.Iterator->NewInstance()) : nullptr)
64 this->CopyState(o.Iterator);
71 this->Iterator = o.Iterator ? SmartIterator::Take(o.Iterator->NewInstance()) :
nullptr;
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);
151 this->Iterator->SetDataSet(source->GetDataSet());
152 this->Iterator->SetSkipEmptyNodes(source->GetSkipEmptyNodes());
153 this->Iterator->InitTraversal();
158 this->AdvanceTo(source->GetCurrentFlatIndex());
162 void AdvanceTo(
const unsigned int flatIdx)
164 assert(this->Iterator !=
nullptr);
165 assert(this->Iterator->GetCurrentFlatIndex() <= flatIdx);
166 while (this->Iterator->GetCurrentFlatIndex() < flatIdx)
174 assert(this->Iterator !=
nullptr);
175 assert(!this->Iterator->IsDoneWithTraversal());
176 this->Iterator->GoToNextItem();
179 CompositeDataSetIteratorReference
GetData()
const
181 assert(this->Iterator !=
nullptr);
182 assert(!this->Iterator->IsDoneWithTraversal());
183 return CompositeDataSetIteratorReference{ this->Iterator };
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
248 auto result = SmartIterator::Take(this->CompositeDataSet->NewIterator());
249 result->SetSkipEmptyNodes((this->Options & Opts::SkipEmptyNodes) != Opts::None);
250 result->InitTraversal();
258 VTK_ABI_NAMESPACE_END
262 #endif // vtkCompositeDataSetRange_h
vtk::CompositeDataSetNodeReference< vtkCompositeDataIterator, CompositeDataSetIterator > CompositeDataSetIteratorReference
virtual int IsDoneWithTraversal()=0
Test whether the iterator is finished with the traversal.
CompositeDataSetIterator operator++(int)
CompositeDataSetRange(vtkCompositeDataSet *cds, CompositeDataSetOptions opts=CompositeDataSetOptions::None)
CompositeDataSetOptions GetOptions() const noexcept
CompositeDataSetIterator(const CompositeDataSetIterator &o)
std::forward_iterator_tag iterator_category
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
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...
reference operator*() const
pointer operator->() const
const_iterator cend() const
general representation of visualization data
virtual unsigned int GetCurrentFlatIndex()=0
Flat index is an index to identify the data in a composite data structure.
friend bool operator!=(const CompositeDataSetIterator &lhs, const CompositeDataSetIterator &rhs)