CMS 3D CMS Logo

CacheContexts.h
Go to the documentation of this file.
1 #ifndef FWCore_Framework_stream_CacheContexts_h
2 #define FWCore_Framework_stream_CacheContexts_h
3 // -*- C++ -*-
4 //
5 // Package: FWCore/Framework
6 // Class : CacheContexts
7 //
16 //
17 // Original Author: Chris Jones
18 // Created: Fri, 02 Aug 2013 00:17:38 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 Last {};
31 
32  template <typename T, typename... U>
33  struct AbilityToCache : public AbilityToCache<U...> {};
34 
35  template <typename G, typename... U>
36  struct AbilityToCache<GlobalCache<G>, U...> : public AbilityToCache<U...> {
37  typedef G GlobalCache;
38  };
39 
40  template <typename R, typename... U>
41  struct AbilityToCache<RunCache<R>, U...> : public AbilityToCache<U...> {
42  typedef R RunCache;
43  };
44 
45  template <typename L, typename... U>
46  struct AbilityToCache<LuminosityBlockCache<L>, U...> : public AbilityToCache<U...> {
48  };
49 
50  template <typename R, typename... U>
51  struct AbilityToCache<RunSummaryCache<R>, U...> : public AbilityToCache<U...> {
52  typedef R RunSummaryCache;
53  };
54 
55  template <typename L, typename... U>
58  };
59 
60  template <>
61  struct AbilityToCache<Last> {
62  typedef void GlobalCache;
63  typedef void RunCache;
64  typedef void LuminosityBlockCache;
65  typedef void RunSummaryCache;
67  };
68 
69  } // namespace impl
70  template <typename... T>
71  struct CacheContexts : public impl::AbilityToCache<T..., impl::Last> {};
72  } // namespace stream
73 } // namespace edm
74 
75 #endif
HLT enums.
long double T