VTK  9.3.0
vtkArrayDispatch.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
195 #ifndef vtkArrayDispatch_h
196 #define vtkArrayDispatch_h
197 
198 #include "vtkArrayDispatchArrayList.h"
199 #include "vtkType.h"
200 #include "vtkTypeList.h"
201 
203 {
204 VTK_ABI_NAMESPACE_BEGIN
205 
209 typedef vtkTypeList::Create<double, float> Reals;
210 
214 typedef vtkTypeList::Unique<
215  vtkTypeList::Create<char, int, long, long long, short, signed char, unsigned char, unsigned int,
216  unsigned long, unsigned long long, unsigned short, vtkIdType>>::Result Integrals;
217 
222 
223 //------------------------------------------------------------------------------
230 struct Dispatch;
231 
232 //------------------------------------------------------------------------------
239 template <typename ArrayList>
241 
242 //------------------------------------------------------------------------------
250 template <typename ArrayList, typename ValueTypeList>
252 template <typename ValueTypeList>
254 
255 //------------------------------------------------------------------------------
263 struct Dispatch2;
264 
265 //------------------------------------------------------------------------------
274 template <typename ArrayList>
276 struct Dispatch2SameValueType;
277 
278 //------------------------------------------------------------------------------
288 template <typename ArrayList1, typename ArrayList2>
290 
291 //------------------------------------------------------------------------------
303 template <typename ArrayList, typename ValueTypeList1, typename ValueTypeList2>
305 template <typename ValueTypeList1, typename ValueTypeList2>
307 
308 //------------------------------------------------------------------------------
319 template <typename ArrayList1, typename ArrayList2>
321 
322 //------------------------------------------------------------------------------
334 template <typename ArrayList, typename ValueTypeList>
336 template <typename ValueTypeList>
338 
339 //------------------------------------------------------------------------------
347 struct Dispatch3;
348 
349 //------------------------------------------------------------------------------
358 template <typename ArrayList>
360 struct Dispatch3SameValueType;
361 
362 //------------------------------------------------------------------------------
373 template <typename ArrayList1, typename ArrayList2, typename ArrayList3>
375 
376 //------------------------------------------------------------------------------
390 template <typename ArrayList, typename ValueTypeList1, typename ValueTypeList2,
391  typename ValueTypeList3>
393 template <typename ValueTypeList1, typename ValueTypeList2, typename ValueTypeList3>
395 
396 //------------------------------------------------------------------------------
407 template <typename ArrayList1, typename ArrayList2, typename ArrayList3>
409 
410 //------------------------------------------------------------------------------
422 template <typename ArrayList, typename ValueTypeList>
424 template <typename ValueTypeList>
426 
427 //------------------------------------------------------------------------------
432 template <typename ArrayList, typename ValueList>
434 
435 VTK_ABI_NAMESPACE_END
436 } // end namespace vtkArrayDispatch
437 
438 #include "vtkArrayDispatch.txx"
439 
440 #endif // vtkArrayDispatch_h
441 // VTK-HeaderTest-Exclude: vtkArrayDispatch.h
vtkTypeList::Append< Reals, Integrals >::Result AllTypes
A Typelist containing all standard VTK array ValueTypes.
vtkTypeList::Create< double, float > Reals
A TypeList containing all real ValueTypes.
vtkTypeList::Unique< vtkTypeList::Create< char, int, long, long long, short, signed char, unsigned char, unsigned int, unsigned long, unsigned long long, unsigned short, vtkIdType > >::Result Integrals
A Typelist containing all integral ValueTypes.
typename vtkTypeList::detail::CreateImpl< Ts... >::type Create
Definition: vtkTypeList.h:163
typename vtkTypeList::Unique< vtkTypeList::Create< vtkDoubleArray, vtkTypeInt32Array, vtkTypeInt64Array > >::Result ArrayList
List of possible ArrayTypes that are produced by vtkIOSSUtilities.
Dispatch two arrays, restricting the valid code paths to use only array types specified in the ArrayL...
Dispatch two arrays with the restriction that the type of the first array is in the ArrayList1 TypeLi...
Dispatch two arrays, restricting the valid code paths to use only array types found in application-wi...
Dispatch two arrays, restricting the valid code paths to use ValueType-filtered versions of the appli...
Dispatch two arrays, restricting the valid code paths to use only arrays that have the same ValueType...
Dispatch three arrays, restricting the valid code paths to use only array types specified in the Arra...
Dispatch three arrays with the restriction that the type of the first array is in the ArrayList1 Type...
Dispatch three arrays, restricting the valid code paths to use only array types found in application-...
Dispatch three arrays, restricting the valid code paths to use ValueType-filtered versions of the app...
Dispatch three arrays, restricting the valid code paths to use only arrays that have the same ValueTy...
Dispatch a single array against all array types mentioned in the ArrayList template parameter.
Dispatch a single array against all array types in the application-wide vtkArrayDispatch::Arrays list...
Filter the ArrayList to contain only arrays with ArrayType::ValueType that exist in ValueList.
Appends type T to TypeList TList and stores the result in Result.
Definition: vtkTypeList.h:151
Remove all duplicate types from TypeList TList, storing the new list in Result.
Definition: vtkTypeList.h:110
int vtkIdType
Definition: vtkType.h:315