00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef VTK_ITERATOR_H_
00017 # define VTK_ITERATOR_H_
00018 # include "vtkContainersConfigure.h"
00019 # include "vtkObject.h"
00020
00021 class vtkGarbageCollector;
00022
00023 class vtkContainer;
00024
00037 class VTK_CONTAINERS_EXPORT vtkIterator : public vtkObject
00038 {
00039 public:
00040 vtkTypeRevisionMacro (vtkIterator, vtkObject);
00041 void PrintSelf (ostream&, vtkIndent);
00042
00044 virtual vtkContainer* GetContainer (void) const;
00045
00054 virtual vtkIdType GetPosition (void) const;
00055
00062 virtual const char* GetKey (void) const;
00063
00068 virtual vtkObjectBase* GetItem (void) const;
00069
00074 virtual int SetItem (vtkObjectBase* object) = 0;
00086 virtual int InitTraversal (void) = 0;
00087
00094 virtual int Increment (void) = 0;
00095
00102 virtual int Decrement (void) = 0;
00106 void Register (vtkObjectBase*);
00107
00109 void UnRegister (vtkObjectBase*);
00110
00111 protected:
00112 vtkIterator (void);
00113 ~vtkIterator();
00114
00115
00116 friend class vtkContainer;
00117
00118 vtkContainer* Container;
00119
00121 virtual void SetContainer (vtkContainer*);
00122
00123 void ReportReferences (vtkGarbageCollector*);
00124
00125
00126 private:
00132 vtkIterator (const vtkIterator&);
00133 void operator= (const vtkIterator&);
00135 };
00136
00137 #endif
00138
00139
00140
00141