00001 #ifndef FWCore_PluginManager_PluginFactoryManager_h 00002 #define FWCore_PluginManager_PluginFactoryManager_h 00003 // -*- C++ -*- 00004 // 00005 // Package: PluginManager 00006 // Class : PluginFactoryManager 00007 // 00016 // 00017 // Original Author: Chris Jones 00018 // Created: Wed Apr 4 12:49:41 EDT 2007 00019 // $Id: PluginFactoryManager.h,v 1.3 2013/01/20 17:12:17 chrjones Exp $ 00020 // 00021 00022 // system include files 00023 #include <string> 00024 #include <vector> 00025 #include "FWCore/Utilities/interface/Signal.h" 00026 00027 // user include files 00028 00029 // forward declarations 00030 namespace edmplugin { 00031 class PluginFactoryBase; 00032 class DummyFriend; 00033 class PluginFactoryManager 00034 { 00035 00036 public: 00037 friend class DummyFriend; 00038 00039 ~PluginFactoryManager(); 00040 00041 typedef std::vector<const PluginFactoryBase*>::const_iterator const_iterator; 00042 // ---------- const member functions --------------------- 00043 const_iterator begin() const; 00044 const_iterator end() const; 00045 00046 // ---------- static member functions -------------------- 00047 static PluginFactoryManager* get(); 00048 00049 // ---------- member functions --------------------------- 00050 void addFactory(const PluginFactoryBase*); 00051 edm::signalslot::Signal<void(const PluginFactoryBase*)> newFactory_; 00052 00053 private: 00054 PluginFactoryManager(); 00055 PluginFactoryManager(const PluginFactoryManager&); // stop default 00056 00057 const PluginFactoryManager& operator=(const PluginFactoryManager&); // stop default 00058 00059 // ---------- member data -------------------------------- 00060 std::vector<const PluginFactoryBase*> factories_; 00061 00062 }; 00063 00064 } 00065 #endif