CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
moduleAbilities.h
Go to the documentation of this file.
1 #ifndef FWCore_Framework_moduleAbilities_h
2 #define FWCore_Framework_moduleAbilities_h
3 // -*- C++ -*-
4 //
5 // Package: FWCore/Framework
6 // Class : moduleAbilities
7 //
16 //
17 // Original Author: Chris Jones
18 // Created: Tue, 07 May 2013 19:19:53 GMT
19 //
20 
21 // system include files
22 #include <type_traits>
23 
24 // user include files
26 
27 // forward declarations
28 
29 namespace edm {
30  namespace module {
31  //Used in the case where ability is not available
32  struct Empty {};
33  } // namespace module
34 
35  template <typename T>
36  struct GlobalCache {
38  typedef T Type;
39  };
40 
41  template <typename T>
42  struct StreamCache {
44  typedef T Type;
45  };
46 
47  template <typename... CacheTypes>
50  };
51 
52  template <typename T>
53  struct RunCache {
55  typedef T Type;
56  };
57 
58  template <typename T>
61  typedef T Type;
62  };
63 
64  template <typename T>
65  struct RunSummaryCache {
67  typedef T Type;
68  };
69 
70  template <typename T>
73  typedef T Type;
74  };
75 
79  };
80 
84  };
85 
89  };
90 
94  };
95 
96  struct EndRunProducer {
99  };
100 
104  };
105 
109  };
110 
114  };
115 
116  struct ExternalWork {
119  };
120 
121  struct Accumulator {
124  };
125 
126  //Recursively checks VArgs template arguments looking for the ABILITY
127  template <module::Abilities ABILITY, typename... VArgs>
128  struct CheckAbility;
129 
130  template <module::Abilities ABILITY, typename T, typename... VArgs>
131  struct CheckAbility<ABILITY, T, VArgs...> {
132  static constexpr bool kHasIt = (T::kAbilities == ABILITY) | CheckAbility<ABILITY, VArgs...>::kHasIt;
133  };
134 
135  //End of the recursion
136  template <module::Abilities ABILITY>
137  struct CheckAbility<ABILITY> {
138  static constexpr bool kHasIt = false;
139  };
140 
141  template <typename... VArgs>
143  static constexpr bool value = CheckAbility<module::Abilities::kWatchProcessBlock, VArgs...>::kHasIt or
146  };
147 
148  template <typename... VArgs>
150  static constexpr bool value = CheckAbility<module::Abilities::kInputProcessBlockCache, VArgs...>::kHasIt;
151  };
152 
153  template <typename... VArgs>
155  static constexpr bool value = CheckAbility<module::Abilities::kRunCache, VArgs...>::kHasIt or
159  };
160 
161  template <typename... VArgs>
163  static constexpr bool value = CheckAbility<module::Abilities::kLuminosityBlockCache, VArgs...>::kHasIt or
167  };
168 
169  template <typename... VArgs>
171  static constexpr bool value = CheckAbility<module::Abilities::kStreamCache, VArgs...>::kHasIt or
173  };
174 
175  template <typename... VArgs>
177  static constexpr bool value = CheckAbility<module::Abilities::kStreamCache, VArgs...>::kHasIt or
179  };
180 
181  template <typename... VArgs>
183  static constexpr bool value = CheckAbility<module::Abilities::kBeginProcessBlockProducer, VArgs...>::kHasIt;
184  };
185 
186  template <typename... VArgs>
188  static constexpr bool value = CheckAbility<module::Abilities::kEndProcessBlockProducer, VArgs...>::kHasIt;
189  };
190 
191  template <typename... VArgs>
193  static constexpr bool value = CheckAbility<module::Abilities::kBeginRunProducer, VArgs...>::kHasIt;
194  };
195 
196  template <typename... VArgs>
198  static constexpr bool value = CheckAbility<module::Abilities::kEndRunProducer, VArgs...>::kHasIt;
199  };
200 
201  template <typename... VArgs>
203  static constexpr bool value = CheckAbility<module::Abilities::kBeginLuminosityBlockProducer, VArgs...>::kHasIt;
204  };
205 
206  template <typename... VArgs>
208  static constexpr bool value = CheckAbility<module::Abilities::kEndLuminosityBlockProducer, VArgs...>::kHasIt;
209  };
210 
211 } // namespace edm
212 
213 #endif
static constexpr module::Abilities kAbilities
static constexpr module::Abilities kAbilities
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventIDconst &, edm::Timestampconst & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
module::Empty Type
static constexpr module::Abilities kAbilities
static constexpr module::Abilities kAbilities
static constexpr module::Abilities kAbilities
static constexpr module::Abilities kAbilities
static constexpr module::Abilities kAbilities
static constexpr module::Abilities kAbilities
static constexpr module::Abilities kAbilities
static constexpr bool value
static constexpr module::Abilities kAbilities
static constexpr module::Abilities kAbilities
static constexpr module::Abilities kAbilities
module::Empty Type
static constexpr module::Abilities kAbilities
static constexpr module::Abilities kAbilities
static constexpr bool value
module::Empty Type
static constexpr module::Abilities kAbilities
static constexpr module::Abilities kAbilities
long double T
tuple module
Definition: callgraph.py:69
static constexpr module::Abilities kAbilities