CMS 3D CMS Logo

AbilityChecker.h
Go to the documentation of this file.
1 #ifndef FWCore_Framework_AbilityChecker_h
2 #define FWCore_Framework_AbilityChecker_h
3 // -*- C++ -*-
4 //
5 // Package: FWCore/Framework
6 // Class : AbilityChecker
7 //
16 //
17 // Original Author: Chris Jones
18 // Created: Sat, 03 Aug 2013 15:38:02 GMT
19 //
20 
21 // system include files
22 
23 // user include files
26 
27 // forward declarations
28 namespace edm {
29  namespace stream {
30  namespace impl {
31  struct LastCheck {};
32 
33  template <typename T, typename... U>
34  struct HasAbility;
35 
36  template <typename G, typename... U>
37  struct HasAbility<GlobalCache<G>, U...> : public HasAbility<U...> {
38  static constexpr bool kGlobalCache = true;
39  };
40 
41  template <typename... CacheTypes, typename... U>
42  struct HasAbility<InputProcessBlockCache<CacheTypes...>, U...> : public HasAbility<U...> {
43  static constexpr bool kInputProcessBlockCache = true;
44  };
45 
46  template <typename R, typename... U>
47  struct HasAbility<RunCache<R>, U...> : public HasAbility<U...> {
48  static constexpr bool kRunCache = true;
49  };
50 
51  template <typename R, typename... U>
52  struct HasAbility<LuminosityBlockCache<R>, U...> : public HasAbility<U...> {
53  static constexpr bool kLuminosityBlockCache = true;
54  };
55 
56  template <typename R, typename... U>
57  struct HasAbility<RunSummaryCache<R>, U...> : public HasAbility<U...> {
58  static constexpr bool kRunSummaryCache = true;
59  };
60 
61  template <typename R, typename... U>
62  struct HasAbility<LuminosityBlockSummaryCache<R>, U...> : public HasAbility<U...> {
63  static constexpr bool kLuminosityBlockSummaryCache = true;
64  };
65 
66  template <typename... U>
67  struct HasAbility<edm::WatchProcessBlock, U...> : public HasAbility<U...> {
68  static constexpr bool kWatchProcessBlock = true;
69  };
70 
71  template <typename... U>
72  struct HasAbility<edm::BeginProcessBlockProducer, U...> : public HasAbility<U...> {
73  static constexpr bool kBeginProcessBlockProducer = true;
74  };
75 
76  template <typename... U>
77  struct HasAbility<edm::EndProcessBlockProducer, U...> : public HasAbility<U...> {
78  static constexpr bool kEndProcessBlockProducer = true;
79  };
80 
81  template <typename... U>
82  struct HasAbility<edm::BeginRunProducer, U...> : public HasAbility<U...> {
83  static constexpr bool kBeginRunProducer = true;
84  };
85 
86  template <typename... U>
87  struct HasAbility<edm::EndRunProducer, U...> : public HasAbility<U...> {
88  static constexpr bool kEndRunProducer = true;
89  };
90 
91  template <typename... U>
92  struct HasAbility<edm::BeginLuminosityBlockProducer, U...> : public HasAbility<U...> {
93  static constexpr bool kBeginLuminosityBlockProducer = true;
94  };
95 
96  template <typename... U>
97  struct HasAbility<edm::EndLuminosityBlockProducer, U...> : public HasAbility<U...> {
98  static constexpr bool kEndLuminosityBlockProducer = true;
99  };
100 
101  template <typename... U>
102  struct HasAbility<edm::ExternalWork, U...> : public HasAbility<U...> {
103  static constexpr bool kExternalWork = true;
104  };
105 
106  template <typename... U>
107  struct HasAbility<edm::Transformer, U...> : public HasAbility<U...> {
108  static constexpr bool kTransformer = true;
109  };
110 
111  template <typename... U>
112  struct HasAbility<edm::Accumulator, U...> : public HasAbility<U...> {
113  static constexpr bool kAccumulator = true;
114  };
115 
116  template <typename... U>
118  static constexpr bool kWatchLuminosityBlocks = true;
119  };
120 
121  template <typename... U>
122  struct HasAbility<edm::stream::WatchRuns, U...> : public HasAbility<U...> {
123  static constexpr bool kWatchRuns = true;
124  };
125 
126  template <>
128  static constexpr bool kGlobalCache = false;
129  static constexpr bool kInputProcessBlockCache = false;
130  static constexpr bool kRunCache = false;
131  static constexpr bool kLuminosityBlockCache = false;
132  static constexpr bool kRunSummaryCache = false;
133  static constexpr bool kLuminosityBlockSummaryCache = false;
134  static constexpr bool kWatchProcessBlock = false;
135  static constexpr bool kBeginProcessBlockProducer = false;
136  static constexpr bool kEndProcessBlockProducer = false;
137  static constexpr bool kBeginRunProducer = false;
138  static constexpr bool kEndRunProducer = false;
139  static constexpr bool kBeginLuminosityBlockProducer = false;
140  static constexpr bool kEndLuminosityBlockProducer = false;
141  static constexpr bool kExternalWork = false;
142  static constexpr bool kAccumulator = false;
143  static constexpr bool kTransformer = false;
144  static constexpr bool kWatchLuminosityBlocks = true;
145  static constexpr bool kWatchRuns = true;
146  };
147  } // namespace impl
148  template <typename... T>
149  struct AbilityChecker : public impl::HasAbility<T..., impl::LastCheck> {};
150  } // namespace stream
151 } // namespace edm
152 
153 #endif
uint32_t T const *__restrict__ uint32_t const *__restrict__ int32_t int Histo::index_type cudaStream_t stream
HLT enums.
long double T