/*========================================================================= Program: Visualization Toolkit Module: $RCSfile: vtkCollectionIterator.h,v $ Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen All rights reserved. See Copyright.txt or http://www.kitware.com/Copyright.htm for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notice for more information. =========================================================================*/ // .NAME vtkCollectionIterator - iterator through a vtkCollection. // .SECTION Description // vtkCollectionIterator provides an alternative way to traverse // through the objects in a vtkCollection. Unlike the collection's // built in interface, this allows multiple iterators to // simultaneously traverse the collection. If items are removed from // the collection, only the iterators currently pointing to those // items are invalidated. Other iterators will still continue to // function normally. #ifndef __vtkCollectionIterator_h #define __vtkCollectionIterator_h #include "vtkObject.h" class vtkCollection; class vtkCollectionElement; class VTK_COMMON_EXPORT vtkCollectionIterator : public vtkObject { public: vtkTypeRevisionMacro(vtkCollectionIterator,vtkObject); void PrintSelf(ostream& os, vtkIndent indent); static vtkCollectionIterator* New(); // Description: // Set/Get the collection over which to iterate. virtual void SetCollection(vtkCollection*); vtkGetObjectMacro(Collection, vtkCollection); // Description: // Position the iterator at the first item in the collection. void InitTraversal() { this->GoToFirstItem(); } // Description: // Position the iterator at the first item in the collection. void GoToFirstItem(); // Description: // Move the iterator to the next item in the collection. void GoToNextItem(); // Description: // Test whether the iterator is currently positioned at a valid item. // Returns 1 for yes, 0 for no. int IsDoneWithTraversal(); // Description: // Get the item at the current iterator position. Valid only when // IsDoneWithTraversal() returns 1. vtkObject* GetCurrentObject(); #ifdef VTK_WORKAROUND_WINDOWS_MANGLE # define GetObjectA GetObject # define GetObjectW GetObject #endif // Description: // @deprecated Replaced by vtkCollectionIterator::GetCurrentObject() as // of VTK 5.0. VTK_LEGACY(vtkObject* GetObject()); #ifdef VTK_WORKAROUND_WINDOWS_MANGLE # undef GetObjectW # undef GetObjectA //BTX VTK_LEGACY(vtkObject* GetObjectA()); VTK_LEGACY(vtkObject* GetObjectW()); //ETX #endif protected: vtkCollectionIterator(); ~vtkCollectionIterator(); // The collection over which we are iterating. vtkCollection* Collection; // The current iterator position. vtkCollectionElement* Element; vtkObject* GetObjectInternal(); private: vtkCollectionIterator(const vtkCollectionIterator&); // Not implemented void operator=(const vtkCollectionIterator&); // Not implemented }; #endif