4 #ifndef vtkDataObjectTreeRange_h
5 #define vtkDataObjectTreeRange_h
18 VTK_ABI_NAMESPACE_BEGIN
32 VTK_ABI_NAMESPACE_BEGIN
40 VTK_ABI_NAMESPACE_BEGIN
42 struct DataObjectTreeRange;
43 struct DataObjectTreeIterator;
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))
141 : Iterator{
nullptr }
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->SetVisitOnlyLeaves(source->GetVisitOnlyLeaves());
154 this->Iterator->SetTraverseSubTree(source->GetTraverseSubTree());
155 this->Iterator->InitTraversal();
156 this->AdvanceTo(source->GetCurrentFlatIndex());
160 void AdvanceTo(
const unsigned int flatIdx)
162 assert(this->Iterator !=
nullptr);
163 assert(this->Iterator->GetCurrentFlatIndex() <= flatIdx);
164 while (this->Iterator->GetCurrentFlatIndex() < flatIdx)
172 assert(this->Iterator !=
nullptr);
173 assert(!this->Iterator->IsDoneWithTraversal());
174 this->Iterator->GoToNextItem();
177 DataObjectTreeIteratorReference
GetData()
const
179 assert(this->Iterator !=
nullptr);
180 assert(!this->Iterator->IsDoneWithTraversal());
181 return DataObjectTreeIteratorReference{ this->Iterator };
184 mutable SmartIterator Iterator;
205 : DataObjectTree(cds)
208 assert(this->DataObjectTree);
219 auto iter = this->NewIterator();
220 iter->InitTraversal();
221 while (!iter->IsDoneWithTraversal())
224 iter->GoToNextItem();
240 SmartIterator NewIterator()
const
244 auto result = SmartIterator::Take(this->DataObjectTree->NewTreeIterator());
245 result->SetSkipEmptyNodes((this->Options & Opts::SkipEmptyNodes) != Opts::None);
246 result->SetVisitOnlyLeaves((this->Options & Opts::VisitOnlyLeaves) != Opts::None);
247 result->SetTraverseSubTree((this->Options & Opts::TraverseSubTree) != Opts::None);
248 result->InitTraversal();
256 VTK_ABI_NAMESPACE_END
260 #endif // vtkDataObjectTreeRange_h
std::forward_iterator_tag iterator_category
vtkDataObjectTree * GetDataObjectTree() const noexcept
const_iterator cbegin() const
provides implementation for most abstract methods in the superclass vtkCompositeDataSet ...
vtk::CompositeDataSetNodeReference< vtkDataObjectTreeIterator, DataObjectTreeIterator > DataObjectTreeIteratorReference
DataObjectTreeIterator operator++(int)
Specialization of tuple ranges and iterators for vtkAOSDataArrayTemplate.
DataObjectTreeOptions GetOptions() const noexcept
const_iterator cend() const
DataObjectTreeIterator(const DataObjectTreeIterator &o)
int IsDoneWithTraversal() override
Test whether the iterator is finished with the traversal.
friend bool operator==(const DataObjectTreeIterator &lhs, const DataObjectTreeIterator &rhs)
friend bool operator!=(const DataObjectTreeIterator &lhs, const DataObjectTreeIterator &rhs)
DataObjectTreeRange(vtkDataObjectTree *cds, DataObjectTreeOptions opts=DataObjectTreeOptions::None)
DataObjectTreeIterator & operator++()
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
unsigned int GetCurrentFlatIndex() override
Flat index is an index obtained by traversing the tree in preorder.
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.
A reference proxy into a vtkCompositeDataSet, obtained by dereferencing an iterator from the vtk::Ran...
pointer operator->() const
reference operator*() const
superclass for composite data iterators
friend void swap(DataObjectTreeIterator &lhs, DataObjectTreeIterator &rhs) noexcept
DataObjectTreeIterator(SmartIterator &&iter) noexcept
DataObjectTreeIterator() noexcept
general representation of visualization data