00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00051 #ifndef __vtkVoidArray_h
00052 #define __vtkVoidArray_h
00053
00054 #include "vtkDataArray.h"
00055
00056 class VTK_EXPORT vtkVoidArray : public vtkDataArray
00057 {
00058 public:
00059 static vtkVoidArray *New();
00060
00061 vtkTypeMacro(vtkVoidArray,vtkDataArray);
00062 void PrintSelf(ostream& os, vtkIndent indent);
00063
00065 int Allocate(const int sz, const int ext=1000);
00066
00068 void Initialize();
00069
00071 vtkDataArray *MakeObject() {return vtkVoidArray::New();};
00072
00074 int GetDataType() {return VTK_VOID;};
00075
00077 void SetNumberOfTuples(const int number);
00078
00080 float *GetTuple(const int i);
00081
00083 void GetTuple(const int i, float * tuple);
00084 void GetTuple(const int i, double * tuple);
00085
00087 void SetTuple(const int i, const float * tuple);
00088 void SetTuple(const int i, const double * tuple);
00089
00092 void InsertTuple(const int i, const float * tuple);
00093 void InsertTuple(const int i, const double * tuple);
00094
00097 int InsertNextTuple(const float * tuple);
00098 int InsertNextTuple(const double * tuple);
00099
00101 void Squeeze() {this->Resize (this->MaxId+1);};
00102
00104 void* GetValue(const int id) {return this->Array[id];};
00105
00109 void SetNumberOfValues(const int number);
00110
00113 void SetValue(const int id, void *value);
00114
00116 void InsertValue(const int id, void* p);
00117
00120 int InsertNextValue(void* v);
00121
00124 void** GetPointer(const int id) {return this->Array + id;}
00125 void *GetVoidPointer(const int id) {return this->GetPointer(id);};
00126
00130 void** WritePointer(const int id, const int number);
00131
00133 void DeepCopy(vtkDataArray *da);
00134
00135 #ifndef VTK_REMOVE_LEGACY_CODE
00136
00137 void DeepCopy(vtkDataArray &da)
00138 {VTK_LEGACY_METHOD(DeepCopy,"3.2"); this->DeepCopy(&da);}
00139 #endif
00140
00141
00142 protected:
00143 vtkVoidArray();
00144 ~vtkVoidArray();
00145 vtkVoidArray(const vtkVoidArray&) {};
00146 void operator=(const vtkVoidArray&) {};
00147
00148 void** Array;
00149 void** Resize(const int sz);
00150
00151 int TupleSize;
00152 float *Tuple;
00153 };
00154
00155
00156 inline void vtkVoidArray::SetNumberOfValues(const int number)
00157 {
00158 this->Allocate(number);
00159 this->MaxId = number - 1;
00160 }
00161
00162 inline void vtkVoidArray::SetValue(const int id, void *value)
00163 {
00164 this->Array[id] = value;
00165 }
00166
00167 inline void** vtkVoidArray::WritePointer(const int id, const int number)
00168 {
00169 int newSize=id+number;
00170 if ( newSize > this->Size )
00171 {
00172 this->Resize(newSize);
00173 }
00174 if ( (--newSize) > this->MaxId )
00175 {
00176 this->MaxId = newSize;
00177 }
00178 return this->Array + id;
00179 }
00180
00181 inline void vtkVoidArray::InsertValue(const int id, void* p)
00182 {
00183 if ( id >= this->Size )
00184 {
00185 this->Resize(id+1);
00186 }
00187 this->Array[id] = p;
00188 if ( id > this->MaxId )
00189 {
00190 this->MaxId = id;
00191 }
00192 }
00193
00194 inline int vtkVoidArray::InsertNextValue(void* p)
00195 {
00196 this->InsertValue (++this->MaxId,p);
00197 return this->MaxId;
00198 }
00199
00200
00201 #endif