VTK  9.3.20240327
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
205 #ifndef vtkArrayDispatch_h
206 #define vtkArrayDispatch_h
207 
208 #include "vtkArrayDispatchArrayList.h"
209 #include "vtkType.h"
210 #include "vtkTypeList.h"
211 
213 {
214 VTK_ABI_NAMESPACE_BEGIN
215 
219 typedef vtkTypeList::Create<double, float> Reals;
220 
224 typedef vtkTypeList::Unique<
225  vtkTypeList::Create<char, int, long, long long, short, signed char, unsigned char, unsigned int,
226  unsigned long, unsigned long long, unsigned short, vtkIdType>>::Result Integrals;
227 
232 
233 //------------------------------------------------------------------------------
240 struct Dispatch;
241 
242 //------------------------------------------------------------------------------
249 template <typename ArrayList>
251 
252 //------------------------------------------------------------------------------
260 template <typename ArrayList, typename ValueTypeList>
262 template <typename ValueTypeList>
264 
265 //------------------------------------------------------------------------------
273 struct Dispatch2;
274 
275 //------------------------------------------------------------------------------
284 template <typename ArrayList>
286 struct Dispatch2SameValueType;
287 
288 //------------------------------------------------------------------------------
298 template <typename ArrayList1, typename ArrayList2>
300 
301 //------------------------------------------------------------------------------
313 template <typename ArrayList, typename ValueTypeList1, typename ValueTypeList2>
315 template <typename ValueTypeList1, typename ValueTypeList2>
317 
318 //------------------------------------------------------------------------------
329 template <typename ArrayList1, typename ArrayList2>
331 
332 //------------------------------------------------------------------------------
344 template <typename ArrayList, typename ValueTypeList>
346 template <typename ValueTypeList>
348 
349 //------------------------------------------------------------------------------
357 struct Dispatch3;
358 
359 //------------------------------------------------------------------------------
368 template <typename ArrayList>
370 struct Dispatch3SameValueType;
371 
372 //------------------------------------------------------------------------------
383 template <typename ArrayList1, typename ArrayList2, typename ArrayList3>
385 
386 //------------------------------------------------------------------------------
400 template <typename ArrayList, typename ValueTypeList1, typename ValueTypeList2,
401  typename ValueTypeList3>
403 template <typename ValueTypeList1, typename ValueTypeList2, typename ValueTypeList3>
405 
406 //------------------------------------------------------------------------------
417 template <typename ArrayList1, typename ArrayList2, typename ArrayList3>
419 
420 //------------------------------------------------------------------------------
432 template <typename ArrayList, typename ValueTypeList>
434 template <typename ValueTypeList>
436 
437 //------------------------------------------------------------------------------
442 template <typename ArrayList, typename ValueList>
444 
445 VTK_ABI_NAMESPACE_END
446 } // end namespace vtkArrayDispatch
447 
448 #include "vtkArrayDispatch.txx"
449 
450 #endif // vtkArrayDispatch_h
451 // 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