1 #ifndef FWCore_Framework_ESProductHost_h
2 #define FWCore_Framework_ESProductHost_h
76 #include <type_traits>
92 template <
typename Product,
typename... RecordTypes>
95 template <
typename... Args>
102 template <
typename RecordType,
typename ContainingRecordType,
typename FUNC>
104 RecordType
const&
record = containingRecord.template getRecord<RecordType>();
105 unsigned long long cacheIdentifier = record.cacheIdentifier();
106 std::size_t iRecord = index<RecordType>();
107 if (cacheIdentifier !=
cacheIDs_[iRecord]) {
128 template <
typename U>
129 constexpr
static std::size_t
index() {
131 return indexLoop<0, U, RecordTypes...>();
134 template <std::size_t
I,
typename U,
typename TST,
typename... M>
136 if constexpr (std::is_same_v<U, TST>) {
139 static_assert(
I + 1 <
numberOfRecordTypes(),
"unknown record type passed to ESProductHost::index");
static constexpr std::size_t index()
uint32_t T const *__restrict__ uint32_t const *__restrict__ int32_t int Histo::index_type cudaStream_t Func __host__ __device__ V int Func func
void ifRecordChanges(ContainingRecordType const &containingRecord, FUNC func)
static constexpr std::size_t indexLoop()
const std::complex< double > I
std::vector< unsigned long long > cacheIDs_
ESProductHost(Args &&...args)
static constexpr std::size_t numberOfRecordTypes()