VTK
vtkArray.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkArray.h
5 
6 -------------------------------------------------------------------------
7  Copyright 2008 Sandia Corporation.
8  Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
9  the U.S. Government retains certain rights in this software.
10 -------------------------------------------------------------------------
11 
12  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
13  All rights reserved.
14  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
15 
16  This software is distributed WITHOUT ANY WARRANTY; without even
17  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
18  PURPOSE. See the above copyright notice for more information.
19 
20 =========================================================================*/
21 
59 #ifndef __vtkArray_h
60 #define __vtkArray_h
61 
62 #include "vtkArrayCoordinates.h"
63 #include "vtkArrayExtents.h"
64 #include "vtkObject.h"
65 #include "vtkStdString.h"
66 #include "vtkVariant.h"
67 
69 {
70 public:
71  vtkTypeMacro(vtkArray, vtkObject);
72  void PrintSelf(ostream &os, vtkIndent indent);
73 
77 
78 //BTX
79  enum
80  {
82  DENSE = 0,
84  SPARSE = 1
85  };
86 //ETX
87 
94  static vtkArray* CreateArray(int StorageType, int ValueType);
95 
99  virtual bool IsDense() = 0;
100 
102 
110  void Resize(const CoordinateT i);
111  void Resize(const CoordinateT i, const CoordinateT j);
112  void Resize(const CoordinateT i, const CoordinateT j, const CoordinateT k);
113  void Resize(const vtkArrayRange& i);
114  void Resize(const vtkArrayRange& i, const vtkArrayRange& j);
115  void Resize(const vtkArrayRange& i, const vtkArrayRange& j, const vtkArrayRange& k);
116  void Resize(const vtkArrayExtents& extents);
118 
120 
122  const vtkArrayRange GetExtent(DimensionT dimension);
123  // Description:
124  // Returns the extents (the number of dimensions and size along each
125  // dimension) of the array.
126  virtual const vtkArrayExtents& GetExtents() = 0;
128 
131  DimensionT GetDimensions();
132 
139  SizeT GetSize();
140 
144  virtual SizeT GetNonNullSize() = 0;
145 
147 
148  void SetName(const vtkStdString& name);
149  // Description:
150  // Returns the array name.
151  vtkStdString GetName();
153 
155  void SetDimensionLabel(DimensionT i, const vtkStdString& label);
156 
158  vtkStdString GetDimensionLabel(DimensionT i);
159 
165  virtual void GetCoordinatesN(const SizeT n, vtkArrayCoordinates& coordinates) = 0;
166 
168 
171  inline vtkVariant GetVariantValue(CoordinateT i);
172  inline vtkVariant GetVariantValue(CoordinateT i, CoordinateT j);
173  inline vtkVariant GetVariantValue(CoordinateT i, CoordinateT j, CoordinateT k);
174  virtual vtkVariant GetVariantValue(const vtkArrayCoordinates& coordinates) = 0;
176 
182  virtual vtkVariant GetVariantValueN(const SizeT n) = 0;
183 
185 
188  inline void SetVariantValue(CoordinateT i, const vtkVariant& value);
189  inline void SetVariantValue(CoordinateT i, CoordinateT j, const vtkVariant& value);
190  inline void SetVariantValue(CoordinateT i, CoordinateT j, CoordinateT k, const vtkVariant& value);
191  virtual void SetVariantValue(const vtkArrayCoordinates& coordinates, const vtkVariant& value) = 0;
193 
199  virtual void SetVariantValueN(const SizeT n, const vtkVariant& value) = 0;
200 
202 
204  virtual void CopyValue(vtkArray* source, const vtkArrayCoordinates& source_coordinates, const vtkArrayCoordinates& target_coordinates) = 0;
205  virtual void CopyValue(vtkArray* source, const SizeT source_index, const vtkArrayCoordinates& target_coordinates) = 0;
206  virtual void CopyValue(vtkArray* source, const vtkArrayCoordinates& source_coordinates, const SizeT target_index) = 0;
208 
210  virtual vtkArray* DeepCopy() = 0;
211 
212 protected:
213  vtkArray();
214  ~vtkArray();
215 
216 private:
217  vtkArray(const vtkArray&); // Not implemented
218  void operator=(const vtkArray&); // Not implemented
219 
221  vtkStdString Name;
222 
225  virtual void InternalResize(const vtkArrayExtents&) = 0;
226 
228  virtual void InternalSetDimensionLabel(DimensionT i, const vtkStdString& label) = 0;
229 
231 
232  virtual vtkStdString InternalGetDimensionLabel(DimensionT i) = 0;
233 };
235 
237 {
238  return this->GetVariantValue(vtkArrayCoordinates(i));
239 }
240 
242 {
243  return this->GetVariantValue(vtkArrayCoordinates(i, j));
244 }
245 
247 {
248  return this->GetVariantValue(vtkArrayCoordinates(i, j, k));
249 }
250 
252 {
253  this->SetVariantValue(vtkArrayCoordinates(i), value);
254 }
255 
257 {
258  this->SetVariantValue(vtkArrayCoordinates(i, j), value);
259 }
260 
262 {
263  this->SetVariantValue(vtkArrayCoordinates(i, j, k), value);
264 }
265 
266 #endif
267 
vtkVariant GetVariantValue(CoordinateT i)
Definition: vtkArray.h:236
Stores coordinate into an N-way array.
Wrapper around vtkstd::string to keep symbols short.
Definition: vtkStdString.h:45
abstract base class for most VTK objects
Definition: vtkObject.h:60
Stores the number of dimensions and valid coordinate ranges along each dimension for vtkArray...
Abstract interface for N-dimensional arrays.
Definition: vtkArray.h:68
Stores a half-open range of array coordinates.
Definition: vtkArrayRange.h:49
A atomic type representing the union of many types.
Definition: vtkVariant.h:72
vtkArrayExtents::DimensionT DimensionT
Definition: vtkArray.h:75
virtual void PrintSelf(ostream &os, vtkIndent indent)
a simple class to control print indentation
Definition: vtkIndent.h:37
vtkTypeUInt64 SizeT
void SetVariantValue(CoordinateT i, const vtkVariant &value)
Definition: vtkArray.h:251
#define VTK_COMMON_EXPORT
vtkArrayExtents::SizeT SizeT
Definition: vtkArray.h:76
vtkArrayCoordinates::CoordinateT CoordinateT
vtkArrayExtents::CoordinateT CoordinateT
Definition: vtkArray.h:74
vtkArrayCoordinates::DimensionT DimensionT