Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2023-10-25 09:47:58

0001 #ifndef FWCore_TestProcessor_Run_h
0002 #define FWCore_TestProcessor_Run_h
0003 // -*- C++ -*-
0004 //
0005 // Package:     FWCore/TestProcessor
0006 // Class  :     Run
0007 //
0008 /**\class Run Run.h "Run.h"
0009 
0010  Description: [one line class summary]
0011 
0012  Usage:
0013     <usage>
0014 
0015 */
0016 //
0017 // Original Author:  Chris Jones
0018 //         Created:  Mon, 30 Apr 2018 18:51:27 GMT
0019 //
0020 
0021 // system include files
0022 #include <string>
0023 
0024 // user include files
0025 #include "FWCore/TestProcessor/interface/TestHandle.h"
0026 #include "FWCore/Framework/interface/RunPrincipal.h"
0027 #include "FWCore/Utilities/interface/TypeID.h"
0028 
0029 // forward declarations
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       // ---------- const member functions ---------------------
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       // ---------- static member functions --------------------
0060 
0061       // ---------- member functions ---------------------------
0062 
0063     private:
0064       // ---------- member data --------------------------------
0065       std::shared_ptr<RunPrincipal const> principal_;
0066       std::string label_;
0067       std::string processName_;
0068     };
0069   }  // namespace test
0070 }  // namespace edm
0071 
0072 #endif