Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-09-07 04:36:21

0001 #ifndef FWCore_Framework_global_analyzerAbilityToImplementor_h
0002 #define FWCore_Framework_global_analyzerAbilityToImplementor_h
0003 // -*- C++ -*-
0004 //
0005 // Package:     FWCore/Framework
0006 // File  :     analyzerAbilityToImplementor
0007 //
0008 /**\file  analyzerAbilityToImplementor.h "FWCore/Framework/interface/global/analyzerAbilityToImplementor.h"
0009 
0010  Description: Class used to pair a module Ability to the actual base class used to implement that ability
0011 
0012  Usage:
0013     <usage>
0014 
0015 */
0016 //
0017 // Original Author:  Chris Jones
0018 //         Created:  Thu, 18 Jul 2013 11:51:33 GMT
0019 //
0020 
0021 // system include files
0022 
0023 // user include files
0024 #include "FWCore/Framework/interface/moduleAbilities.h"
0025 #include "FWCore/Framework/interface/global/implementors.h"
0026 #include "FWCore/Framework/interface/global/EDAnalyzerBase.h"
0027 
0028 // forward declarations
0029 namespace edm {
0030   namespace global {
0031     namespace analyzer {
0032       template <typename T>
0033       struct AbilityToImplementor;
0034 
0035       template <typename C>
0036       struct AbilityToImplementor<edm::StreamCache<C>> {
0037         using Type = edm::global::impl::StreamCacheHolder<edm::global::EDAnalyzerBase, C>;
0038       };
0039 
0040       template <typename... Cs>
0041       struct AbilityToImplementor<edm::InputProcessBlockCache<Cs...>> {
0042         using Type = edm::global::impl::InputProcessBlockCacheHolder<edm::global::EDAnalyzerBase, Cs...>;
0043       };
0044 
0045       template <typename C>
0046       struct AbilityToImplementor<edm::RunCache<C>> {
0047         using Type = edm::global::impl::RunCacheHolder<edm::global::EDAnalyzerBase, C>;
0048       };
0049 
0050       template <typename C>
0051       struct AbilityToImplementor<edm::RunSummaryCache<C>> {
0052         using Type = edm::global::impl::RunSummaryCacheHolder<edm::global::EDAnalyzerBase, C>;
0053       };
0054 
0055       template <typename C>
0056       struct AbilityToImplementor<edm::LuminosityBlockCache<C>> {
0057         using Type = edm::global::impl::LuminosityBlockCacheHolder<edm::global::EDAnalyzerBase, C>;
0058       };
0059 
0060       template <typename C>
0061       struct AbilityToImplementor<edm::LuminosityBlockSummaryCache<C>> {
0062         using Type = edm::global::impl::LuminosityBlockSummaryCacheHolder<edm::global::EDAnalyzerBase, C>;
0063       };
0064 
0065       template <>
0066       struct AbilityToImplementor<edm::WatchProcessBlock> {
0067         using Type = edm::global::impl::WatchProcessBlock<edm::global::EDAnalyzerBase>;
0068       };
0069     }  // namespace analyzer
0070   }  // namespace global
0071 }  // namespace edm
0072 
0073 #endif