Main Page Class Hierarchy Alphabetical List Compound List File List Compound Members File Members Related Pages
Common/vtkVoidArray.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00042 #ifndef __vtkVoidArray_h
00043 #define __vtkVoidArray_h
00044
00045 #include "vtkDataArray.h"
00046
00047 class VTK_COMMON_EXPORT vtkVoidArray : public vtkDataArray
00048 {
00049 public:
00050 static vtkVoidArray *New();
00051
00052 vtkTypeRevisionMacro(vtkVoidArray,vtkDataArray);
00053 void PrintSelf(ostream& os, vtkIndent indent);
00054
00057 int Allocate(const vtkIdType sz, const vtkIdType ext=1000);
00058
00060 void Initialize();
00061
00063 int GetDataType() {return VTK_VOID;};
00064
00066 int GetDataTypeSize() { return sizeof(void*); }
00067
00069 void SetNumberOfTuples(const vtkIdType number);
00070
00072 float *GetTuple(const vtkIdType i);
00073
00075
00076 void GetTuple(const vtkIdType i, float * tuple);
00077 void GetTuple(const vtkIdType i, double * tuple);
00079
00081
00082 void SetTuple(const vtkIdType i, const float * tuple);
00083 void SetTuple(const vtkIdType i, const double * tuple);
00085
00087
00089 void InsertTuple(const vtkIdType i, const float * tuple);
00090 void InsertTuple(const vtkIdType i, const double * tuple);
00092
00094
00096 vtkIdType InsertNextTuple(const float * tuple);
00097 vtkIdType InsertNextTuple(const double * tuple);
00099
00101 void Squeeze() {this->ResizeAndExtend (this->MaxId+1);};
00102
00104 virtual void Resize(vtkIdType numTuples);
00105
00107 void* GetValue(const vtkIdType id) {return this->Array[id];};
00108
00112 void SetNumberOfValues(const vtkIdType number);
00113
00116 void SetValue(const vtkIdType id, void *value);
00117
00119 void InsertValue(const vtkIdType id, void* p);
00120
00123 vtkIdType InsertNextValue(void* v);
00124
00126
00128 void** GetPointer(const vtkIdType id) {return this->Array + id;}
00129 void *GetVoidPointer(const vtkIdType id) {return this->GetPointer(id);};
00131
00135 void** WritePointer(const vtkIdType id, const vtkIdType number);
00136
00138 void DeepCopy(vtkDataArray *da);
00139
00140
00141 protected:
00142 vtkVoidArray();
00143 ~vtkVoidArray();
00144
00145 void** Array;
00146 void** ResizeAndExtend(const vtkIdType sz);
00147
00148 int TupleSize;
00149 float *Tuple;
00150 private:
00151 vtkVoidArray(const vtkVoidArray&);
00152 void operator=(const vtkVoidArray&);
00153 };
00154
00155
00156 inline void vtkVoidArray::SetNumberOfValues(const vtkIdType number)
00157 {
00158 this->Allocate(number);
00159 this->MaxId = number - 1;
00160 }
00161
00162 inline void vtkVoidArray::SetValue(const vtkIdType id, void *value)
00163 {
00164 this->Array[id] = value;
00165 }
00166
00167 inline void** vtkVoidArray::WritePointer(const vtkIdType id,
00168 const vtkIdType number)
00169 {
00170 vtkIdType newSize=id+number;
00171 if ( newSize > this->Size )
00172 {
00173 this->ResizeAndExtend(newSize);
00174 }
00175 if ( (--newSize) > this->MaxId )
00176 {
00177 this->MaxId = newSize;
00178 }
00179 return this->Array + id;
00180 }
00181
00182 inline void vtkVoidArray::InsertValue(const vtkIdType id, void* p)
00183 {
00184 if ( id >= this->Size )
00185 {
00186 this->ResizeAndExtend(id+1);
00187 }
00188 this->Array[id] = p;
00189 if ( id > this->MaxId )
00190 {
00191 this->MaxId = id;
00192 }
00193 }
00194
00195 inline vtkIdType vtkVoidArray::InsertNextValue(void* p)
00196 {
00197 this->InsertValue (++this->MaxId,p);
00198 return this->MaxId;
00199 }
00200
00201
00202 #endif