![]() |
![]() |
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