8#ifndef COLUMNAR_CORE_COLUMN_ACCESSOR_H
9#define COLUMNAR_CORE_COLUMN_ACCESSOR_H
180 template<
typename CT,ColumnarMode CM>
181 requires ((std::is_integral_v<CT> || std::is_floating_point_v<CT>) && !std::is_same_v<CT,bool>)
231 template<ContainerIdConcept CI,
typename CT,ColumnAccessMode CAM,
typename CM>
class AccessorTemplate;
243 template<
typename CT,ColumnarMode CM>
264 static_assert (!std::is_const_v<CT>,
"CT must not be const");
265 static_assert (!std::is_const_v<UT>,
"UT must not be const");
270 template<
typename UT,
typename CT,ColumnarMode CM>
282 return [] (
const auto& value) {
return static_cast<UT
>(value);};
298 template<ContainerIdConcept CI,
typename CT,ColumnAccessMode CAM,
typename CM>
301 accessor = AccessorTemplate<CI,CT,CAM,CM> (columnBase, name, std::move (options));
Helper class to provide constant type-safe access to aux data.
Helper class to provide type-safe access to aux data.
Helper class to provide type-safe access to aux data.
Helper class to provide type-safe access to aux data.
Helper class to provide constant type-safe access to aux data.
Helper class to provide type-safe access to aux data.
the raw column accessor template class
the backend implementation for AccessorTemplate
static constexpr bool isDefined
static constexpr bool viewIsReference
static void updateColumnInfo(ColumnInfo &)
static constexpr bool isDefined
static constexpr bool hasSetter
static constexpr bool hasSetter
static void updateColumnInfo(ColumnInfo &)
static constexpr bool viewIsReference
static constexpr bool isDefined
static auto makeViewer(auto &&)
static constexpr bool viewIsReference
static constexpr bool hasSetter
static constexpr bool isDefined
static void updateColumnInfo(ColumnInfo &)
a help implementation of AccessorTemplate that handles type conversions
static constexpr bool isDefined
AccessorTemplate< CI, CT, ColumnAccessMode::input, CM > ColumnAccessor
AccessorTemplate< CI, CT, ColumnAccessMode::output, CM > ColumnDecorator
ColumnAccessMode
an enum for the different access modes for a column
@ update
an updateable column
AccessorTemplate< CI, CT, ColumnAccessMode::update, CM > ColumnUpdater
void resetAccessor(AccessorTemplate< CI, CT, CAM, CM > &accessor, ColumnarTool< CM > &columnBase, const std::string &name, ColumnAccessorOptions &&options={})
reset a column accessor to point to a new column
SG::Decorator< T > XAODAccessor
SG::Accessor< T > XAODAccessor
std::string replacesColumn
whether this replaces another column
std::vector< std::string > internalLinkTargetNames
for link columns: the name(s) of the container(s) we link to
bool addMTDependency
whether to add data dependencies in AthenaMT
bool isOptional
whether this column is optional
ColumnInfo makeColumnInfo() const
a struct that contains meta-information about each column that's needed to interface the column with ...
a type wrapper to force AccessorTemplate to treat the type as native
a type wrapper to make AccessorTemplate convert the underlying column type to a different type