VTK  9.3.20240425
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.
92VTK_ABI_NAMESPACE_BEGIN
93template <typename ArrayT>
95{
96 typedef ArrayT ArrayType;
97 typedef typename ArrayType::ValueType APIType;
98
100
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.
144template <>
146{
148 typedef double APIType;
149
151
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
191VTK_ABI_NAMESPACE_END
192#endif // vtkDataArrayAccessor_h
193// VTK-HeaderTest-Exclude: vtkDataArrayAccessor.h
abstract superclass for arrays of numeric data
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.
virtual void SetComponent(vtkIdType tupleIdx, int compIdx, double value)
Set the data component at the location specified by tupleIdx and compIdx to value.
virtual void InsertComponent(vtkIdType tupleIdx, int compIdx, double value)
Insert value at the location specified by tupleIdx and compIdx.
virtual double GetComponent(vtkIdType tupleIdx, int compIdx)
Return the data component at the location specified by tupleIdx and compIdx.
void InsertTuple(vtkIdType dstTupleIdx, vtkIdType srcTupleIdx, vtkAbstractArray *source) override
See documentation from parent class.
VTK_ALWAYS_INLINE void Insert(vtkIdType tupleIdx, int compIdx, APIType val) const
VTK_ALWAYS_INLINE void Insert(vtkIdType tupleIdx, const APIType *tuple) const
VTK_ALWAYS_INLINE APIType Get(vtkIdType tupleIdx, int compIdx) const
VTK_ALWAYS_INLINE void Set(vtkIdType tupleIdx, int compIdx, APIType val) const
VTK_ALWAYS_INLINE void Set(vtkIdType tupleIdx, const APIType *tuple) const
VTK_ALWAYS_INLINE void Get(vtkIdType tupleIdx, APIType *tuple) const
Efficient templated access to vtkDataArray.
VTK_ALWAYS_INLINE APIType Get(vtkIdType tupleIdx, int compIdx) const
VTK_ALWAYS_INLINE void Set(vtkIdType tupleIdx, const APIType *tuple) const
VTK_ALWAYS_INLINE void Insert(vtkIdType tupleIdx, int compIdx, APIType val) const
VTK_ALWAYS_INLINE void Set(vtkIdType tupleIdx, int compIdx, APIType val) const
VTK_ALWAYS_INLINE void Insert(vtkIdType tupleIdx, const APIType *tuple) const
VTK_ALWAYS_INLINE void Get(vtkIdType tupleIdx, APIType *tuple) const
ArrayType::ValueType APIType
vtkDataArrayAccessor(ArrayType *array)
int vtkIdType
Definition vtkType.h:315