CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
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<>
82  static constexpr bool kGlobalCache = false;
83  static constexpr bool kRunCache = false;
84  static constexpr bool kLuminosityBlockCache = false;
85  static constexpr bool kRunSummaryCache = false;
86  static constexpr bool kLuminosityBlockSummaryCache = false;
87  static constexpr bool kBeginRunProducer = false;
88  static constexpr bool kEndRunProducer = false;
89  static constexpr bool kBeginLuminosityBlockProducer = false;
90  static constexpr bool kEndLuminosityBlockProducer = false;
91  };
92  }
93  template<typename... T>
94  struct AbilityChecker : public impl::HasAbility<T...,impl::LastCheck>
95  {
96  };
97  }
98 }
99 
100 
101 #endif
102 
#define constexpr
tuple G
Definition: callgraph.py:12
long double T