VTK  9.6.1
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
185
186#ifndef vtkArrayDispatch_h
187#define vtkArrayDispatch_h
188
189#include "vtkArrayDispatchArrayList.h"
190#include "vtkType.h"
191#include "vtkTypeList.h"
192
194{
195VTK_ABI_NAMESPACE_BEGIN
196
200using Reals = vtkTypeList::Create<double, float>;
201
205using Integrals = vtkTypeList::Create<char, int, long, long long, short, signed char, unsigned char,
206 unsigned int, unsigned long, unsigned long long, unsigned short>;
207
212
213//------------------------------------------------------------------------------
220struct Dispatch;
221
222//------------------------------------------------------------------------------
229template <typename ArrayList>
231
232//------------------------------------------------------------------------------
240template <typename ValueTypeList>
242
243//------------------------------------------------------------------------------
250template <typename ArrayList, typename ValueTypeList>
252template <typename ArrayList, typename ValueTypeList>
254 "Use DispatchByArrayAndValueType instead.") DispatchByValueTypeUsingArrays;
255
256//------------------------------------------------------------------------------
264struct Dispatch2;
265
266//------------------------------------------------------------------------------
275struct Dispatch2SameValueType;
276
277//------------------------------------------------------------------------------
289template <typename ArrayList1, typename ArrayList2, typename ValueTypeList1,
290 typename ValueTypeList2>
292template <typename ArrayList, typename ValueTypeList1, typename ValueTypeList2>
294 "Use Dispatch2ByArrayAndValueType instead.") Dispatch2ByValueTypeUsingArrays;
295
296//------------------------------------------------------------------------------
306template <typename ArrayList1, typename ArrayList2>
308
309//------------------------------------------------------------------------------
321template <typename ValueTypeList1, typename ValueTypeList2>
323
324//------------------------------------------------------------------------------
335template <typename ArrayList1, typename ArrayList2>
337template <typename ArrayList>
339 "Use Dispatch2ByArrayWithSameValueType instead.") Dispatch2SameValueTypeUsingArrays;
340
341//------------------------------------------------------------------------------
353template <typename ValueTypeList>
355
356//------------------------------------------------------------------------------
368template <typename ArrayList, typename ValueTypeList>
370template <typename ArrayList, typename ValueTypeList>
372 "Use Dispatch2ByArrayAndSameValueType instead.") Dispatch2BySameValueTypeUsingArrays;
373
374//------------------------------------------------------------------------------
382struct Dispatch3;
383
384//------------------------------------------------------------------------------
393struct Dispatch3SameValueType;
394
395//------------------------------------------------------------------------------
406template <typename ArrayList1, typename ArrayList2, typename ArrayList3>
408
409//------------------------------------------------------------------------------
422template <typename ValueTypeList1, typename ValueTypeList2, typename ValueTypeList3>
424
425//------------------------------------------------------------------------------
438template <typename ArrayList1, typename ArrayList2, typename ArrayList3, typename ValueTypeList1,
439 typename ValueTypeList2, typename ValueTypeList3>
441template <typename ArrayList, typename ValueTypeList1, typename ValueTypeList2,
442 typename ValueTypeList3>
444 "Use Dispatch3ByArrayAndValueType instead.") Dispatch3ByValueTypeUsingArrays;
445
446//------------------------------------------------------------------------------
457template <typename ArrayList1, typename ArrayList2, typename ArrayList3>
459template <typename ArrayList>
461 "Use Dispatch3ByArrayWithSameValueType instead.") Dispatch3SameValueTypeUsingArrays;
462
463//------------------------------------------------------------------------------
475template <typename ValueTypeList>
477
478//------------------------------------------------------------------------------
490template <typename ArrayList, typename ValueTypeList>
492template <typename ArrayList, typename ValueTypeList>
494 "Use Dispatch3ByArraySameValueType instead.") Dispatch3BySameValueTypeUsingArrays;
495
496//----------------------------------------------------------------------------
501template <typename ArrayList, typename ArrayTypeTagList>
503
504//------------------------------------------------------------------------------
509template <typename ArrayList, typename DataTypeTagList>
511
512//------------------------------------------------------------------------------
517template <typename ArrayList, typename ValueList>
519
520VTK_ABI_NAMESPACE_END
521} // end namespace vtkArrayDispatch
522
523#include "vtkArrayDispatch.txx"
524
525#endif // vtkArrayDispatch_h
526// VTK-HeaderTest-Exclude: vtkArrayDispatch.h
vtkTypeList::Create< double, float > Reals
A TypeList containing all real ValueTypes.
vtkTypeList::Append< Reals, Integrals >::Result AllTypes
A Typelist containing all standard VTK array ValueTypes.
vtkTypeList::Create< char, int, long, long long, short, signed char, unsigned char, unsigned int, unsigned long, unsigned long long, unsigned short > Integrals
A Typelist containing all integral ValueTypes.
Dispatch two arrays, restricting the valid code paths to use only array types found in ArrayList that...
Dispatch two arrays, restricting the valid code paths to use ValueType-filtered versions of the Array...
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 three arrays, restricting the valid code paths to use ValueType-filtered versions of ArrayLi...
Dispatch three arrays, restricting the valid code paths to use only array types found in ArrayList Ty...
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 a single array against all array types in ArrayList with the added restriction that the arra...
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::ArrayTypeTag that exist in ArrayTypeTagLi...
Filter the ArrayList to contain only arrays with ArrayType::DataTypeTag that exist in DataTypeTagList...
Filter the ArrayList to contain only arrays with ArrayType::ValueType that exist in ValueList.
Appends types/TypeLists to TypeList TList and stores the result in Result.
#define VTK_DEPRECATED_IN_9_6_0(reason)