00001 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- 00002 * 00003 * $Id: vtkObjectBaseMap.h,v 1.8 2004/06/03 18:58:28 xpxqx Exp $ 00004 * 00005 * Copyright (c) 2004 Sean McInerney 00006 * All rights reserved. 00007 * 00008 * See Copyright.txt or http://vtkextensions.sourceforge.net/Copyright.html 00009 * for details. 00010 * 00011 * This software is distributed WITHOUT ANY WARRANTY; without even 00012 * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00013 * PURPOSE. See the above copyright notice for more information. 00014 * 00015 */ 00016 #ifndef VTK_OBJECT_BASE_MAP_H_ 00017 # define VTK_OBJECT_BASE_MAP_H_ 00018 # include "vtkAbstractMap.h" 00019 # include "vtkObjectBaseMapIterator.h" // Covariant return type. 00020 00021 VTK_EXTENSIONS_CONTAINERS_NAMESPACE_BEGIN 00022 00023 class vtkObjectBaseMapInternal; 00024 00038 class VTK_EXTENSIONS_CONTAINERS_EXPORT vtkObjectBaseMap 00039 : public vtkAbstractMap 00040 { 00041 public: 00042 static vtkObjectBaseMap* New (void); 00043 vtkTypeRevisionMacro (vtkObjectBaseMap, vtkAbstractMap); 00044 00046 vtkIdType GetSize (void) const; 00047 00049 int IsEmpty (void) const; 00050 00052 vtkIdType GetMaxSize (void) const; 00053 00055 void Clear (void); 00056 00061 virtual int Swap (vtkObjectBaseMap* container); 00062 00067 vtkIdType GetCapacity (void) const; 00068 00073 virtual vtkObjectBase* Find (const char* key) const; 00074 00079 virtual int Insert (const char* key, 00080 vtkObjectBase* object); 00081 00086 int Erase (const char* key); 00087 00092 virtual const char* FindKey (const vtkObjectBase* object); 00093 00100 const char* FindNextKey (void); 00101 00109 vtkObjectBase* Front (void) const; 00110 00116 int Front (const char* & key, 00117 vtkObjectBase* & object) const; 00118 00124 vtkObjectBase* Back (void) const; 00125 00131 int Back (const char* & key, 00132 vtkObjectBase* & object) const; 00136 vtkObjectBaseMapIterator* CreateIterator (void); 00137 00138 protected: 00139 vtkObjectBaseMap (void); 00140 ~vtkObjectBaseMap(); 00141 00142 private: 00143 //BTX 00144 vtkObjectBaseMapInternal* Internal; 00145 00146 friend class vtkObjectBaseMapIterator; 00147 00150 int Swap (vtkAbstractMap* a) 00151 { return this->Swap(static_cast<vtkObjectBaseMap*>(a)); } 00153 //ETX 00154 00155 private: 00161 vtkObjectBaseMap (const vtkObjectBaseMap&); 00162 void operator= (const vtkObjectBaseMap&); 00164 }; 00165 00166 VTK_EXTENSIONS_CONTAINERS_NAMESPACE_END 00167 00168 #endif /* VTK_OBJECT_BASE_MAP_H_ */ 00169 /* 00170 * End of: $Id: vtkObjectBaseMap.h,v 1.8 2004/06/03 18:58:28 xpxqx Exp $. 00171 * 00172 */