Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

dox/Common/vtkIdTypeArray.h

Go to the documentation of this file.
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkIdTypeArray.h,v $ 00005 00006 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen 00007 All rights reserved. 00008 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00009 00010 This software is distributed WITHOUT ANY WARRANTY; without even 00011 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00012 PURPOSE. See the above copyright notice for more information. 00013 00014 =========================================================================*/ 00026 #ifndef __vtkIdTypeArray_h 00027 #define __vtkIdTypeArray_h 00028 00029 #include "vtkDataArray.h" 00030 00031 class VTK_COMMON_EXPORT vtkIdTypeArray : public vtkDataArray 00032 { 00033 public: 00034 static vtkIdTypeArray *New(); 00035 00036 vtkTypeRevisionMacro(vtkIdTypeArray, vtkDataArray); 00037 void PrintSelf(ostream& os, vtkIndent indent); 00038 00041 int Allocate(vtkIdType sz, vtkIdType ext=1000); 00042 00044 void Initialize(); 00045 00047 00048 int GetDataType() 00049 {return VTK_ID_TYPE;} 00051 00053 int GetDataTypeSize() { return sizeof(vtkIdType); } 00054 00056 00057 void Squeeze() 00058 {this->ResizeAndExtend (this->MaxId+1);} 00060 00062 virtual void Resize(vtkIdType numTuples); 00063 00065 void SetNumberOfTuples(vtkIdType number); 00066 00069 double *GetTuple(vtkIdType i); 00070 00072 void GetTuple(vtkIdType i, double * tuple); 00073 00075 00076 void SetTuple(vtkIdType i, const float * tuple); 00077 void SetTuple(vtkIdType i, const double * tuple); 00079 00081 00083 void InsertTuple(vtkIdType i, const float * tuple); 00084 void InsertTuple(vtkIdType i, const double * tuple); 00086 00088 00090 vtkIdType InsertNextTuple(const float * tuple); 00091 vtkIdType InsertNextTuple(const double * tuple); 00093 00095 00096 vtkIdType GetValue(vtkIdType id) 00097 {return this->Array[id];} 00099 00101 00103 void SetValue(vtkIdType id, vtkIdType value) 00104 {this->Array[id] = value;} 00106 00110 void SetNumberOfValues(vtkIdType number); 00111 00113 void InsertValue(vtkIdType id, vtkIdType i); 00114 00117 vtkIdType InsertNextValue(vtkIdType i); 00118 00120 00122 vtkIdType *GetPointer(vtkIdType id) 00123 {return this->Array + id;} 00124 void *GetVoidPointer(vtkIdType id) 00125 {return (void *)this->GetPointer(id);} 00127 00131 vtkIdType *WritePointer(vtkIdType id, vtkIdType number); 00132 00134 void DeepCopy(vtkDataArray *ia); 00135 00137 00143 void SetArray(vtkIdType* array, vtkIdType size, int save); 00144 void SetVoidArray(void *array, vtkIdType size, int save) 00145 {this->SetArray((vtkIdType*)array, size, save);}; 00147 00148 protected: 00149 vtkIdTypeArray(vtkIdType numComp=1); 00150 ~vtkIdTypeArray(); 00151 00152 vtkIdType *Array; // pointer to data 00153 vtkIdType *ResizeAndExtend(vtkIdType sz); // function to resize data 00154 00155 int TupleSize; //used for data conversion 00156 double *Tuple; 00157 00158 int SaveUserArray; 00159 private: 00160 vtkIdTypeArray(const vtkIdTypeArray&); // Not implemented. 00161 void operator=(const vtkIdTypeArray&); // Not implemented. 00162 }; 00163 00164 00165 inline void vtkIdTypeArray::SetNumberOfValues(vtkIdType number) 00166 { 00167 this->Allocate(number); 00168 this->MaxId = number - 1; 00169 } 00170 00171 inline vtkIdType *vtkIdTypeArray::WritePointer(vtkIdType id, 00172 vtkIdType number) 00173 { 00174 vtkIdType newSize=id+number; 00175 if ( newSize > this->Size ) 00176 { 00177 this->ResizeAndExtend(newSize); 00178 } 00179 if ( (--newSize) > this->MaxId ) 00180 { 00181 this->MaxId = newSize; 00182 } 00183 return this->Array + id; 00184 } 00185 00186 inline void vtkIdTypeArray::InsertValue(vtkIdType id, vtkIdType i) 00187 { 00188 if ( id >= this->Size ) 00189 { 00190 this->ResizeAndExtend(id+1); 00191 } 00192 this->Array[id] = i; 00193 if ( id > this->MaxId ) 00194 { 00195 this->MaxId = id; 00196 } 00197 } 00198 00199 inline vtkIdType vtkIdTypeArray::InsertNextValue(vtkIdType i) 00200 { 00201 this->InsertValue (++this->MaxId,i); 00202 return this->MaxId; 00203 } 00204 00205 00206 #endif