CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_5/src/FWCore/Framework/src/SignallingProductRegistry.h

Go to the documentation of this file.
00001 #ifndef FWCore_Framework_SignallingProductRegistry_h
00002 #define FWCore_Framework_SignallingProductRegistry_h
00003 // -*- C++ -*-
00004 //
00005 // Package:     Framework
00006 // Class  :     SignallingProductRegistry
00007 //
00016 //
00017 // Original Author:  Chris Jones
00018 //         Created:  Fri Sep 23 16:47:10 CEST 2005
00019 //
00020 
00021 // system include files
00022 #include <map>
00023 #include <string>
00024 
00025 #include "FWCore/Utilities/interface/Signal.h"
00026 
00027 // user include files
00028 #include "DataFormats/Provenance/interface/ProductRegistry.h"
00029 
00030 // forward declarations
00031 namespace edm {
00032    class SignallingProductRegistry : public ProductRegistry {
00033 
00034    public:
00035       SignallingProductRegistry() : ProductRegistry(), productAddedSignal_(), typeAddedStack_() {}
00036       explicit SignallingProductRegistry(ProductRegistry const& preg) : ProductRegistry(preg.productList(), false), productAddedSignal_(), typeAddedStack_() {}
00037       signalslot::Signal<void(BranchDescription const&)> productAddedSignal_;
00038 
00039       SignallingProductRegistry(SignallingProductRegistry const&) = delete; // Disallow copying and moving
00040       SignallingProductRegistry& operator=(SignallingProductRegistry const&) = delete; // Disallow copying and moving
00041 
00042    private:
00043       virtual void addCalled(BranchDescription const&, bool);
00044       // ---------- member data --------------------------------
00045       std::map<std::string, unsigned int> typeAddedStack_;
00046    };
00047 }
00048 
00049 #endif