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<RunCache<R>, U...> : public HasAbility<U...> {
42  static constexpr bool kRunCache = true;
43  };
44 
45  template <typename R, typename... U>
46  struct HasAbility<LuminosityBlockCache<R>, U...> : public HasAbility<U...> {
47  static constexpr bool kLuminosityBlockCache = true;
48  };
49 
50  template <typename R, typename... U>
51  struct HasAbility<RunSummaryCache<R>, U...> : public HasAbility<U...> {
52  static constexpr bool kRunSummaryCache = true;
53  };
54 
55  template <typename R, typename... U>
56  struct HasAbility<LuminosityBlockSummaryCache<R>, U...> : public HasAbility<U...> {
57  static constexpr bool kLuminosityBlockSummaryCache = true;
58  };
59 
60  template <typename... U>
61  struct HasAbility<edm::BeginRunProducer, U...> : public HasAbility<U...> {
62  static constexpr bool kBeginRunProducer = true;
63  };
64 
65  template <typename... U>
66  struct HasAbility<edm::EndRunProducer, U...> : public HasAbility<U...> {
67  static constexpr bool kEndRunProducer = true;
68  };
69 
70  template <typename... U>
71  struct HasAbility<edm::BeginLuminosityBlockProducer, U...> : public HasAbility<U...> {
72  static constexpr bool kBeginLuminosityBlockProducer = true;
73  };
74 
75  template <typename... U>
76  struct HasAbility<edm::EndLuminosityBlockProducer, U...> : public HasAbility<U...> {
77  static constexpr bool kEndLuminosityBlockProducer = true;
78  };
79 
80  template <typename... U>
81  struct HasAbility<edm::ExternalWork, U...> : public HasAbility<U...> {
82  static constexpr bool kExternalWork = true;
83  };
84 
85  template <typename... U>
86  struct HasAbility<edm::Accumulator, U...> : public HasAbility<U...> {
87  static constexpr bool kAccumulator = true;
88  };
89 
90  template <>
92  static constexpr bool kGlobalCache = false;
93  static constexpr bool kRunCache = false;
94  static constexpr bool kLuminosityBlockCache = false;
95  static constexpr bool kRunSummaryCache = false;
96  static constexpr bool kLuminosityBlockSummaryCache = false;
97  static constexpr bool kBeginRunProducer = false;
98  static constexpr bool kEndRunProducer = false;
99  static constexpr bool kBeginLuminosityBlockProducer = false;
100  static constexpr bool kEndLuminosityBlockProducer = false;
101  static constexpr bool kExternalWork = false;
102  static constexpr bool kAccumulator = false;
103  };
104  } // namespace impl
105  template <typename... T>
106  struct AbilityChecker : public impl::HasAbility<T..., impl::LastCheck> {};
107  } // namespace stream
108 } // namespace edm
109 
110 #endif
edm::GlobalCache
Definition: moduleAbilities.h:36
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
callgraph.G
G
Definition: callgraph.py:13
edm::stream::impl::BeginLuminosityBlockProducer
Definition: implementors.h:131
edm::LuminosityBlockCache
Definition: moduleAbilities.h:54
edm::LuminosityBlockSummaryCache
Definition: moduleAbilities.h:66
edm::RunCache
Definition: moduleAbilities.h:48
mitigatedMETSequence_cff.U
U
Definition: mitigatedMETSequence_cff.py:36
edm::stream::impl::EndLuminosityBlockProducer
Definition: implementors.h:142
edm::stream::impl::HasAbility
Definition: AbilityChecker.h:33
edm::stream::AbilityChecker
Definition: AbilityChecker.h:106
impl
Definition: trackAlgoPriorityOrder.h:18
edm::RunSummaryCache
Definition: moduleAbilities.h:60
T
long double T
Definition: Basic3DVectorLD.h:48
moduleAbilities.h
edm::stream::impl::ExternalWork
Definition: implementors.h:153
dttmaxenums::R
Definition: DTTMax.h:29
edm::stream::impl::BeginRunProducer
Definition: implementors.h:110
edm::stream::impl::EndRunProducer
Definition: implementors.h:120
edm::stream::impl::Accumulator
Definition: implementors.h:163