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
25 
26 // forward declarations
27 namespace edm {
28  namespace stream {
29  namespace impl {
30  struct LastCheck {};
31 
32  template <typename T, typename... U>
33  struct HasAbility;
34 
35  template <typename G, typename... U>
36  struct HasAbility<GlobalCache<G>, U...> : public HasAbility<U...> {
37  static constexpr bool kGlobalCache = true;
38  };
39 
40  template <typename R, typename... U>
41  struct HasAbility<InputProcessBlockCache<R>, U...> : public HasAbility<U...> {
42  static constexpr bool kInputProcessBlockCache = true;
43  };
44 
45  template <typename R, typename... U>
46  struct HasAbility<RunCache<R>, U...> : public HasAbility<U...> {
47  static constexpr bool kRunCache = true;
48  };
49 
50  template <typename R, typename... U>
51  struct HasAbility<LuminosityBlockCache<R>, U...> : public HasAbility<U...> {
52  static constexpr bool kLuminosityBlockCache = true;
53  };
54 
55  template <typename R, typename... U>
56  struct HasAbility<RunSummaryCache<R>, U...> : public HasAbility<U...> {
57  static constexpr bool kRunSummaryCache = true;
58  };
59 
60  template <typename R, typename... U>
61  struct HasAbility<LuminosityBlockSummaryCache<R>, U...> : public HasAbility<U...> {
62  static constexpr bool kLuminosityBlockSummaryCache = true;
63  };
64 
65  template <typename... U>
66  struct HasAbility<edm::WatchProcessBlock, U...> : public HasAbility<U...> {
67  static constexpr bool kWatchProcessBlock = true;
68  };
69 
70  template <typename... U>
71  struct HasAbility<edm::BeginProcessBlockProducer, U...> : public HasAbility<U...> {
72  static constexpr bool kBeginProcessBlockProducer = true;
73  };
74 
75  template <typename... U>
76  struct HasAbility<edm::EndProcessBlockProducer, U...> : public HasAbility<U...> {
77  static constexpr bool kEndProcessBlockProducer = true;
78  };
79 
80  template <typename... U>
81  struct HasAbility<edm::BeginRunProducer, U...> : public HasAbility<U...> {
82  static constexpr bool kBeginRunProducer = true;
83  };
84 
85  template <typename... U>
86  struct HasAbility<edm::EndRunProducer, U...> : public HasAbility<U...> {
87  static constexpr bool kEndRunProducer = true;
88  };
89 
90  template <typename... U>
91  struct HasAbility<edm::BeginLuminosityBlockProducer, U...> : public HasAbility<U...> {
92  static constexpr bool kBeginLuminosityBlockProducer = true;
93  };
94 
95  template <typename... U>
96  struct HasAbility<edm::EndLuminosityBlockProducer, U...> : public HasAbility<U...> {
97  static constexpr bool kEndLuminosityBlockProducer = true;
98  };
99 
100  template <typename... U>
101  struct HasAbility<edm::ExternalWork, U...> : public HasAbility<U...> {
102  static constexpr bool kExternalWork = true;
103  };
104 
105  template <typename... U>
106  struct HasAbility<edm::Accumulator, U...> : public HasAbility<U...> {
107  static constexpr bool kAccumulator = true;
108  };
109 
110  template <>
112  static constexpr bool kGlobalCache = false;
113  static constexpr bool kInputProcessBlockCache = false;
114  static constexpr bool kRunCache = false;
115  static constexpr bool kLuminosityBlockCache = false;
116  static constexpr bool kRunSummaryCache = false;
117  static constexpr bool kLuminosityBlockSummaryCache = false;
118  static constexpr bool kWatchProcessBlock = false;
119  static constexpr bool kBeginProcessBlockProducer = false;
120  static constexpr bool kEndProcessBlockProducer = false;
121  static constexpr bool kBeginRunProducer = false;
122  static constexpr bool kEndRunProducer = false;
123  static constexpr bool kBeginLuminosityBlockProducer = false;
124  static constexpr bool kEndLuminosityBlockProducer = false;
125  static constexpr bool kExternalWork = false;
126  static constexpr bool kAccumulator = false;
127  };
128  } // namespace impl
129  template <typename... T>
130  struct AbilityChecker : public impl::HasAbility<T..., impl::LastCheck> {};
131  } // namespace stream
132 } // namespace edm
133 
134 #endif
edm::GlobalCache
Definition: moduleAbilities.h:36
edm::stream::impl::EndProcessBlockProducer
Definition: implementors.h:145
edm::stream::impl::LastCheck
Definition: AbilityChecker.h:30
edm
HLT enums.
Definition: AlignableModifier.h:19
cms::cuda::stream
cudaStream_t stream
Definition: HistoContainer.h:57
edm::InputProcessBlockCache
Definition: moduleAbilities.h:48
callgraph.G
G
Definition: callgraph.py:13
edm::stream::impl::BeginLuminosityBlockProducer
Definition: implementors.h:175
edm::LuminosityBlockCache
Definition: moduleAbilities.h:60
edm::LuminosityBlockSummaryCache
Definition: moduleAbilities.h:72
edm::RunCache
Definition: moduleAbilities.h:54
mitigatedMETSequence_cff.U
U
Definition: mitigatedMETSequence_cff.py:36
edm::stream::impl::EndLuminosityBlockProducer
Definition: implementors.h:185
edm::stream::impl::HasAbility
Definition: AbilityChecker.h:33
edm::stream::AbilityChecker
Definition: AbilityChecker.h:130
edm::stream::impl::WatchProcessBlock
Definition: implementors.h:125
impl
Definition: trackAlgoPriorityOrder.h:18
edm::stream::impl::BeginProcessBlockProducer
Definition: implementors.h:135
edm::RunSummaryCache
Definition: moduleAbilities.h:66
T
long double T
Definition: Basic3DVectorLD.h:48
moduleAbilities.h
edm::stream::impl::ExternalWork
Definition: implementors.h:195
dttmaxenums::R
Definition: DTTMax.h:29
edm::stream::impl::BeginRunProducer
Definition: implementors.h:155
edm::stream::impl::EndRunProducer
Definition: implementors.h:165
edm::stream::impl::Accumulator
Definition: implementors.h:205