Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-05-11 03:34:09

0001 #ifndef FWCore_Framework_global_OutputModule_h
0002 #define FWCore_Framework_global_OutputModule_h
0003 // -*- C++ -*-
0004 //
0005 // Package:     FWCore/Framework
0006 // Class  :     edm::global::OutputModule
0007 //
0008 /**\class edm::global::OutputModule OutputModule.h "FWCore/Framework/interface/global/OutputModule.h"
0009 
0010  Description: [one line class summary]
0011 
0012  Usage:
0013     <usage>
0014 
0015 */
0016 //
0017 //
0018 
0019 // system include files
0020 
0021 // user include files
0022 #include "FWCore/Framework/interface/global/outputmoduleAbilityToImplementor.h"
0023 
0024 // forward declarations
0025 namespace edm {
0026   namespace global {
0027     template <typename... T>
0028     class OutputModule : public virtual OutputModuleBase, public outputmodule::AbilityToImplementor<T>::Type... {
0029     public:
0030       OutputModule(edm::ParameterSet const& iPSet)
0031           : OutputModuleBase(iPSet), outputmodule::AbilityToImplementor<T>::Type(iPSet)... {}
0032       OutputModule(const OutputModule&) = delete;                   // stop default
0033       const OutputModule& operator=(const OutputModule&) = delete;  // stop default
0034 
0035       // Required to work around ICC bug, but possible source of bloat in gcc.
0036       // We do this only in the case of the intel compiler as this might end up
0037       // creating a lot of code bloat due to inline symbols being generated in
0038       // each DSO which uses this header.
0039 #ifdef __INTEL_COMPILER
0040       virtual ~OutputModule() = default;
0041 #endif
0042 
0043       // ---------- const member functions ---------------------
0044       bool wantsProcessBlocks() const noexcept final { return WantsProcessBlockTransitions<T...>::value; }
0045       bool wantsInputProcessBlocks() const noexcept final { return WantsInputProcessBlockTransitions<T...>::value; }
0046       bool wantsStreamRuns() const noexcept final { return WantsStreamRunTransitions<T...>::value; }
0047       bool wantsStreamLuminosityBlocks() const noexcept final {
0048         return WantsStreamLuminosityBlockTransitions<T...>::value;
0049       }
0050 
0051       // ---------- static member functions --------------------
0052 
0053       // ---------- member functions ---------------------------
0054 
0055     private:
0056       // ---------- member data --------------------------------
0057     };
0058   }  // namespace global
0059 }  // namespace edm
0060 
0061 #endif