File indexing completed on 2024-04-06 12:12:59
0001 #ifndef FWCore_PluginManager_PluginFactoryManager_h
0002 #define FWCore_PluginManager_PluginFactoryManager_h
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022 #include <string>
0023 #include <vector>
0024 #include "FWCore/Utilities/interface/Signal.h"
0025
0026
0027
0028
0029 namespace edmplugin {
0030 class PluginFactoryBase;
0031 class DummyFriend;
0032 class PluginFactoryManager {
0033 public:
0034 friend class DummyFriend;
0035
0036 PluginFactoryManager(const PluginFactoryManager&) = delete;
0037 const PluginFactoryManager& operator=(const PluginFactoryManager&) = delete;
0038 ~PluginFactoryManager();
0039
0040 typedef std::vector<const PluginFactoryBase*>::const_iterator const_iterator;
0041
0042 const_iterator begin() const;
0043 const_iterator end() const;
0044
0045
0046 static PluginFactoryManager* get();
0047
0048
0049 void addFactory(const PluginFactoryBase*);
0050 edm::signalslot::Signal<void(const PluginFactoryBase*)> newFactory_;
0051
0052 private:
0053 PluginFactoryManager();
0054
0055
0056 std::vector<const PluginFactoryBase*> factories_;
0057 };
0058
0059 }
0060 #endif