dox/Common/vtkIdTypeArray.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00030 #ifndef __vtkIdTypeArray_h
00031 #define __vtkIdTypeArray_h
00032
00033 #include "vtkDataArray.h"
00034
00035 class VTK_COMMON_EXPORT vtkIdTypeArray : public vtkDataArray
00036 {
00037 public:
00038 static vtkIdTypeArray *New();
00039
00040 vtkTypeRevisionMacro(vtkIdTypeArray, vtkDataArray);
00041 void PrintSelf(ostream& os, vtkIndent indent);
00042
00045 int Allocate(const vtkIdType sz, const vtkIdType ext=1000);
00046
00048 void Initialize();
00049
00051
00052 int GetDataType()
00053 {return VTK_ID_TYPE;}
00055
00057 int GetDataTypeSize() { return sizeof(vtkIdType); }
00058
00060
00061 void Squeeze()
00062 {this->ResizeAndExtend (this->MaxId+1);}
00064
00066 virtual void Resize(vtkIdType numTuples);
00067
00069 void SetNumberOfTuples(const vtkIdType number);
00070
00073 float *GetTuple(const vtkIdType i);
00074
00076
00077 void GetTuple(const vtkIdType i, float * tuple);
00078 void GetTuple(const vtkIdType i, double * tuple);
00080
00082
00083 void SetTuple(const vtkIdType i, const float * tuple);
00084 void SetTuple(const vtkIdType i, const double * tuple);
00086
00088
00090 void InsertTuple(const vtkIdType i, const float * tuple);
00091 void InsertTuple(const vtkIdType i, const double * tuple);
00093
00095
00097 vtkIdType InsertNextTuple(const float * tuple);
00098 vtkIdType InsertNextTuple(const double * tuple);
00100
00102
00103 vtkIdType GetValue(const vtkIdType id)
00104 {return this->Array[id];}
00106
00108
00110 void SetValue(const vtkIdType id, const vtkIdType value)
00111 {this->Array[id] = value;}
00113
00117 void SetNumberOfValues(const vtkIdType number);
00118
00120 void InsertValue(const vtkIdType id, const vtkIdType i);
00121
00124 vtkIdType InsertNextValue(const vtkIdType i);
00125
00127
00129 vtkIdType *GetPointer(const vtkIdType id)
00130 {return this->Array + id;}
00131 void *GetVoidPointer(const vtkIdType id)
00132 {return (void *)this->GetPointer(id);}
00134
00138 vtkIdType *WritePointer(const vtkIdType id, const vtkIdType number);
00139
00141 void DeepCopy(vtkDataArray *ia);
00142
00144
00150 void SetArray(vtkIdType* array, vtkIdType size, int save);
00151 void SetVoidArray(void *array, vtkIdType size, int save)
00152 {this->SetArray((vtkIdType*)array, size, save);};
00154
00155 protected:
00156 vtkIdTypeArray(vtkIdType numComp=1);
00157 ~vtkIdTypeArray();
00158
00159 vtkIdType *Array;
00160 vtkIdType *ResizeAndExtend(const vtkIdType sz);
00161
00162 int TupleSize;
00163 float *Tuple;
00164
00165 int SaveUserArray;
00166 private:
00167 vtkIdTypeArray(const vtkIdTypeArray&);
00168 void operator=(const vtkIdTypeArray&);
00169 };
00170
00171
00172 inline void vtkIdTypeArray::SetNumberOfValues(const vtkIdType number)
00173 {
00174 this->Allocate(number);
00175 this->MaxId = number - 1;
00176 }
00177
00178 inline vtkIdType *vtkIdTypeArray::WritePointer(const vtkIdType id,
00179 const vtkIdType number)
00180 {
00181 vtkIdType newSize=id+number;
00182 if ( newSize > this->Size )
00183 {
00184 this->ResizeAndExtend(newSize);
00185 }
00186 if ( (--newSize) > this->MaxId )
00187 {
00188 this->MaxId = newSize;
00189 }
00190 return this->Array + id;
00191 }
00192
00193 inline void vtkIdTypeArray::InsertValue(const vtkIdType id, const vtkIdType i)
00194 {
00195 if ( id >= this->Size )
00196 {
00197 this->ResizeAndExtend(id+1);
00198 }
00199 this->Array[id] = i;
00200 if ( id > this->MaxId )
00201 {
00202 this->MaxId = id;
00203 }
00204 }
00205
00206 inline vtkIdType vtkIdTypeArray::InsertNextValue(const vtkIdType i)
00207 {
00208 this->InsertValue (++this->MaxId,i);
00209 return this->MaxId;
00210 }
00211
00212
00213 #endif