00001 /*========================================================================= 00002 00003 Module: $RCSfile: vtkVectorIterator.h,v $ 00004 00005 Copyright (c) Kitware, Inc. 00006 All rights reserved. 00007 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00008 00009 This software is distributed WITHOUT ANY WARRANTY; without even 00010 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00011 PURPOSE. See the above copyright notice for more information. 00012 00013 =========================================================================*/ 00018 #ifndef __vtkVectorIterator_h 00019 #define __vtkVectorIterator_h 00020 00021 #include "vtkAbstractIterator.h" 00022 00023 template <class DType> class vtkLinkedList; 00024 template <class DType> class vtkLinkedListNode; 00025 00026 template <class DType> 00027 class vtkVectorIterator : public vtkAbstractIterator<vtkIdType,DType> 00028 { 00029 friend class vtkVector<DType>; 00030 virtual const char* GetClassNameInternal() const { return "vtkVectorIterator"; } 00031 00032 public: 00033 00036 int GetKey(vtkIdType&); 00037 00040 int GetData(DType&); 00041 00044 int SetData(const DType&); 00045 00048 void InitTraversal(); 00049 00052 int IsDoneWithTraversal(); 00053 00055 void GoToNextItem(); 00056 00058 void GoToPreviousItem(); 00059 00061 void GoToFirstItem(); 00062 00064 void GoToLastItem(); 00065 00066 protected: 00067 static vtkVectorIterator<DType> *New(); 00068 00069 vtkVectorIterator() { 00070 this->Index = 0; 00071 } 00072 virtual ~vtkVectorIterator() {} 00073 00074 vtkIdType Index; 00075 00076 private: 00077 vtkVectorIterator(const vtkVectorIterator&); // Not implemented 00078 void operator=(const vtkVectorIterator&); // Not implemented 00079 }; 00080 00081 #ifdef VTK_NO_EXPLICIT_TEMPLATE_INSTANTIATION 00082 #include "vtkVectorIterator.txx" 00083 #endif 00084 00085 #endif 00086 00087 00088