Viskores  1.0
ControlSignatureTagBase.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_cont_arg_ControlSignatureTagBase_h
19 #define viskores_cont_arg_ControlSignatureTagBase_h
20 
21 #include <viskores/StaticAssert.h>
23 
24 #include <type_traits>
25 
26 namespace viskores
27 {
28 namespace cont
29 {
30 namespace arg
31 {
32 
45 {
46 };
47 
48 namespace internal
49 {
50 
51 template <typename ControlSignatureTag>
52 struct ControlSignatureTagCheck
53 {
54  static constexpr bool Valid =
55  std::is_base_of<viskores::cont::arg::ControlSignatureTagBase, ControlSignatureTag>::value;
56 };
57 
58 } // namespace internal
59 
65 #define VISKORES_IS_CONTROL_SIGNATURE_TAG(tag) \
66  VISKORES_STATIC_ASSERT_MSG( \
67  ::viskores::cont::arg::internal::ControlSignatureTagCheck<tag>::Valid, \
68  "Provided a type that is not a valid ControlSignature tag.")
69 }
70 }
71 } // namespace viskores::cont::arg
72 
73 #endif //viskores_cont_arg_ControlSignatureTagBase_h
viskores::cont::arg::ControlSignatureTagBase
The base class for all tags used in a ControlSignature.
Definition: ControlSignatureTagBase.h:44
ExportMacros.h
viskores
Groups connected points that have the same field value.
Definition: Atomic.h:27
StaticAssert.h