CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_7/src/FWCore/PluginManager/interface/PluginFactoryManager.h

Go to the documentation of this file.
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