File indexing completed on 2024-04-06 12:13:10
0001 #ifndef FWCore_TestProcessor_Run_h
0002 #define FWCore_TestProcessor_Run_h
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022 #include <string>
0023
0024
0025 #include "FWCore/TestProcessor/interface/TestHandle.h"
0026 #include "FWCore/Framework/interface/RunPrincipal.h"
0027 #include "FWCore/Utilities/interface/TypeID.h"
0028
0029
0030
0031 namespace edm {
0032
0033 namespace test {
0034
0035 class Run {
0036 public:
0037 Run(std::shared_ptr<RunPrincipal const> iPrincipal, std::string iModuleLabel, std::string iProcessName);
0038
0039
0040 template <typename T>
0041 TestHandle<T> get() const {
0042 static const std::string s_null;
0043 return get<T>(s_null);
0044 }
0045
0046 template <typename T>
0047 TestHandle<T> get(std::string const& iInstanceLabel) const {
0048 auto h = principal_->getByLabel(
0049 edm::PRODUCT_TYPE, edm::TypeID(typeid(T)), label_, iInstanceLabel, processName_, nullptr, nullptr, nullptr);
0050 if (h.failedToGet()) {
0051 return TestHandle<T>(std::move(h.whyFailedFactory()));
0052 }
0053 void const* basicWrapper = h.wrapper();
0054 assert(basicWrapper);
0055 Wrapper<T> const* wrapper = static_cast<Wrapper<T> const*>(basicWrapper);
0056 return TestHandle<T>(wrapper->product());
0057 }
0058
0059
0060
0061
0062
0063 private:
0064
0065 std::shared_ptr<RunPrincipal const> principal_;
0066 std::string label_;
0067 std::string processName_;
0068 };
0069 }
0070 }
0071
0072 #endif