Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2025-06-17 01:30:25

0001 // -*- C++ -*-
0002 #ifndef FWCore_ServiceRegistry_ServiceMakerBase_h
0003 #define FWCore_ServiceRegistry_ServiceMakerBase_h
0004 //
0005 // Package:     ServiceRegistry
0006 // Class  :     ServiceMakerBase
0007 //
0008 /**\class edm::serviceregistry::ServiceMakerBase
0009 
0010  Description: Base class for Service Makers
0011 
0012  Usage:
0013     Internal detail of implementation of the ServiceRegistry system
0014 
0015 */
0016 //
0017 // Original Author:  Chris Jones
0018 //         Created:  Mon Sep  5 13:33:00 EDT 2005
0019 //
0020 
0021 #include <typeinfo>
0022 
0023 // forward declarations
0024 namespace edm {
0025   class ParameterSet;
0026   class ActivityRegistry;
0027 
0028   namespace serviceregistry {
0029     class SaveConfiguration;
0030     class ServiceWrapperBase;
0031     class ServicesManager;
0032 
0033     class ServiceMakerBase {
0034     public:
0035       ServiceMakerBase();
0036       ServiceMakerBase(ServiceMakerBase const&) = delete;                   // stop default
0037       ServiceMakerBase const& operator=(ServiceMakerBase const&) = delete;  // stop default
0038       virtual ~ServiceMakerBase();
0039 
0040       // ---------- const member functions ---------------------
0041       virtual std::type_info const& serviceType() const = 0;
0042 
0043       virtual bool make(ParameterSet const&, ActivityRegistry&, ServicesManager&) const = 0;
0044 
0045       virtual bool saveConfiguration() const = 0;
0046 
0047       // ---------- static member functions --------------------
0048 
0049       // ---------- member functions ---------------------------
0050 
0051     protected:
0052       bool testSaveConfiguration(SaveConfiguration const*) const { return true; }
0053       bool testSaveConfiguration(void const*) const { return false; }
0054 
0055     private:
0056       // ---------- member data --------------------------------
0057     };
0058   }  // namespace serviceregistry
0059 }  // namespace edm
0060 
0061 #endif