Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2025-01-14 02:38:38

0001 #ifndef FWCore_Framework_ProductResolversFactory_h
0002 #define FWCore_Framework_ProductResolversFactory_h
0003 // -*- C++ -*-
0004 //
0005 // Package:     FWCore/Framework
0006 // Class  :     ProductResolversFactory
0007 //
0008 /**\class edm::ProductResolversFactory ProductResolversFactory.h "ProductResolversFactory.h"
0009 
0010  Description: Creates ProductResolvers
0011 
0012  Usage:
0013     <usage>
0014 
0015 */
0016 //
0017 // Original Author:  Chris Jones
0018 //         Created:  Mon, 30 Dec 2024
0019 //
0020 
0021 // system include files
0022 #include <memory>
0023 #include "DataFormats/Provenance/interface/ProductRegistry.h"
0024 
0025 // user include files
0026 
0027 // forward declarations
0028 namespace edm {
0029 
0030   class ProductResolverBase;
0031   class ProductResolverIndexHelper;
0032 
0033   template <typename F>
0034   concept ProductResolversFactory =
0035       requires(F&& f, std::string const& name, ProductRegistry const& reg) { f(InEvent, name, reg); };
0036 
0037   namespace productResolversFactory {
0038     std::vector<std::shared_ptr<ProductResolverBase>> make(BranchType bt,
0039                                                            std::string_view iProcessName,
0040                                                            ProductRegistry const& iReg,
0041                                                            bool isForPrimaryProcess);
0042     inline std::vector<std::shared_ptr<ProductResolverBase>> makePrimary(BranchType bt,
0043                                                                          std::string_view iProcessName,
0044                                                                          ProductRegistry const& iReg) {
0045       return make(bt, iProcessName, iReg, true);
0046     }
0047     inline std::vector<std::shared_ptr<ProductResolverBase>> makeSubProcess(BranchType bt,
0048                                                                             std::string_view iProcessName,
0049                                                                             ProductRegistry const& iReg) {
0050       return make(bt, iProcessName, iReg, false);
0051     }
0052 
0053   };  // namespace productResolversFactory
0054 }  // namespace edm
0055 
0056 #endif