Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2023-03-17 11:01:56

0001 #ifndef FWCore_Framework_stream_AbilityToImplementor_h
0002 #define FWCore_Framework_stream_AbilityToImplementor_h
0003 // -*- C++ -*-
0004 //
0005 // Package:     FWCore/Framework
0006 // File  :     AbilityToImplementor
0007 //
0008 /**\class  edm::stream::AbilityToImplementor producerAbilityToImplementor.h "FWCore/Framework/interface/stream/AbilityToImplementor.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/stream/implementors.h"
0026 
0027 // forward declarations
0028 namespace edm {
0029   namespace stream {
0030     template <typename T>
0031     struct AbilityToImplementor;
0032 
0033     template <typename C>
0034     struct AbilityToImplementor<edm::GlobalCache<C>> {
0035       using Type = edm::stream::impl::GlobalCacheHolder<C>;
0036     };
0037 
0038     template <typename... CacheTypes>
0039     struct AbilityToImplementor<edm::InputProcessBlockCache<CacheTypes...>> {
0040       using Type = edm::stream::impl::InputProcessBlockCacheHolder<CacheTypes...>;
0041     };
0042 
0043     template <typename C>
0044     struct AbilityToImplementor<edm::RunCache<C>> {
0045       using Type = edm::stream::impl::RunCacheHolder<C>;
0046     };
0047 
0048     template <typename C>
0049     struct AbilityToImplementor<edm::RunSummaryCache<C>> {
0050       using Type = edm::stream::impl::RunSummaryCacheHolder<C>;
0051     };
0052 
0053     template <typename C>
0054     struct AbilityToImplementor<edm::LuminosityBlockCache<C>> {
0055       using Type = edm::stream::impl::LuminosityBlockCacheHolder<C>;
0056     };
0057 
0058     template <typename C>
0059     struct AbilityToImplementor<edm::LuminosityBlockSummaryCache<C>> {
0060       using Type = edm::stream::impl::LuminosityBlockSummaryCacheHolder<C>;
0061     };
0062 
0063     template <>
0064     struct AbilityToImplementor<edm::WatchProcessBlock> {
0065       using Type = edm::stream::impl::WatchProcessBlock;
0066     };
0067 
0068     template <>
0069     struct AbilityToImplementor<edm::BeginProcessBlockProducer> {
0070       using Type = edm::stream::impl::BeginProcessBlockProducer;
0071     };
0072 
0073     template <>
0074     struct AbilityToImplementor<edm::EndProcessBlockProducer> {
0075       using Type = edm::stream::impl::EndProcessBlockProducer;
0076     };
0077 
0078     template <>
0079     struct AbilityToImplementor<edm::BeginRunProducer> {
0080       using Type = edm::stream::impl::BeginRunProducer;
0081     };
0082 
0083     template <>
0084     struct AbilityToImplementor<edm::EndRunProducer> {
0085       using Type = edm::stream::impl::EndRunProducer;
0086     };
0087 
0088     template <>
0089     struct AbilityToImplementor<edm::BeginLuminosityBlockProducer> {
0090       using Type = edm::stream::impl::BeginLuminosityBlockProducer;
0091     };
0092 
0093     template <>
0094     struct AbilityToImplementor<edm::EndLuminosityBlockProducer> {
0095       using Type = edm::stream::impl::EndLuminosityBlockProducer;
0096     };
0097 
0098     template <>
0099     struct AbilityToImplementor<edm::ExternalWork> {
0100       using Type = edm::stream::impl::ExternalWork;
0101     };
0102 
0103     // As currently implemented this ability only works
0104     // with EDProducer, not with EDAnalyzers or EDFilters!
0105     template <>
0106     struct AbilityToImplementor<edm::Transformer> {
0107       using Type = edm::stream::impl::Transformer;
0108     };
0109 
0110     // As currently implemented this ability only works
0111     // with EDProducer, not with EDAnalyzers or EDFilters!
0112     template <>
0113     struct AbilityToImplementor<edm::Accumulator> {
0114       using Type = edm::stream::impl::Accumulator;
0115     };
0116   }  // namespace stream
0117 }  // namespace edm
0118 
0119 #endif