|
|
Go to the documentation of this file. 1 #ifndef FWCore_SOA_RowView_h
2 #define FWCore_SOA_RowView_h
56 template <
typename... Args>
66 return *(static_cast<typename U::type const*>(columnAddress<U>()));
75 template <
typename... Args>
85 return *(static_cast<typename U::type*>(columnAddress<U>()));
89 return *(static_cast<typename U::type const*>(columnAddress<U>()));
102 template <
typename U>
107 template <
typename O>
109 copyValueFromImpl<0>(iObj);
111 template <
typename O,
typename... CArgs>
113 copyValuesUsingFiller<0>(iFiller, iObj,
m_values);
117 template <
int I,
typename O>
119 if constexpr (
I <
sizeof...(Args)) {
122 auto ptr = static_cast<Type*>(
m_values[
I]);
123 *ptr = value_for_column(iObj, static_cast<ColumnType*>(
nullptr));
124 copyValueFromImpl<I + 1>(iObj);
128 template <
int I,
typename E,
typename F>
130 if constexpr (
I <
sizeof...(Args)) {
131 using Layout = std::tuple<Args...>;
134 Type* pElement = static_cast<Type*>(oValues[
I]);
135 *pElement = iFiller.value(iItem, static_cast<ColumnType*>(
nullptr));
136 copyValuesUsingFiller<I + 1>(iFiller, iItem, oValues);
void copyValueFromImpl(O const &iObj)
void copyValuesFrom(O const &iObj)
static void copyValuesUsingFiller(F &iFiller, E const &iItem, std::array< void *, sizeof...(Args)> &oValues)
std::array< void const *, sizeof...(Args)> m_values
static uInt32 F(BLOWFISH_CTX *ctx, uInt32 x)
const std::complex< double > I
void const * columnAddress() const
std::tuple< Args... > Layout
void copyValuesFrom(O const &iObj, ColumnFillers< CArgs... > iFiller)
void const * columnAddress() const
std::tuple< Args... > Layout
MutableRowView< Args... > & set(typename U::type const &iValue)
U::type const & get() const
U::type const & get() const
MutableRowView(std::array< void *, sizeof...(Args)> &iValues)
std::array< void *, sizeof...(Args)> m_values
RowView(std::array< void const *, sizeof...(Args)> const &iValues)