CMS 3D CMS Logo

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  struct Transformer {
129  };
130 
131  //Recursively checks VArgs template arguments looking for the ABILITY
132  template <module::Abilities ABILITY, typename... VArgs>
133  struct CheckAbility;
134 
135  template <module::Abilities ABILITY, typename T, typename... VArgs>
136  struct CheckAbility<ABILITY, T, VArgs...> {
137  static constexpr bool kHasIt = (T::kAbilities == ABILITY) | CheckAbility<ABILITY, VArgs...>::kHasIt;
138  };
139 
140  //End of the recursion
141  template <module::Abilities ABILITY>
142  struct CheckAbility<ABILITY> {
143  static constexpr bool kHasIt = false;
144  };
145 
146  template <typename... VArgs>
151  };
152 
153  template <typename... VArgs>
156  };
157 
158  template <typename... VArgs>
160  static constexpr bool value = CheckAbility<module::Abilities::kRunCache, VArgs...>::kHasIt or
164  };
165 
166  template <typename... VArgs>
172  };
173 
174  template <typename... VArgs>
178  };
179 
180  template <typename... VArgs>
184  };
185 
186  template <typename... VArgs>
189  };
190 
191  template <typename... VArgs>
194  };
195 
196  template <typename... VArgs>
199  };
200 
201  template <typename... VArgs>
204  };
205 
206  template <typename... VArgs>
209  };
210 
211  template <typename... VArgs>
214  };
215 
216 } // namespace edm
217 
218 #endif
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 module::Abilities kAbilities
static constexpr module::Abilities kAbilities
static constexpr module::Abilities kAbilities
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::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
static constexpr module::Abilities kAbilities
Definition: value.py:1
static constexpr module::Abilities kAbilities
static constexpr module::Abilities kAbilities
module::Empty Type
static constexpr module::Abilities kAbilities
static constexpr module::Abilities kAbilities
module::Empty Type
HLT enums.
static constexpr module::Abilities kAbilities
static constexpr module::Abilities kAbilities
long double T
static constexpr module::Abilities kAbilities
static constexpr module::Abilities kAbilities