//============================================================================ // 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. // // Copyright 2014 Sandia Corporation. // Copyright 2014 UT-Battelle, LLC. // Copyright 2014 Los Alamos National Security. // // Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, // the U.S. Government retains certain rights in this software. // // Under the terms of Contract DE-AC52-06NA25396 with Los Alamos National // Laboratory (LANL), the U.S. Government retains certain rights in // this software. //============================================================================ // **** DO NOT EDIT THIS FILE!!! **** // This file is automatically generated by FunctionInterfaceDetailPre.h.in #ifndef vtk_m_internal_ListTagDetail_h #define vtk_m_internal_ListTagDetail_h #if !defined(vtk_m_ListTag_h) && !defined(VTKM_TEST_HEADER_BUILD) #error ListTagDetail.h must be included from ListTag.h #endif #include #define VTKM_MAX_BASE_LIST 15 namespace vtkm { namespace detail { //----------------------------------------------------------------------------- /// Base class that all ListTag classes inherit from. Helps identify lists /// in macros like VTKM_IS_LIST_TAG. /// struct ListRoot { }; template struct ListBase { }; //----------------------------------------------------------------------------- template VTKM_CONT_EXPORT void ListForEachImpl(const Functor &, ListBase) { } template VTKM_CONT_EXPORT void ListForEachImpl(Functor &f, ListBase) { f(T1()); } template VTKM_CONT_EXPORT void ListForEachImpl(const Functor &f, ListBase) { f(T1()); } template VTKM_CONT_EXPORT void ListForEachImpl(Functor &f, ListBase) { f(T1()); f(T2()); } template VTKM_CONT_EXPORT void ListForEachImpl(const Functor &f, ListBase) { f(T1()); f(T2()); } template VTKM_CONT_EXPORT void ListForEachImpl(Functor &f, ListBase) { f(T1()); f(T2()); f(T3()); } template VTKM_CONT_EXPORT void ListForEachImpl(const Functor &f, ListBase) { f(T1()); f(T2()); f(T3()); } template VTKM_CONT_EXPORT void ListForEachImpl(Functor &f, ListBase) { f(T1()); f(T2()); f(T3()); f(T4()); } template VTKM_CONT_EXPORT void ListForEachImpl(const Functor &f, ListBase) { f(T1()); f(T2()); f(T3()); f(T4()); } template VTKM_CONT_EXPORT void ListForEachImpl(Functor &f, ListBase) { f(T1()); f(T2()); f(T3()); f(T4()); f(T5()); } template VTKM_CONT_EXPORT void ListForEachImpl(const Functor &f, ListBase) { f(T1()); f(T2()); f(T3()); f(T4()); f(T5()); } template VTKM_CONT_EXPORT void ListForEachImpl(Functor &f, ListBase) { f(T1()); f(T2()); f(T3()); f(T4()); f(T5()); f(T6()); } template VTKM_CONT_EXPORT void ListForEachImpl(const Functor &f, ListBase) { f(T1()); f(T2()); f(T3()); f(T4()); f(T5()); f(T6()); } template VTKM_CONT_EXPORT void ListForEachImpl(Functor &f, ListBase) { f(T1()); f(T2()); f(T3()); f(T4()); f(T5()); f(T6()); f(T7()); } template VTKM_CONT_EXPORT void ListForEachImpl(const Functor &f, ListBase) { f(T1()); f(T2()); f(T3()); f(T4()); f(T5()); f(T6()); f(T7()); } template VTKM_CONT_EXPORT void ListForEachImpl(Functor &f, ListBase) { f(T1()); f(T2()); f(T3()); f(T4()); f(T5()); f(T6()); f(T7()); f(T8()); } template VTKM_CONT_EXPORT void ListForEachImpl(const Functor &f, ListBase) { f(T1()); f(T2()); f(T3()); f(T4()); f(T5()); f(T6()); f(T7()); f(T8()); } template VTKM_CONT_EXPORT void ListForEachImpl(Functor &f, ListBase) { f(T1()); f(T2()); f(T3()); f(T4()); f(T5()); f(T6()); f(T7()); f(T8()); f(T9()); } template VTKM_CONT_EXPORT void ListForEachImpl(const Functor &f, ListBase) { f(T1()); f(T2()); f(T3()); f(T4()); f(T5()); f(T6()); f(T7()); f(T8()); f(T9()); } template VTKM_CONT_EXPORT void ListForEachImpl(Functor &f, ListBase) { f(T1()); f(T2()); f(T3()); f(T4()); f(T5()); f(T6()); f(T7()); f(T8()); f(T9()); f(T10()); } template VTKM_CONT_EXPORT void ListForEachImpl(const Functor &f, ListBase) { f(T1()); f(T2()); f(T3()); f(T4()); f(T5()); f(T6()); f(T7()); f(T8()); f(T9()); f(T10()); } template VTKM_CONT_EXPORT void ListForEachImpl(Functor &f, ListBase) { f(T1()); f(T2()); f(T3()); f(T4()); f(T5()); f(T6()); f(T7()); f(T8()); f(T9()); f(T10()); f(T11()); } template VTKM_CONT_EXPORT void ListForEachImpl(const Functor &f, ListBase) { f(T1()); f(T2()); f(T3()); f(T4()); f(T5()); f(T6()); f(T7()); f(T8()); f(T9()); f(T10()); f(T11()); } template VTKM_CONT_EXPORT void ListForEachImpl(Functor &f, ListBase) { f(T1()); f(T2()); f(T3()); f(T4()); f(T5()); f(T6()); f(T7()); f(T8()); f(T9()); f(T10()); f(T11()); f(T12()); } template VTKM_CONT_EXPORT void ListForEachImpl(const Functor &f, ListBase) { f(T1()); f(T2()); f(T3()); f(T4()); f(T5()); f(T6()); f(T7()); f(T8()); f(T9()); f(T10()); f(T11()); f(T12()); } template VTKM_CONT_EXPORT void ListForEachImpl(Functor &f, ListBase) { f(T1()); f(T2()); f(T3()); f(T4()); f(T5()); f(T6()); f(T7()); f(T8()); f(T9()); f(T10()); f(T11()); f(T12()); f(T13()); } template VTKM_CONT_EXPORT void ListForEachImpl(const Functor &f, ListBase) { f(T1()); f(T2()); f(T3()); f(T4()); f(T5()); f(T6()); f(T7()); f(T8()); f(T9()); f(T10()); f(T11()); f(T12()); f(T13()); } template VTKM_CONT_EXPORT void ListForEachImpl(Functor &f, ListBase) { f(T1()); f(T2()); f(T3()); f(T4()); f(T5()); f(T6()); f(T7()); f(T8()); f(T9()); f(T10()); f(T11()); f(T12()); f(T13()); f(T14()); } template VTKM_CONT_EXPORT void ListForEachImpl(const Functor &f, ListBase) { f(T1()); f(T2()); f(T3()); f(T4()); f(T5()); f(T6()); f(T7()); f(T8()); f(T9()); f(T10()); f(T11()); f(T12()); f(T13()); f(T14()); } template VTKM_CONT_EXPORT void ListForEachImpl(Functor &f, ListBase) { f(T1()); f(T2()); f(T3()); f(T4()); f(T5()); f(T6()); f(T7()); f(T8()); f(T9()); f(T10()); f(T11()); f(T12()); f(T13()); f(T14()); f(T15()); } template VTKM_CONT_EXPORT void ListForEachImpl(const Functor &f, ListBase) { f(T1()); f(T2()); f(T3()); f(T4()); f(T5()); f(T6()); f(T7()); f(T8()); f(T9()); f(T10()); f(T11()); f(T12()); f(T13()); f(T14()); f(T15()); } //----------------------------------------------------------------------------- template struct ListContainsImpl; template struct ListContainsImpl, Type> { static const bool value = false; }; template struct ListContainsImpl, Type> { static const bool value = true; }; template struct ListContainsImpl, Type> { static const bool value = false; }; template struct ListContainsImpl, Type> { static const bool value = true; }; template struct ListContainsImpl, Type> { static const bool value = ListContainsImpl, Type>::value; }; template struct ListContainsImpl, Type> { static const bool value = true; }; template struct ListContainsImpl, Type> { static const bool value = ListContainsImpl, Type>::value; }; template struct ListContainsImpl, Type> { static const bool value = true; }; template struct ListContainsImpl, Type> { static const bool value = ListContainsImpl, Type>::value; }; template struct ListContainsImpl, Type> { static const bool value = true; }; template struct ListContainsImpl, Type> { static const bool value = ListContainsImpl, Type>::value; }; template struct ListContainsImpl, Type> { static const bool value = true; }; template struct ListContainsImpl, Type> { static const bool value = ListContainsImpl, Type>::value; }; template struct ListContainsImpl, Type> { static const bool value = true; }; template struct ListContainsImpl, Type> { static const bool value = ListContainsImpl, Type>::value; }; template struct ListContainsImpl, Type> { static const bool value = true; }; template struct ListContainsImpl, Type> { static const bool value = ListContainsImpl, Type>::value; }; template struct ListContainsImpl, Type> { static const bool value = true; }; template struct ListContainsImpl, Type> { static const bool value = ListContainsImpl, Type>::value; }; template struct ListContainsImpl, Type> { static const bool value = true; }; template struct ListContainsImpl, Type> { static const bool value = ListContainsImpl, Type>::value; }; template struct ListContainsImpl, Type> { static const bool value = true; }; template struct ListContainsImpl, Type> { static const bool value = ListContainsImpl, Type>::value; }; template struct ListContainsImpl, Type> { static const bool value = true; }; template struct ListContainsImpl, Type> { static const bool value = ListContainsImpl, Type>::value; }; template struct ListContainsImpl, Type> { static const bool value = true; }; template struct ListContainsImpl, Type> { static const bool value = ListContainsImpl, Type>::value; }; template struct ListContainsImpl, Type> { static const bool value = true; }; template struct ListContainsImpl, Type> { static const bool value = ListContainsImpl, Type>::value; }; template struct ListContainsImpl, Type> { static const bool value = true; }; template struct ListContainsImpl, Type> { static const bool value = ListContainsImpl, Type>::value; }; } // namespace detail //----------------------------------------------------------------------------- /// A basic tag for a list of typenames. This struct can be subclassed /// and still behave like a list tag. template struct ListTagBase : detail::ListRoot { typedef detail::ListBase List; }; template<> struct ListTagBase<> : detail::ListRoot { typedef detail::ListBase List; }; template struct ListTagBase : detail::ListRoot { typedef detail::ListBase List; }; template struct ListTagBase : detail::ListRoot { typedef detail::ListBase List; }; template struct ListTagBase : detail::ListRoot { typedef detail::ListBase List; }; template struct ListTagBase : detail::ListRoot { typedef detail::ListBase List; }; template struct ListTagBase : detail::ListRoot { typedef detail::ListBase List; }; template struct ListTagBase : detail::ListRoot { typedef detail::ListBase List; }; template struct ListTagBase : detail::ListRoot { typedef detail::ListBase List; }; template struct ListTagBase : detail::ListRoot { typedef detail::ListBase List; }; template struct ListTagBase : detail::ListRoot { typedef detail::ListBase List; }; template struct ListTagBase : detail::ListRoot { typedef detail::ListBase List; }; template struct ListTagBase : detail::ListRoot { typedef detail::ListBase List; }; template struct ListTagBase : detail::ListRoot { typedef detail::ListBase List; }; template struct ListTagBase : detail::ListRoot { typedef detail::ListBase List; }; template struct ListTagBase : detail::ListRoot { typedef detail::ListBase List; }; } // namespace vtkm #endif //vtk_m_internal_ListTagDetail_h