VTK  9.5.20251101
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{
214VTK_ABI_NAMESPACE_BEGIN
215
219using Reals = vtkTypeList::Create<double, float>;
220
224using Integrals = vtkTypeList::Create<char, int, long, long long, short, signed char, unsigned char,
225 unsigned int, unsigned long, unsigned long long, unsigned short>;
226
231
232//------------------------------------------------------------------------------
239struct Dispatch;
240
241//------------------------------------------------------------------------------
248template <typename ArrayList>
250
251//------------------------------------------------------------------------------
259template <typename ValueTypeList>
261
262//------------------------------------------------------------------------------
269template <typename ArrayList, typename ValueTypeList>
271template <typename ArrayList, typename ValueTypeList>
273 "Use DispatchByArrayAndValueType instead.") DispatchByValueTypeUsingArrays;
274
275//------------------------------------------------------------------------------
283struct Dispatch2;
284
285//------------------------------------------------------------------------------
294struct Dispatch2SameValueType;
295
296//------------------------------------------------------------------------------
308template <typename ArrayList1, typename ArrayList2, typename ValueTypeList1,
309 typename ValueTypeList2>
311template <typename ArrayList, typename ValueTypeList1, typename ValueTypeList2>
313 "Use Dispatch2ByArrayAndValueType instead.") Dispatch2ByValueTypeUsingArrays;
314
315//------------------------------------------------------------------------------
325template <typename ArrayList1, typename ArrayList2>
327
328//------------------------------------------------------------------------------
340template <typename ValueTypeList1, typename ValueTypeList2>
342
343//------------------------------------------------------------------------------
354template <typename ArrayList1, typename ArrayList2>
356template <typename ArrayList>
358 "Use Dispatch2ByArrayWithSameValueType instead.") Dispatch2SameValueTypeUsingArrays;
359
360//------------------------------------------------------------------------------
372template <typename ValueTypeList>
374
375//------------------------------------------------------------------------------
387template <typename ArrayList, typename ValueTypeList>
389template <typename ArrayList, typename ValueTypeList>
391 "Use Dispatch2ByArrayAndSameValueType instead.") Dispatch2BySameValueTypeUsingArrays;
392
393//------------------------------------------------------------------------------
401struct Dispatch3;
402
403//------------------------------------------------------------------------------
412struct Dispatch3SameValueType;
413
414//------------------------------------------------------------------------------
425template <typename ArrayList1, typename ArrayList2, typename ArrayList3>
427
428//------------------------------------------------------------------------------
441template <typename ValueTypeList1, typename ValueTypeList2, typename ValueTypeList3>
443
444//------------------------------------------------------------------------------
457template <typename ArrayList1, typename ArrayList2, typename ArrayList3, typename ValueTypeList1,
458 typename ValueTypeList2, typename ValueTypeList3>
460template <typename ArrayList, typename ValueTypeList1, typename ValueTypeList2,
461 typename ValueTypeList3>
463 "Use Dispatch3ByArrayAndValueType instead.") Dispatch3ByValueTypeUsingArrays;
464
465//------------------------------------------------------------------------------
476template <typename ArrayList1, typename ArrayList2, typename ArrayList3>
478template <typename ArrayList>
480 "Use Dispatch3ByArrayWithSameValueType instead.") Dispatch3SameValueTypeUsingArrays;
481
482//------------------------------------------------------------------------------
494template <typename ValueTypeList>
496
497//------------------------------------------------------------------------------
509template <typename ArrayList, typename ValueTypeList>
511template <typename ArrayList, typename ValueTypeList>
513 "Use Dispatch3ByArraySameValueType instead.") Dispatch3BySameValueTypeUsingArrays;
514
515//----------------------------------------------------------------------------
520template <typename ArrayList, typename ArrayTypeTagList>
522
523//------------------------------------------------------------------------------
528template <typename ArrayList, typename DataTypeTagList>
530
531//------------------------------------------------------------------------------
536template <typename ArrayList, typename ValueList>
538
539VTK_ABI_NAMESPACE_END
540} // end namespace vtkArrayDispatch
541
542#include "vtkArrayDispatch.txx"
543
544#endif // vtkArrayDispatch_h
545// VTK-HeaderTest-Exclude: vtkArrayDispatch.h
vtkTypeList::Create< double, float > Reals
A TypeList containing all real 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.
vtkTypeList::Append< Reals, Integrals >::Result AllTypes
A Typelist containing all standard VTK array 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)