Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:12:24

0001 #ifndef FWCore_Framework_ESProductResolverFactoryTemplate_h
0002 #define FWCore_Framework_ESProductResolverFactoryTemplate_h
0003 // -*- C++ -*-
0004 //
0005 // Package:     Framework
0006 // Class  :     ESProductResolverFactoryTemplate
0007 //
0008 /**\class edm::eventsetup::ESProductResolverFactoryTemplate
0009 
0010  Description: <one line class summary>
0011 
0012  Usage:
0013     <usage>
0014 
0015 */
0016 //
0017 // Author:      Chris Jones
0018 // Created:     Fri Apr  8 07:59:32 CDT 2005
0019 //
0020 
0021 // system include files
0022 #include <memory>
0023 #include <string>
0024 
0025 // user include files
0026 #include "FWCore/Framework/interface/ESProductResolverFactoryBase.h"
0027 #include "FWCore/Framework/interface/DataKey.h"
0028 
0029 namespace edm {
0030   namespace eventsetup {
0031 
0032     class ESProductResolver;
0033 
0034     template <class T>
0035     class ESProductResolverFactoryTemplate : public ESProductResolverFactoryBase {
0036     public:
0037       using RecordType = typename T::record_type;
0038 
0039       ESProductResolverFactoryTemplate() = default;
0040 
0041       ESProductResolverFactoryTemplate(const ESProductResolverFactoryTemplate&) = delete;
0042       const ESProductResolverFactoryTemplate& operator=(const ESProductResolverFactoryTemplate&) = delete;
0043 
0044       std::unique_ptr<ESProductResolver> makeResolver(unsigned int) override { return std::make_unique<T>(); }
0045 
0046       DataKey makeKey(const std::string& iName) const override {
0047         return DataKey(DataKey::makeTypeTag<typename T::value_type>(), iName.c_str());
0048       }
0049     };
0050   }  // namespace eventsetup
0051 }  // namespace edm
0052 #endif