Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2022-09-11 22:29:28

0001 #ifndef FWCore_Framework_one_producerAbilityToImplementor_h
0002 #define FWCore_Framework_one_producerAbilityToImplementor_h
0003 // -*- C++ -*-
0004 //
0005 // Package:     Package
0006 // Class  :     producer::AbilityToImplementor
0007 //
0008 /**\class producer::AbilityToImplementor producerAbilityToImplementor.h "FWCore/Framework/interface/one/producerAbilityToImplementor.h"
0009 
0010  Description: [one line class summary]
0011 
0012  Usage:
0013     <usage>
0014 
0015 */
0016 //
0017 // Original Author:  Chris Jones
0018 //         Created:  Thu, 09 May 2013 19:39:58 GMT
0019 //
0020 
0021 // system include files
0022 
0023 // user include files
0024 #include "FWCore/Framework/interface/moduleAbilities.h"
0025 #include "FWCore/Framework/interface/one/moduleAbilities.h"
0026 #include "FWCore/Framework/interface/one/implementors.h"
0027 #include "FWCore/Framework/interface/one/EDProducerBase.h"
0028 
0029 // forward declarations
0030 
0031 namespace edm {
0032   namespace one {
0033     namespace producer {
0034       template <typename T>
0035       struct AbilityToImplementor;
0036 
0037       template <>
0038       struct AbilityToImplementor<edm::one::SharedResources> {
0039         using Type = edm::one::impl::SharedResourcesUser<edm::one::EDProducerBase>;
0040       };
0041 
0042       template <>
0043       struct AbilityToImplementor<edm::one::WatchRuns> {
0044         using Type = edm::one::impl::RunWatcher<edm::one::EDProducerBase>;
0045       };
0046 
0047       template <>
0048       struct AbilityToImplementor<edm::one::WatchLuminosityBlocks> {
0049         using Type = edm::one::impl::LuminosityBlockWatcher<edm::one::EDProducerBase>;
0050       };
0051 
0052       template <>
0053       struct AbilityToImplementor<edm::WatchProcessBlock> {
0054         using Type = edm::one::impl::WatchProcessBlock<edm::one::EDProducerBase>;
0055       };
0056 
0057       template <>
0058       struct AbilityToImplementor<edm::BeginProcessBlockProducer> {
0059         using Type = edm::one::impl::BeginProcessBlockProducer<edm::one::EDProducerBase>;
0060       };
0061 
0062       template <>
0063       struct AbilityToImplementor<edm::EndProcessBlockProducer> {
0064         using Type = edm::one::impl::EndProcessBlockProducer<edm::one::EDProducerBase>;
0065       };
0066 
0067       template <>
0068       struct AbilityToImplementor<edm::BeginRunProducer> {
0069         using Type = edm::one::impl::BeginRunProducer<edm::one::EDProducerBase>;
0070       };
0071 
0072       template <>
0073       struct AbilityToImplementor<edm::EndRunProducer> {
0074         using Type = edm::one::impl::EndRunProducer<edm::one::EDProducerBase>;
0075       };
0076 
0077       template <>
0078       struct AbilityToImplementor<edm::BeginLuminosityBlockProducer> {
0079         using Type = edm::one::impl::BeginLuminosityBlockProducer<edm::one::EDProducerBase>;
0080       };
0081 
0082       template <>
0083       struct AbilityToImplementor<edm::EndLuminosityBlockProducer> {
0084         using Type = edm::one::impl::EndLuminosityBlockProducer<edm::one::EDProducerBase>;
0085       };
0086 
0087       template <>
0088       struct AbilityToImplementor<edm::Transformer> {
0089         using Type = edm::one::impl::Transformer<edm::one::EDProducerBase>;
0090       };
0091 
0092       template <typename... Cs>
0093       struct AbilityToImplementor<edm::InputProcessBlockCache<Cs...>> {
0094         using Type = edm::one::impl::InputProcessBlockCacheHolder<edm::one::EDProducerBase, Cs...>;
0095       };
0096 
0097       template <typename C>
0098       struct AbilityToImplementor<edm::RunCache<C>> {
0099         using Type = edm::one::impl::RunCacheHolder<edm::one::EDProducerBase, C>;
0100       };
0101 
0102       template <typename C>
0103       struct AbilityToImplementor<edm::LuminosityBlockCache<C>> {
0104         using Type = edm::one::impl::LuminosityBlockCacheHolder<edm::one::EDProducerBase, C>;
0105       };
0106 
0107       template <>
0108       struct AbilityToImplementor<edm::Accumulator> {
0109         using Type = edm::one::impl::Accumulator<edm::one::EDProducerBase>;
0110       };
0111 
0112     }  // namespace producer
0113   }    // namespace one
0114 }  // namespace edm
0115 
0116 #endif