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 
54 #ifndef vtkArray_h
55 #define vtkArray_h
56 
57 #include "vtkCommonCoreModule.h" // For export macro
58 #include "vtkArrayCoordinates.h"
59 #include "vtkArrayExtents.h"
60 #include "vtkObject.h"
61 #include "vtkStdString.h"
62 #include "vtkVariant.h"
63 
64 class VTKCOMMONCORE_EXPORT vtkArray : public vtkObject
65 {
66 public:
67  vtkTypeMacro(vtkArray, vtkObject);
68  void PrintSelf(ostream &os, vtkIndent indent) VTK_OVERRIDE;
69 
73 
74  enum
75  {
77  DENSE = 0,
79  SPARSE = 1
80  };
81 
91  static vtkArray* CreateArray(int StorageType, int ValueType);
92 
98  virtual bool IsDense() = 0;
99 
101 
113  void Resize(const CoordinateT i);
114  void Resize(const CoordinateT i, const CoordinateT j);
115  void Resize(const CoordinateT i, const CoordinateT j, const CoordinateT k);
116  void Resize(const vtkArrayRange& i);
117  void Resize(const vtkArrayRange& i, const vtkArrayRange& j);
118  void Resize(const vtkArrayRange& i, const vtkArrayRange& j, const vtkArrayRange& k);
119  void Resize(const vtkArrayExtents& extents);
121 
126  const vtkArrayRange GetExtent(DimensionT dimension);
131  virtual const vtkArrayExtents& GetExtents() = 0;
132 
137  DimensionT GetDimensions();
138 
147  SizeT GetSize();
148 
154  virtual SizeT GetNonNullSize() = 0;
155 
159  void SetName(const vtkStdString& name);
163  vtkStdString GetName();
164 
168  void SetDimensionLabel(DimensionT i, const vtkStdString& label);
169 
173  vtkStdString GetDimensionLabel(DimensionT i);
174 
182  virtual void GetCoordinatesN(const SizeT n, vtkArrayCoordinates& coordinates) = 0;
183 
185 
190  inline vtkVariant GetVariantValue(CoordinateT i);
191  inline vtkVariant GetVariantValue(CoordinateT i, CoordinateT j);
192  inline vtkVariant GetVariantValue(CoordinateT i, CoordinateT j, CoordinateT k);
193  virtual vtkVariant GetVariantValue(const vtkArrayCoordinates& coordinates) = 0;
195 
203  virtual vtkVariant GetVariantValueN(const SizeT n) = 0;
204 
206 
211  inline void SetVariantValue(CoordinateT i, const vtkVariant& value);
212  inline void SetVariantValue(CoordinateT i, CoordinateT j, const vtkVariant& value);
213  inline void SetVariantValue(CoordinateT i, CoordinateT j, CoordinateT k, const vtkVariant& value);
214  virtual void SetVariantValue(const vtkArrayCoordinates& coordinates, const vtkVariant& value) = 0;
216 
224  virtual void SetVariantValueN(const SizeT n, const vtkVariant& value) = 0;
225 
227 
231  virtual void CopyValue(vtkArray* source, const vtkArrayCoordinates& source_coordinates, const vtkArrayCoordinates& target_coordinates) = 0;
232  virtual void CopyValue(vtkArray* source, const SizeT source_index, const vtkArrayCoordinates& target_coordinates) = 0;
233  virtual void CopyValue(vtkArray* source, const vtkArrayCoordinates& source_coordinates, const SizeT target_index) = 0;
235 
239  virtual vtkArray* DeepCopy() = 0;
240 
241 protected:
242  vtkArray();
243  ~vtkArray() VTK_OVERRIDE;
244 
245 private:
246  vtkArray(const vtkArray&) VTK_DELETE_FUNCTION;
247  void operator=(const vtkArray&) VTK_DELETE_FUNCTION;
248 
252  vtkStdString Name;
253 
258  virtual void InternalResize(const vtkArrayExtents&) = 0;
259 
263  virtual void InternalSetDimensionLabel(DimensionT i, const vtkStdString& label) = 0;
264 
266 
269  virtual vtkStdString InternalGetDimensionLabel(DimensionT i) = 0;
270 };
272 
273 vtkVariant vtkArray::GetVariantValue(CoordinateT i)
274 {
275  return this->GetVariantValue(vtkArrayCoordinates(i));
276 }
277 
278 vtkVariant vtkArray::GetVariantValue(CoordinateT i, CoordinateT j)
279 {
280  return this->GetVariantValue(vtkArrayCoordinates(i, j));
281 }
282 
283 vtkVariant vtkArray::GetVariantValue(CoordinateT i, CoordinateT j, CoordinateT k)
284 {
285  return this->GetVariantValue(vtkArrayCoordinates(i, j, k));
286 }
287 
288 void vtkArray::SetVariantValue(CoordinateT i, const vtkVariant& value)
289 {
290  this->SetVariantValue(vtkArrayCoordinates(i), value);
291 }
292 
293 void vtkArray::SetVariantValue(CoordinateT i, CoordinateT j, const vtkVariant& value)
294 {
295  this->SetVariantValue(vtkArrayCoordinates(i, j), value);
296 }
297 
298 void vtkArray::SetVariantValue(CoordinateT i, CoordinateT j, CoordinateT k, const vtkVariant& value)
299 {
300  this->SetVariantValue(vtkArrayCoordinates(i, j, k), value);
301 }
302 
303 #endif
304 
305 // VTK-HeaderTest-Exclude: vtkArray.h
vtkVariant GetVariantValue(CoordinateT i)
Returns the value stored in the array at the given coordinates.
Definition: vtkArray.h:273
Stores coordinate into an N-way array.
Wrapper around std::string to keep symbols short.
Definition: vtkStdString.h:41
abstract base class for most VTK objects
Definition: vtkObject.h:53
Stores the number of dimensions and valid coordinate ranges along each dimension for vtkArray...
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
Abstract interface for N-dimensional arrays.
Definition: vtkArray.h:64
Stores a half-open range of array coordinates.
Definition: vtkArrayRange.h:45
A atomic type representing the union of many types.
Definition: vtkVariant.h:69
vtkArrayExtents::DimensionT DimensionT
Definition: vtkArray.h:71
a simple class to control print indentation
Definition: vtkIndent.h:33
vtkTypeUInt64 SizeT
void SetVariantValue(CoordinateT i, const vtkVariant &value)
Overwrites the value stored in the array at the given coordinates.
Definition: vtkArray.h:288
vtkArrayExtents::SizeT SizeT
Definition: vtkArray.h:72
#define VTK_NEWINSTANCE
vtkArrayCoordinates::CoordinateT CoordinateT
boost::graph_traits< vtkGraph *>::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
vtkArrayExtents::CoordinateT CoordinateT
Definition: vtkArray.h:70
vtkArrayCoordinates::DimensionT DimensionT