//============================================================================ // Copyright (c) Kitware, Inc. // All rights reserved. // See LICENSE.txt for details. // // This software is distributed WITHOUT ANY WARRANTY; without even // the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR // PURPOSE. See the above copyright notice for more information. //============================================================================ #ifndef vtk_m_TypeList_h #define vtk_m_TypeList_h #include #include namespace vtkm { /// A list containing the type vtkm::Id. /// using TypeListId = vtkm::List; /// A list containing the type vtkm::Id2. /// using TypeListId2 = vtkm::List; /// A list containing the type vtkm::Id3. /// using TypeListId3 = vtkm::List; /// A list containing the type vtkm::Id4. /// using TypeListId4 = vtkm::List; /// A list containing the type vtkm::IdComponent /// using TypeListIdComponent = vtkm::List; /// A list containing types used to index arrays. Contains vtkm::Id, vtkm::Id2, /// and vtkm::Id3. /// using TypeListIndex = vtkm::List; /// A list containing types used for scalar fields. Specifically, contains /// floating point numbers of different widths (i.e. vtkm::Float32 and /// vtkm::Float64). using TypeListFieldScalar = vtkm::List; /// A list containing types for values for fields with two dimensional /// vectors. /// using TypeListFieldVec2 = vtkm::List; /// A list containing types for values for fields with three dimensional /// vectors. /// using TypeListFieldVec3 = vtkm::List; /// A list containing types for values for fields with four dimensional /// vectors. /// using TypeListFieldVec4 = vtkm::List; /// A list containing common types for floating-point vectors. Specifically contains /// floating point vectors of size 2, 3, and 4 with floating point components. /// Scalars are not included. /// using TypeListFloatVec = vtkm::List; /// A list containing common types for values in fields. Specifically contains /// floating point scalars and vectors of size 2, 3, and 4 with floating point /// components. /// using TypeListField = vtkm::List; /// A list of all scalars defined in vtkm/Types.h. A scalar is a type that /// holds a single number. This should containing all true variations of /// scalars, but there might be some arithmetic C types not included. For /// example, this list contains `signed char`, and `unsigned char`, but not /// `char` as one of those types will behave the same as it. Two of the three /// types behave the same, but be aware that template resolution will treat /// them differently. /// using TypeListScalarAll = vtkm::List; // A list that containes all the base arithmetric C types (i.e. char, int, float, etc.). // The list contains C types that are functionally equivalent but considered different // types (e.g. it contains both `char` and `signed char`). using TypeListBaseC = vtkm::ListAppend< vtkm::TypeListScalarAll, // Other base C types that are the same as above but // recognized as different by the compiler vtkm::List>; /// A list of the most commonly use Vec classes. Specifically, these are /// vectors of size 2, 3, or 4 containing either unsigned bytes, signed /// integers of 32 or 64 bits, or floating point values of 32 or 64 bits. /// using TypeListVecCommon = vtkm::List; namespace internal { /// A list of uncommon Vec classes with length up to 4. This is not much /// use in general, but is used when joined with \c TypeListVecCommon /// to get a list of all vectors up to size 4. /// using TypeListVecUncommon = vtkm::List; } // namespace internal /// A list of all vector classes with standard types as components and /// lengths between 2 and 4. /// using TypeListVecAll = vtkm::ListAppend; /// A list of all basic types listed in vtkm/Types.h. Does not include all /// possible VTK-m types like arbitrarily typed and sized Vecs (only up to /// length 4) or math types like matrices. /// using TypeListAll = vtkm::ListAppend; /// A list of the most commonly used types across multiple domains. Includes /// integers, floating points, and 3 dimensional vectors of floating points. /// using TypeListCommon = vtkm::List; } // namespace vtkm #endif //vtk_m_TypeList_h