1 #ifndef FWCore_SOA_TableExaminer_h 2 #define FWCore_SOA_TableExaminer_h 46 size_t size() const override final {
return m_table->size(); }
48 void const*
columnAddress(
unsigned int iColumnIndex)
const override final {
49 return m_table->columnAddressByIndex(iColumnIndex);
52 std::vector<std::type_index>
columnTypes() const override final {
53 std::vector<std::type_index> returnValue;
55 using Layout =
typename T::Layout;
56 columnTypesImpl<0, T::kNColumns>(returnValue,
static_cast<std::true_type*
>(
nullptr));
60 std::vector<std::pair<char const*, std::type_index>>
62 std::vector<std::pair<char const*, std::type_index>> returnValue;
64 using Layout =
typename T::Layout;
65 columnDescImpl<0, T::kNColumns>(returnValue,
static_cast<std::true_type*
>(
nullptr));
69 const std::type_info*
typeID() const override final {
74 template <
int I,
int S>
76 using Layout =
typename T::Layout;
78 columnTypesImpl<I+1, S>(iV,
79 static_cast<typename std::conditional<
I+1 !=
S,
81 std::false_type
>::type*>(
nullptr));
84 template <
int I,
int S>
87 template <
int I,
int S>
88 void columnDescImpl(std::vector<std::pair<char const*, std::type_index>>& iV,
89 std::true_type*)
const {
90 using Layout =
typename T::Layout;
93 columnDescImpl<I+1, S>(iV,
94 static_cast<typename std::conditional<
I+1 !=
S,
96 std::false_type
>::type*>(
nullptr));
99 template <
int I,
int S>
101 std::false_type*)
const {};
void columnDescImpl(std::vector< std::pair< char const *, std::type_index >> &, std::false_type *) const
size_t size() const override final
std::vector< std::pair< char const *, std::type_index > > columnDescriptions() const override final
void const * columnAddress(unsigned int iColumnIndex) const override final
TableExaminer< T > & operator=(const TableExaminer< T > &)=default
~TableExaminer() override
void columnTypesImpl(std::vector< std::type_index > &iV, std::true_type *) const
const std::complex< double > I
TableExaminer(T const *iTable)
std::vector< std::type_index > columnTypes() const override final
void columnDescImpl(std::vector< std::pair< char const *, std::type_index >> &iV, std::true_type *) const
const std::type_info * typeID() const override final
void columnTypesImpl(std::vector< std::type_index > &, std::false_type *) const
static const unsigned int kNColumns