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{
204VTK_ABI_NAMESPACE_BEGIN
205
209typedef vtkTypeList::Create<double, float> Reals;
210
214typedef 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//------------------------------------------------------------------------------
230struct Dispatch;
231
232//------------------------------------------------------------------------------
239template <typename ArrayList>
241
242//------------------------------------------------------------------------------
250template <typename ArrayList, typename ValueTypeList>
252template <typename ValueTypeList>
254
255//------------------------------------------------------------------------------
263struct Dispatch2;
264
265//------------------------------------------------------------------------------
274template <typename ArrayList>
276struct Dispatch2SameValueType;
277
278//------------------------------------------------------------------------------
288template <typename ArrayList1, typename ArrayList2>
290
291//------------------------------------------------------------------------------
303template <typename ArrayList, typename ValueTypeList1, typename ValueTypeList2>
305template <typename ValueTypeList1, typename ValueTypeList2>
307
308//------------------------------------------------------------------------------
319template <typename ArrayList1, typename ArrayList2>
321
322//------------------------------------------------------------------------------
334template <typename ArrayList, typename ValueTypeList>
336template <typename ValueTypeList>
338
339//------------------------------------------------------------------------------
347struct Dispatch3;
348
349//------------------------------------------------------------------------------
358template <typename ArrayList>
360struct Dispatch3SameValueType;
361
362//------------------------------------------------------------------------------
373template <typename ArrayList1, typename ArrayList2, typename ArrayList3>
375
376//------------------------------------------------------------------------------
390template <typename ArrayList, typename ValueTypeList1, typename ValueTypeList2,
391 typename ValueTypeList3>
393template <typename ValueTypeList1, typename ValueTypeList2, typename ValueTypeList3>
395
396//------------------------------------------------------------------------------
407template <typename ArrayList1, typename ArrayList2, typename ArrayList3>
409
410//------------------------------------------------------------------------------
422template <typename ArrayList, typename ValueTypeList>
424template <typename ValueTypeList>
426
427//------------------------------------------------------------------------------
432template <typename ArrayList, typename ValueList>
434
435VTK_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, longlong, short, signedchar, unsignedchar, unsignedint, unsignedlong, unsignedlonglong, unsignedshort, vtkIdType > >::Result Integrals
A Typelist containing all integral ValueTypes.
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.
Remove all duplicate types from TypeList TList, storing the new list in Result.
int vtkIdType
Definition vtkType.h:315