00001 #ifndef Framework_SignallingProductRegistry_h 00002 #define 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 // $Id: SignallingProductRegistry.h,v 1.6 2007/03/04 06:10:25 wmtan Exp $ 00020 // 00021 00022 // system include files 00023 #include "sigc++/signal.h" 00024 #include <map> 00025 #include <string> 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 00035 public: 00036 SignallingProductRegistry() : ProductRegistry(), productAddedSignal_(), typeAddedStack_() {} 00037 sigc::signal<void, BranchDescription const&> productAddedSignal_; 00038 00039 private: 00040 SignallingProductRegistry(const SignallingProductRegistry&); // stop default 00041 00042 const SignallingProductRegistry& operator=(const SignallingProductRegistry&); // stop default 00043 00044 virtual void addCalled(BranchDescription const&, bool); 00045 // ---------- member data -------------------------------- 00046 std::map<std::string, unsigned int> typeAddedStack_; 00047 }; 00048 } 00049 00050 #endif