File indexing completed on 2025-02-14 03:16:29
0001 #ifndef FWCore_Framework_MayConsumeChooserBase_h
0002 #define FWCore_Framework_MayConsumeChooserBase_h
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022 #include "FWCore/Framework/interface/ESTagGetter.h"
0023 #include "FWCore/Framework/interface/DataKey.h"
0024 #include "FWCore/Framework/interface/EventSetupRecordKey.h"
0025 #include "FWCore/Utilities/interface/ESIndices.h"
0026
0027
0028
0029
0030
0031 namespace edm::eventsetup::impl {
0032
0033 class MayConsumeChooserCore {
0034 public:
0035 virtual ~MayConsumeChooserCore() = default;
0036
0037 virtual EventSetupRecordKey recordKey() const noexcept = 0;
0038 virtual TypeTag productType() const noexcept = 0;
0039
0040 void setTagGetter(ESTagGetter iGetter) { getter_ = std::move(iGetter); }
0041
0042 ESTagGetter const& tagGetter() const { return getter_; }
0043
0044 private:
0045 ESTagGetter getter_;
0046 };
0047
0048 template <typename RCD>
0049 class MayConsumeChooserBase : public MayConsumeChooserCore {
0050 public:
0051 MayConsumeChooserBase() = default;
0052 ~MayConsumeChooserBase() override = default;
0053
0054
0055 virtual ESResolverIndex makeChoice(RCD const& iRecord) const = 0;
0056 };
0057 }
0058
0059 #endif