VTK  9.2.6
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 
57 #ifndef vtkArray_h
58 #define vtkArray_h
59 
60 #include "vtkArrayCoordinates.h" // for vtkArrayCoordinates
61 #include "vtkArrayExtents.h" // for vtkArrayExtents
62 #include "vtkCommonCoreModule.h" // For export macro
63 #include "vtkObject.h"
64 #include "vtkStdString.h" // for vtkStdString
65 #include "vtkVariant.h" // for vtkVariant
66 
67 class VTKCOMMONCORE_EXPORT vtkArray : public vtkObject
68 {
69 public:
70  vtkTypeMacro(vtkArray, vtkObject);
71  void PrintSelf(ostream& os, vtkIndent indent) override;
72 
76 
77  enum
78  {
80  DENSE = 0,
82  SPARSE = 1
83  };
84 
94  static vtkArray* CreateArray(int StorageType, int ValueType);
95 
101  virtual bool IsDense() = 0;
102 
104 
116  void Resize(const CoordinateT i);
117  void Resize(const CoordinateT i, const CoordinateT j);
118  void Resize(const CoordinateT i, const CoordinateT j, const CoordinateT k);
119  void Resize(const vtkArrayRange& i);
120  void Resize(const vtkArrayRange& i, const vtkArrayRange& j);
121  void Resize(const vtkArrayRange& i, const vtkArrayRange& j, const vtkArrayRange& k);
122  void Resize(const vtkArrayExtents& extents);
124 
129  vtkArrayRange GetExtent(DimensionT dimension);
134  virtual const vtkArrayExtents& GetExtents() = 0;
135 
140  DimensionT GetDimensions();
141 
150  SizeT GetSize();
151 
157  virtual SizeT GetNonNullSize() = 0;
158 
162  void SetName(const vtkStdString& name);
166  vtkStdString GetName();
167 
171  void SetDimensionLabel(DimensionT i, const vtkStdString& label);
172 
176  vtkStdString GetDimensionLabel(DimensionT i);
177 
185  virtual void GetCoordinatesN(const SizeT n, vtkArrayCoordinates& coordinates) = 0;
186 
188 
193  inline vtkVariant GetVariantValue(CoordinateT i);
194  inline vtkVariant GetVariantValue(CoordinateT i, CoordinateT j);
195  inline vtkVariant GetVariantValue(CoordinateT i, CoordinateT j, CoordinateT k);
196  virtual vtkVariant GetVariantValue(const vtkArrayCoordinates& coordinates) = 0;
198 
206  virtual vtkVariant GetVariantValueN(const SizeT n) = 0;
207 
209 
214  inline void SetVariantValue(CoordinateT i, const vtkVariant& value);
215  inline void SetVariantValue(CoordinateT i, CoordinateT j, const vtkVariant& value);
216  inline void SetVariantValue(CoordinateT i, CoordinateT j, CoordinateT k, const vtkVariant& value);
217  virtual void SetVariantValue(const vtkArrayCoordinates& coordinates, const vtkVariant& value) = 0;
219 
227  virtual void SetVariantValueN(const SizeT n, const vtkVariant& value) = 0;
228 
230 
234  virtual void CopyValue(vtkArray* source, const vtkArrayCoordinates& source_coordinates,
235  const vtkArrayCoordinates& target_coordinates) = 0;
236  virtual void CopyValue(
237  vtkArray* source, const SizeT source_index, const vtkArrayCoordinates& target_coordinates) = 0;
238  virtual void CopyValue(
239  vtkArray* source, const vtkArrayCoordinates& source_coordinates, const SizeT target_index) = 0;
241 
245  virtual vtkArray* DeepCopy() = 0;
246 
247 protected:
248  vtkArray();
249  ~vtkArray() override;
250 
251 private:
252  vtkArray(const vtkArray&) = delete;
253  void operator=(const vtkArray&) = delete;
254 
258  vtkStdString Name;
259 
264  virtual void InternalResize(const vtkArrayExtents&) = 0;
265 
269  virtual void InternalSetDimensionLabel(DimensionT i, const vtkStdString& label) = 0;
270 
272 
275  virtual vtkStdString InternalGetDimensionLabel(DimensionT i) = 0;
277 };
278 
280 {
281  return this->GetVariantValue(vtkArrayCoordinates(i));
282 }
283 
285 {
286  return this->GetVariantValue(vtkArrayCoordinates(i, j));
287 }
288 
290 {
291  return this->GetVariantValue(vtkArrayCoordinates(i, j, k));
292 }
293 
295 {
296  this->SetVariantValue(vtkArrayCoordinates(i), value);
297 }
298 
300 {
301  this->SetVariantValue(vtkArrayCoordinates(i, j), value);
302 }
303 
305 {
306  this->SetVariantValue(vtkArrayCoordinates(i, j, k), value);
307 }
308 
309 #endif
vtkVariant GetVariantValue(CoordinateT i)
Returns the value stored in the array at the given coordinates.
Definition: vtkArray.h:279
Stores coordinate into an N-way array.
Wrapper around std::string to keep symbols short.
Definition: vtkStdString.h:38
abstract base class for most VTK objects
Definition: vtkObject.h:62
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:67
Stores a half-open range of array coordinates.
Definition: vtkArrayRange.h:48
A atomic type representing the union of many types.
Definition: vtkVariant.h:69
vtkArrayExtents::DimensionT DimensionT
Definition: vtkArray.h:74
a simple class to control print indentation
Definition: vtkIndent.h:39
vtkTypeUInt64 SizeT
void SetVariantValue(CoordinateT i, const vtkVariant &value)
Overwrites the value stored in the array at the given coordinates.
Definition: vtkArray.h:294
vtkArrayExtents::SizeT SizeT
Definition: vtkArray.h:75
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
#define VTK_NEWINSTANCE
vtkArrayCoordinates::CoordinateT CoordinateT
vtkSmartPointer< vtkDataArray > CreateArray(const Ioss::Field &field)
Create an array for the given field.
vtkArrayExtents::CoordinateT CoordinateT
Definition: vtkArray.h:73
vtkArrayCoordinates::DimensionT DimensionT