Viskores  1.0
ExecutionSignatureTagBase.h
Go to the documentation of this file.
1 //============================================================================
2 // The contents of this file are covered by the Viskores license. See
3 // LICENSE.txt for details.
4 //
5 // By contributing to this file, all contributors agree to the Developer
6 // Certificate of Origin Version 1.1 (DCO 1.1) as stated in DCO.txt.
7 //============================================================================
8 
9 //============================================================================
10 // Copyright (c) Kitware, Inc.
11 // All rights reserved.
12 // See LICENSE.txt for details.
13 //
14 // This software is distributed WITHOUT ANY WARRANTY; without even
15 // the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
16 // PURPOSE. See the above copyright notice for more information.
17 //============================================================================
18 #ifndef viskores_exec_arg_ExecutionSignatureTagBase_h
19 #define viskores_exec_arg_ExecutionSignatureTagBase_h
20 
21 #include <viskores/StaticAssert.h>
23 
24 #include <type_traits>
25 
26 namespace viskores
27 {
28 namespace exec
29 {
30 namespace arg
31 {
32 
46 {
47 };
48 
49 namespace internal
50 {
51 
52 template <typename ExecutionSignatureTag>
53 struct ExecutionSignatureTagCheck
54 {
55  static constexpr bool Valid =
56  std::is_base_of<viskores::exec::arg::ExecutionSignatureTagBase, ExecutionSignatureTag>::value;
57 };
58 
59 } // namespace internal
60 
66 #define VISKORES_IS_EXECUTION_SIGNATURE_TAG(tag) \
67  VISKORES_STATIC_ASSERT_MSG( \
68  ::viskores::exec::arg::internal::ExecutionSignatureTagCheck<tag>::Valid, \
69  "Provided a type that is not a valid ExecutionSignature tag.")
70 }
71 }
72 } // namespace viskores::exec::arg
73 
74 #endif //viskores_exec_arg_ExecutionSignatureTagBase_h
ExportMacros.h
viskores
Groups connected points that have the same field value.
Definition: Atomic.h:27
viskores::exec::arg::ExecutionSignatureTagBase
The base class for all tags used in an ExecutionSignature.
Definition: ExecutionSignatureTagBase.h:45
StaticAssert.h