14 #include "boost/bind.hpp"
26 using namespace edm::eventsetup;
70 typedef Record2Factories::iterator
Iterator;
72 for(Iterator it = range.first; it != range.second; ++it) {
74 boost::shared_ptr<DataProxy> proxy(it->second.factory_->makeProxy().release());
75 if(0 != proxy.get()) {
84 std::auto_ptr<ProxyFactoryBase>& iFactory,
87 if(0 == iFactory.get()) {
88 assert(
false &&
"Factor pointer was null");
94 boost::shared_ptr<ProxyFactoryBase>
temp(iFactory.release());
99 std::pair<Record2Factories::const_iterator,Record2Factories::const_iterator> range =
101 if(range.second != std::find_if(range.first,range.second,
102 boost::bind(std::equal_to<DataKey>(),
103 boost::bind(&FactoryInfo::key_,
108 throw cms::Exception(
"IdenticalProducts")<<
"Producer has been asked to produce "<<
info.key_.type().name()
109 <<
" \""<<
info.key_.name().value()<<
"\" multiple times.\n Please modify the code.";
virtual ~ESProxyFactoryProducer()
virtual void registerProxies(const eventsetup::EventSetupRecordKey &iRecord, KeyedProxies &aProxyList)
override DataProxyProvider method
void usingRecordWithKey(const EventSetupRecordKey &)
std::multimap< eventsetup::EventSetupRecordKey, eventsetup::FactoryInfo > record2Factories_
virtual void registerFactoryWithKey(const eventsetup::EventSetupRecordKey &iRecord, std::auto_ptr< eventsetup::ProxyFactoryBase > &iFactory, const std::string &iLabel=std::string())
U second(std::pair< T, U > const &p)
virtual void newInterval(const eventsetup::EventSetupRecordKey &iRecordType, const ValidityInterval &iInterval)
overrides DataProxyProvider method
void invalidateProxies(const EventSetupRecordKey &iRecordKey)
std::vector< std::pair< DataKey, boost::shared_ptr< DataProxy > > > KeyedProxies
Container::value_type value_type
std::multimap< EventSetupRecordKey, FactoryInfo > Record2Factories