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
00054 #ifndef __vtkIntArray_h
00055 #define __vtkIntArray_h
00056
00057 #include "vtkDataArray.h"
00058
00059 class VTK_EXPORT vtkIntArray : public vtkDataArray
00060 {
00061 public:
00062 static vtkIntArray *New();
00063
00064 vtkTypeMacro(vtkIntArray,vtkDataArray);
00065 void PrintSelf(ostream& os, vtkIndent indent);
00066
00068 int Allocate(const int sz, const int ext=1000);
00069
00071 void Initialize();
00072
00074 vtkDataArray *MakeObject();
00075
00077 int GetDataType()
00078 {return VTK_INT;}
00079
00081 void Squeeze()
00082 {this->Resize (this->MaxId+1);}
00083
00085 void SetNumberOfTuples(const int number);
00086
00089 float *GetTuple(const int i);
00090
00092 void GetTuple(const int i, float * tuple);
00093 void GetTuple(const int i, double * tuple);
00094
00096 void SetTuple(const int i, const float * tuple);
00097 void SetTuple(const int i, const double * tuple);
00098
00101 void InsertTuple(const int i, const float * tuple);
00102 void InsertTuple(const int i, const double * tuple);
00103
00106 int InsertNextTuple(const float * tuple);
00107 int InsertNextTuple(const double * tuple);
00108
00110 int GetValue(const int id)
00111 {return this->Array[id];}
00112
00115 void SetValue(const int id, const int value)
00116 {this->Array[id] = value;}
00117
00121 void SetNumberOfValues(const int number);
00122
00124 void InsertValue(const int id, const int i);
00125
00128 int InsertNextValue(const int i);
00129
00132 int *GetPointer(const int id)
00133 {return this->Array + id;}
00134 void *GetVoidPointer(const int id)
00135 {return (void *)this->GetPointer(id);}
00136
00140 int *WritePointer(const int id, const int number);
00141
00143 void DeepCopy(vtkDataArray *ia);
00144
00151 void SetArray(int* array, int size, int save);
00152 void SetVoidArray(void *array,int size, int save)
00153 {this->SetArray((int*)array, size, save);};
00154
00155 #ifndef VTK_REMOVE_LEGACY_CODE
00156
00157 void DeepCopy(vtkDataArray &ia)
00158 {VTK_LEGACY_METHOD(DeepCopy,"3.2");this->DeepCopy(&ia);}
00159 #endif
00160
00161 protected:
00162 vtkIntArray(int numComp=1);
00163 ~vtkIntArray();
00164 vtkIntArray(const vtkIntArray&) {};
00165 void operator=(const vtkIntArray&) {};
00166
00167 int *Array;
00168 int *Resize(const int sz);
00169
00170 int TupleSize;
00171 float *Tuple;
00172
00173 int SaveUserArray;
00174 };
00175
00176
00177 inline void vtkIntArray::SetNumberOfValues(const int number)
00178 {
00179 this->Allocate(number);
00180 this->MaxId = number - 1;
00181 }
00182
00183 inline int *vtkIntArray::WritePointer(const int id, const int number)
00184 {
00185 int newSize=id+number;
00186 if ( newSize > this->Size )
00187 {
00188 this->Resize(newSize);
00189 }
00190 if ( (--newSize) > this->MaxId )
00191 {
00192 this->MaxId = newSize;
00193 }
00194 return this->Array + id;
00195 }
00196
00197 inline void vtkIntArray::InsertValue(const int id, const int i)
00198 {
00199 if ( id >= this->Size )
00200 {
00201 this->Resize(id+1);
00202 }
00203 this->Array[id] = i;
00204 if ( id > this->MaxId )
00205 {
00206 this->MaxId = id;
00207 }
00208 }
00209
00210 inline int vtkIntArray::InsertNextValue(const int i)
00211 {
00212 this->InsertValue (++this->MaxId,i);
00213 return this->MaxId;
00214 }
00215
00216
00217 #endif