8#ifndef COLUMNAR_CORE_VECTOR_COLUMN_H
9#define COLUMNAR_CORE_VECTOR_COLUMN_H
45 static std::span<const ElementType>
convertInput (
const std::vector<ElementType>& value) {
return std::span<const ElementType> (value);}
56 template<RegularContainerIdConcept CI,
typename CT>
73 myinfo.offsetName = CI::idName;
74 myinfo.isOffset =
true;
75 info.offsetName = std::string (CI::idName) +
"." + name +
".offset";
77 columnarTool.addColumn (info.offsetName, m_offsetData.get(), std::move (myinfo));
78 m_dataData = std::make_unique<ColumnAccessorDataArray> (&m_dataIndex, &m_dataData, &
typeid (ElementType),
ColumnAccessMode::input);
79 columnarTool.addColumn (std::string (CI::idName) +
"." + name +
".data", m_dataData.get(), std::move (info));
102 return std::span<const ElementType> (&
data[offset[
id.getIndex()]], offset[
id.getIndex()+1]-offset[
id.getIndex()]);
108 return data !=
nullptr;
131 template<ContainerIdConcept CI,
typename CT,
typename CM>
142 : m_accessor(columnarTool,name,
std::move(
ColumnTypeTraits<CT,CM>::updateColumnInfo(columnarTool, info)))
char data[hepevt_bytes_allocation_ATLAS]
static constexpr ColumnAccessMode CAM
AccessorTemplate(AccessorTemplate &&that)
bool isAvailable(ObjectId< CI, CM > id) const noexcept
std::unique_ptr< ColumnAccessorDataArray > m_offsetData
std::unique_ptr< ColumnAccessorDataArray > m_dataData
AccessorTemplate(ColumnarTool< CM > &columnarTool, const std::string &name, ColumnInfo &&info={})
AccessorTemplate()=default
typename ColumnTypeTraits< CT, CM >::ColumnType ElementType
a class representing a single object (electron, muons, etc.)
a range view that does converts members using a passed in function
VectorConvertView(FunctionType &&, ViewType &&) -> VectorConvertView< std::remove_cv_t< FunctionType >, std::remove_cv_t< ViewType > >
AccessorTemplate< CI, CT, ColumnAccessMode::input, CM > ColumnAccessor
void moveAccessor(unsigned &dataIndex, std::unique_ptr< ColumnAccessorDataArray > &accessorData, unsigned &sourceIndex, std::unique_ptr< ColumnAccessorDataArray > &sourceData)
ColumnAccessMode
an enum for the different access modes for a column
std::size_t ColumnarOffsetType
the type used for the size and offsets in the columnar data
a struct that contains meta-information about each column that's needed to interface the column with ...
typename ColumnTypeTraits< CT, CM >::ColumnType ElementType
static constexpr bool isNativeType
static std::span< const ElementType > convertInput(const std::vector< ElementType > &value)
std::span< const ElementType > UserType
static constexpr bool useConvertWithDataInput
NativeColumn< std::vector< ElementType > > ColumnType
static ColumnInfo & updateColumnInfo(ColumnarTool< CM > &, ColumnInfo &info)
static constexpr bool useConvertInput
a trait class to provide information about the column type
static constexpr bool isNativeType
static constexpr bool useConvertWithDataInput
static constexpr bool useConvertInput
a type wrapper to force AccessorTemplate to treat the type as native
std::map< std::string, HypoJetVector >::const_iterator CI