VTK  9.3.1
vtkDataArrayAccessor.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2 // SPDX-License-Identifier: BSD-3-Clause
3 
85 #include "vtkDataArray.h"
86 #include "vtkGenericDataArray.h"
87 
88 #ifndef vtkDataArrayAccessor_h
89 #define vtkDataArrayAccessor_h
90 
91 // Generic form for all (non-bit) vtkDataArray subclasses.
92 VTK_ABI_NAMESPACE_BEGIN
93 template <typename ArrayT>
95 {
96  typedef ArrayT ArrayType;
97  typedef typename ArrayType::ValueType APIType;
98 
99  ArrayType* Array;
100 
101  vtkDataArrayAccessor(ArrayType* array)
102  : Array(array)
103  {
104  }
105 
106  VTK_ALWAYS_INLINE
107  APIType Get(vtkIdType tupleIdx, int compIdx) const
108  {
109  return this->Array->GetTypedComponent(tupleIdx, compIdx);
110  }
111 
112  VTK_ALWAYS_INLINE
113  void Set(vtkIdType tupleIdx, int compIdx, APIType val) const
114  {
115  this->Array->SetTypedComponent(tupleIdx, compIdx, val);
116  }
117 
118  VTK_ALWAYS_INLINE
119  void Insert(vtkIdType tupleIdx, int compIdx, APIType val) const
120  {
121  this->Array->InsertTypedComponent(tupleIdx, compIdx, val);
122  }
123 
124  VTK_ALWAYS_INLINE
125  void Get(vtkIdType tupleIdx, APIType* tuple) const
126  {
127  this->Array->GetTypedTuple(tupleIdx, tuple);
128  }
129 
130  VTK_ALWAYS_INLINE
131  void Set(vtkIdType tupleIdx, const APIType* tuple) const
132  {
133  this->Array->SetTypedTuple(tupleIdx, tuple);
134  }
135 
136  VTK_ALWAYS_INLINE
137  void Insert(vtkIdType tupleIdx, const APIType* tuple) const
138  {
139  this->Array->InsertTypedTuple(tupleIdx, tuple);
140  }
141 };
142 
143 // Specialization for vtkDataArray.
144 template <>
146 {
148  typedef double APIType;
149 
150  ArrayType* Array;
151 
152  vtkDataArrayAccessor(ArrayType* array)
153  : Array(array)
154  {
155  }
156 
157  VTK_ALWAYS_INLINE
158  APIType Get(vtkIdType tupleIdx, int compIdx) const
159  {
160  return this->Array->GetComponent(tupleIdx, compIdx);
161  }
162 
163  VTK_ALWAYS_INLINE
164  void Set(vtkIdType tupleIdx, int compIdx, APIType val) const
165  {
166  this->Array->SetComponent(tupleIdx, compIdx, val);
167  }
168 
169  VTK_ALWAYS_INLINE
170  void Insert(vtkIdType tupleIdx, int compIdx, APIType val) const
171  {
172  this->Array->InsertComponent(tupleIdx, compIdx, val);
173  }
174 
175  VTK_ALWAYS_INLINE
176  void Get(vtkIdType tupleIdx, APIType* tuple) const { this->Array->GetTuple(tupleIdx, tuple); }
177 
178  VTK_ALWAYS_INLINE
179  void Set(vtkIdType tupleIdx, const APIType* tuple) const
180  {
181  this->Array->SetTuple(tupleIdx, tuple);
182  }
183 
184  VTK_ALWAYS_INLINE
185  void Insert(vtkIdType tupleIdx, const APIType* tuple) const
186  {
187  this->Array->InsertTuple(tupleIdx, tuple);
188  }
189 };
190 
191 VTK_ABI_NAMESPACE_END
192 #endif // vtkDataArrayAccessor_h
193 // VTK-HeaderTest-Exclude: vtkDataArrayAccessor.h
VTK_ALWAYS_INLINE void Get(vtkIdType tupleIdx, APIType *tuple) const
VTK_ALWAYS_INLINE void Insert(vtkIdType tupleIdx, const APIType *tuple) const
virtual double * GetTuple(vtkIdType tupleIdx)=0
Get the data tuple at tupleIdx.
void SetTuple(vtkIdType dstTupleIdx, vtkIdType srcTupleIdx, vtkAbstractArray *source) override
See documentation from parent class.
vtkDataArrayAccessor(ArrayType *array)
void InsertTuple(vtkIdType dstTupleIdx, vtkIdType srcTupleIdx, vtkAbstractArray *source) override
See documentation from parent class.
VTK_ALWAYS_INLINE void Get(vtkIdType tupleIdx, APIType *tuple) const
VTK_ALWAYS_INLINE void Set(vtkIdType tupleIdx, const APIType *tuple) const
int vtkIdType
Definition: vtkType.h:315
VTK_ALWAYS_INLINE void Set(vtkIdType tupleIdx, const APIType *tuple) const
virtual void SetComponent(vtkIdType tupleIdx, int compIdx, double value)
Set the data component at the location specified by tupleIdx and compIdx to value.
VTK_ALWAYS_INLINE void Set(vtkIdType tupleIdx, int compIdx, APIType val) const
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:44
ArrayType::ValueType APIType
virtual void InsertComponent(vtkIdType tupleIdx, int compIdx, double value)
Insert value at the location specified by tupleIdx and compIdx.
VTK_ALWAYS_INLINE APIType Get(vtkIdType tupleIdx, int compIdx) const
VTK_ALWAYS_INLINE void Set(vtkIdType tupleIdx, int compIdx, APIType val) const
virtual double GetComponent(vtkIdType tupleIdx, int compIdx)
Return the data component at the location specified by tupleIdx and compIdx.
VTK_ALWAYS_INLINE void Insert(vtkIdType tupleIdx, int compIdx, APIType val) const
VTK_ALWAYS_INLINE void Insert(vtkIdType tupleIdx, int compIdx, APIType val) const
VTK_ALWAYS_INLINE APIType Get(vtkIdType tupleIdx, int compIdx) const
VTK_ALWAYS_INLINE void Insert(vtkIdType tupleIdx, const APIType *tuple) const
Efficient templated access to vtkDataArray.