00001 #ifndef FWCore_Framework_DelayedReader_h 00002 #define FWCore_Framework_DelayedReader_h 00003 00004 /*---------------------------------------------------------------------- 00005 00006 DelayedReader: The abstract interface through which the EventPrincipal 00007 uses input sources to retrieve EDProducts from external storage. 00008 00009 ----------------------------------------------------------------------*/ 00010 00011 #include <memory> 00012 #include "boost/shared_ptr.hpp" 00013 #include "DataFormats/Common/interface/EDProduct.h" 00014 00015 namespace edm { 00016 class BranchKey; 00017 class EDProductGetter; 00018 class DelayedReader { 00019 public: 00020 virtual ~DelayedReader(); 00021 std::auto_ptr<EDProduct> getProduct(BranchKey const& k, EDProductGetter const* ep) { 00022 return getProduct_(k, ep); 00023 } 00024 void mergeReaders(boost::shared_ptr<DelayedReader> other) {mergeReaders_(other);} 00025 private: 00026 virtual std::auto_ptr<EDProduct> getProduct_(BranchKey const& k, EDProductGetter const* ep) const = 0; 00027 virtual void mergeReaders_(boost::shared_ptr<DelayedReader>) {} 00028 }; 00029 } 00030 00031 #endif