00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00059 #ifndef __vtkArray_h
00060 #define __vtkArray_h
00061
00062 #include "vtkArrayCoordinates.h"
00063 #include "vtkArrayExtents.h"
00064 #include "vtkObject.h"
00065 #include "vtkStdString.h"
00066 #include "vtkVariant.h"
00067
00068 class VTK_COMMON_EXPORT vtkArray : public vtkObject
00069 {
00070 public:
00071 vtkTypeMacro(vtkArray, vtkObject);
00072 void PrintSelf(ostream &os, vtkIndent indent);
00073
00074 typedef vtkArrayExtents::CoordinateT CoordinateT;
00075 typedef vtkArrayExtents::DimensionT DimensionT;
00076 typedef vtkArrayExtents::SizeT SizeT;
00077
00078
00079 enum
00080 {
00082 DENSE = 0,
00084 SPARSE = 1
00085 };
00086
00087
00094 static vtkArray* CreateArray(int StorageType, int ValueType);
00095
00099 virtual bool IsDense() = 0;
00100
00102
00110 void Resize(const CoordinateT i);
00111 void Resize(const CoordinateT i, const CoordinateT j);
00112 void Resize(const CoordinateT i, const CoordinateT j, const CoordinateT k);
00113 void Resize(const vtkArrayRange& i);
00114 void Resize(const vtkArrayRange& i, const vtkArrayRange& j);
00115 void Resize(const vtkArrayRange& i, const vtkArrayRange& j, const vtkArrayRange& k);
00116 void Resize(const vtkArrayExtents& extents);
00118
00120
00122 const vtkArrayRange GetExtent(DimensionT dimension);
00123
00124
00125
00126 virtual const vtkArrayExtents& GetExtents() = 0;
00128
00131 DimensionT GetDimensions();
00132
00139 SizeT GetSize();
00140
00144 virtual SizeT GetNonNullSize() = 0;
00145
00147
00148 void SetName(const vtkStdString& name);
00149
00150
00151 vtkStdString GetName();
00153
00155 void SetDimensionLabel(DimensionT i, const vtkStdString& label);
00156
00158 vtkStdString GetDimensionLabel(DimensionT i);
00159
00165 virtual void GetCoordinatesN(const SizeT n, vtkArrayCoordinates& coordinates) = 0;
00166
00168
00171 inline vtkVariant GetVariantValue(CoordinateT i);
00172 inline vtkVariant GetVariantValue(CoordinateT i, CoordinateT j);
00173 inline vtkVariant GetVariantValue(CoordinateT i, CoordinateT j, CoordinateT k);
00174 virtual vtkVariant GetVariantValue(const vtkArrayCoordinates& coordinates) = 0;
00176
00182 virtual vtkVariant GetVariantValueN(const SizeT n) = 0;
00183
00185
00188 inline void SetVariantValue(CoordinateT i, const vtkVariant& value);
00189 inline void SetVariantValue(CoordinateT i, CoordinateT j, const vtkVariant& value);
00190 inline void SetVariantValue(CoordinateT i, CoordinateT j, CoordinateT k, const vtkVariant& value);
00191 virtual void SetVariantValue(const vtkArrayCoordinates& coordinates, const vtkVariant& value) = 0;
00193
00199 virtual void SetVariantValueN(const SizeT n, const vtkVariant& value) = 0;
00200
00202
00204 virtual void CopyValue(vtkArray* source, const vtkArrayCoordinates& source_coordinates, const vtkArrayCoordinates& target_coordinates) = 0;
00205 virtual void CopyValue(vtkArray* source, const SizeT source_index, const vtkArrayCoordinates& target_coordinates) = 0;
00206 virtual void CopyValue(vtkArray* source, const vtkArrayCoordinates& source_coordinates, const SizeT target_index) = 0;
00208
00210 virtual vtkArray* DeepCopy() = 0;
00211
00212 protected:
00213 vtkArray();
00214 ~vtkArray();
00215
00216 private:
00217 vtkArray(const vtkArray&);
00218 void operator=(const vtkArray&);
00219
00221 vtkStdString Name;
00222
00225 virtual void InternalResize(const vtkArrayExtents&) = 0;
00226
00228 virtual void InternalSetDimensionLabel(DimensionT i, const vtkStdString& label) = 0;
00229
00231
00232 virtual vtkStdString InternalGetDimensionLabel(DimensionT i) = 0;
00233 };
00235
00236 vtkVariant vtkArray::GetVariantValue(CoordinateT i)
00237 {
00238 return this->GetVariantValue(vtkArrayCoordinates(i));
00239 }
00240
00241 vtkVariant vtkArray::GetVariantValue(CoordinateT i, CoordinateT j)
00242 {
00243 return this->GetVariantValue(vtkArrayCoordinates(i, j));
00244 }
00245
00246 vtkVariant vtkArray::GetVariantValue(CoordinateT i, CoordinateT j, CoordinateT k)
00247 {
00248 return this->GetVariantValue(vtkArrayCoordinates(i, j, k));
00249 }
00250
00251 void vtkArray::SetVariantValue(CoordinateT i, const vtkVariant& value)
00252 {
00253 this->SetVariantValue(vtkArrayCoordinates(i), value);
00254 }
00255
00256 void vtkArray::SetVariantValue(CoordinateT i, CoordinateT j, const vtkVariant& value)
00257 {
00258 this->SetVariantValue(vtkArrayCoordinates(i, j), value);
00259 }
00260
00261 void vtkArray::SetVariantValue(CoordinateT i, CoordinateT j, CoordinateT k, const vtkVariant& value)
00262 {
00263 this->SetVariantValue(vtkArrayCoordinates(i, j, k), value);
00264 }
00265
00266 #endif
00267