16 #ifndef vtkCompositeDataSetRange_h 
   17 #define vtkCompositeDataSetRange_h 
   50 struct CompositeDataSetRange;
 
   51 struct CompositeDataSetIterator;
 
   59   : 
public std::iterator<std::forward_iterator_tag, vtkDataObject*, int,
 
   60       CompositeDataSetIteratorReference, CompositeDataSetIteratorReference>
 
   63   using Superclass = std::iterator<std::forward_iterator_tag, 
vtkDataObject*, int,
 
   72   using pointer = 
typename Superclass::pointer;
 
   76     : Iterator(o.Iterator ? 
SmartIterator::Take(o.Iterator->NewInstance()) : nullptr)
 
   78     this->CopyState(o.Iterator);
 
   86     this->CopyState(o.Iterator);
 
  133     return !(lhs == rhs); 
 
  139     swap(lhs.Iterator, rhs.Iterator);
 
  154   void CopyState(InternalIterator* 
source)
 
  158       assert(this->Iterator != 
nullptr);
 
  159       this->Iterator->SetDataSet(
source->GetDataSet());
 
  160       this->Iterator->SetSkipEmptyNodes(
source->GetSkipEmptyNodes());
 
  161       this->Iterator->InitTraversal();
 
  162       this->AdvanceTo(
source->GetCurrentFlatIndex());
 
  166   void AdvanceTo(
const unsigned int flatIdx)
 
  168     assert(this->Iterator != 
nullptr);
 
  169     assert(this->Iterator->GetCurrentFlatIndex() <= flatIdx);
 
  170     while (this->Iterator->GetCurrentFlatIndex() < flatIdx)
 
  178     assert(this->Iterator != 
nullptr);
 
  179     assert(!this->Iterator->IsDoneWithTraversal());
 
  180     this->Iterator->GoToNextItem();
 
  185     assert(this->Iterator != 
nullptr);
 
  186     assert(!this->Iterator->IsDoneWithTraversal());
 
  190   mutable SmartIterator Iterator;
 
  213     : CompositeDataSet(cds)
 
  216     assert(this->CompositeDataSet);
 
  227     auto iter = this->NewIterator();
 
  228     iter->InitTraversal();
 
  229     while (!iter->IsDoneWithTraversal())
 
  232       iter->GoToNextItem();
 
  248   SmartIterator NewIterator()
 const 
  253     result->SetSkipEmptyNodes((this->Options & Opts::SkipEmptyNodes) != Opts::None);
 
  254     result->InitTraversal();
 
  265 #endif // __VTK_WRAP__ 
  267 #endif // vtkCompositeDataSetRange_h