VTK-m  2.0
ExecutionSignatureTagBase.h
Go to the documentation of this file.
1 //============================================================================
2 // Copyright (c) Kitware, Inc.
3 // All rights reserved.
4 // See LICENSE.txt for details.
5 //
6 // This software is distributed WITHOUT ANY WARRANTY; without even
7 // the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
8 // PURPOSE. See the above copyright notice for more information.
9 //============================================================================
10 #ifndef vtk_m_exec_arg_ExecutionSignatureTagBase_h
11 #define vtk_m_exec_arg_ExecutionSignatureTagBase_h
12 
13 #include <vtkm/StaticAssert.h>
15 
16 #include <type_traits>
17 
18 namespace vtkm
19 {
20 namespace exec
21 {
22 namespace arg
23 {
24 
38 {
39 };
40 
41 namespace internal
42 {
43 
44 template <typename ExecutionSignatureTag>
45 struct ExecutionSignatureTagCheck
46 {
47  static constexpr bool Valid =
48  std::is_base_of<vtkm::exec::arg::ExecutionSignatureTagBase, ExecutionSignatureTag>::value;
49 };
50 
51 } // namespace internal
52 
58 #define VTKM_IS_EXECUTION_SIGNATURE_TAG(tag) \
59  VTKM_STATIC_ASSERT_MSG(::vtkm::exec::arg::internal::ExecutionSignatureTagCheck<tag>::Valid, \
60  "Provided a type that is not a valid ExecutionSignature tag.")
61 }
62 }
63 } // namespace vtkm::exec::arg
64 
65 #endif //vtk_m_exec_arg_ExecutionSignatureTagBase_h
vtkm
Groups connected points that have the same field value.
Definition: Atomic.h:19
vtkm::exec::arg::ExecutionSignatureTagBase
The base class for all tags used in an ExecutionSignature.
Definition: ExecutionSignatureTagBase.h:37
ExportMacros.h
StaticAssert.h