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 "boost/utility.hpp" 00026 #include "sigc++/signal.h" 00027 00028 // user include files 00029 #include "DataFormats/Provenance/interface/ProductRegistry.h" 00030 00031 // forward declarations 00032 namespace edm { 00033 class SignallingProductRegistry : public ProductRegistry, private boost::noncopyable { 00034 00035 public: 00036 SignallingProductRegistry() : ProductRegistry(), productAddedSignal_(), typeAddedStack_() {} 00037 explicit SignallingProductRegistry(ProductRegistry const& preg) : ProductRegistry(preg.productList(), false), productAddedSignal_(), typeAddedStack_() {} 00038 sigc::signal<void, BranchDescription const&> productAddedSignal_; 00039 00040 private: 00041 virtual void addCalled(BranchDescription const&, bool); 00042 // ---------- member data -------------------------------- 00043 std::map<std::string, unsigned int> typeAddedStack_; 00044 }; 00045 } 00046 00047 #endif