ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
PhysicsAnalysis
Columnar
ColumnarCore
ColumnarCore
StringColumn.h
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3
*/
4
6
7
8
#ifndef COLUMNAR_CORE_STRING_COLUMN_H
9
#define COLUMNAR_CORE_STRING_COLUMN_H
10
11
#include <
ColumnarCore/VectorColumn.h
>
12
13
namespace
columnar
14
{
15
namespace
detail
16
{
17
// in xAOD mode we can do a straightforward conversion from
18
// std::string to std::string_view, as xAODs natively use std::string
19
template
<>
20
class
MemoryAccessor
<
std
::
string
,
ColumnarModeXAOD
> final
21
{
24
public
:
25
26
using
CM
=
ColumnarModeXAOD
;
27
static
constexpr
bool
isDefined
=
true
;
28
static
constexpr
bool
viewIsReference
=
false
;
29
static
constexpr
bool
hasSetter
=
false
;
30
using
MemoryType
= std::string;
31
32
static
void
updateColumnInfo
(
ColumnInfo
&
/*info*/
) {}
33
34
[[nodiscard]]
static
auto
makeViewer
(
void
**)
35
{
36
return
[] (
const
std::string& value) {
return
std::string_view (value);};
37
}
38
};
39
40
41
42
// in Array mode we can do a straightforward conversion from
43
// std::vector<char> to std::string_view, as uproot natively
44
// represents it as a vector of char
45
template
<>
46
class
ContainerFreeAccessor
<
std
::
string
,
ColumnAccessMode::input
,
ColumnarModeArray
> final
47
{
50
public
:
51
52
static
constexpr
ColumnAccessMode
CAM
=
ColumnAccessMode::input
;
53
using
CM
=
ColumnarModeArray
;
54
using
BaseAccessor
=
ContainerFreeAccessor<std::vector<char>
,
CAM
,
CM
>;
55
56
static
constexpr
bool
isDefined
=
true
;
57
static
constexpr
unsigned
internalOffsetColumns
= BaseAccessor::internalOffsetColumns;
58
59
ContainerFreeAccessor
() =
default
;
60
61
ContainerFreeAccessor
(
ColumnarTool<CM>
& columnarTool,
ColumnAccessorOptions
&& options, ColumnAccessorOptionsArray&& optionsArray)
62
:
m_accessor
(columnarTool,
std
::move (options),
std
::move (optionsArray))
63
{}
64
65
auto
operator ()
(
void
** dataArea, std::size_t
index
)
const
noexcept
66
{
67
std::span<const char>
base
=
m_accessor
(dataArea,
index
);
68
return
std::string_view (
base
.data(),
base
.size());
69
}
70
71
auto
operator ()
(
void
** dataArea, std::size_t beginIndex, std::size_t endIndex)
const
noexcept
72
{
73
return
detail::VectorConvertView
([] (std::span<const char>
base
)
noexcept
{
74
return
std::string_view (
base
.data(),
base
.size());},
75
m_accessor
(dataArea, beginIndex, endIndex));
76
}
77
78
bool
isAvailable
(
void
** dataArea)
const
noexcept
79
{
80
return
m_accessor
.isAvailable (dataArea);
81
}
82
85
private
:
86
87
BaseAccessor
m_accessor
;
88
};
89
}
90
}
91
92
#endif
operator()
void operator()(T1)
VectorColumn.h
columnar::ColumnarTool
the base class for all columnar components
Definition
ColumnAccessorDataArray.h:17
columnar::detail::ContainerFreeAccessor< std::string, ColumnAccessMode::input, ColumnarModeArray >::isDefined
static constexpr bool isDefined
Definition
StringColumn.h:56
columnar::detail::ContainerFreeAccessor< std::string, ColumnAccessMode::input, ColumnarModeArray >::CM
ColumnarModeArray CM
Definition
StringColumn.h:53
columnar::detail::ContainerFreeAccessor< std::string, ColumnAccessMode::input, ColumnarModeArray >::CAM
static constexpr ColumnAccessMode CAM
Definition
StringColumn.h:52
columnar::detail::ContainerFreeAccessor< std::string, ColumnAccessMode::input, ColumnarModeArray >::internalOffsetColumns
static constexpr unsigned internalOffsetColumns
Definition
StringColumn.h:57
columnar::detail::ContainerFreeAccessor< std::string, ColumnAccessMode::input, ColumnarModeArray >::m_accessor
BaseAccessor m_accessor
Definition
StringColumn.h:87
columnar::detail::ContainerFreeAccessor< std::string, ColumnAccessMode::input, ColumnarModeArray >::ContainerFreeAccessor
ContainerFreeAccessor(ColumnarTool< CM > &columnarTool, ColumnAccessorOptions &&options, ColumnAccessorOptionsArray &&optionsArray)
Definition
StringColumn.h:61
columnar::detail::ContainerFreeAccessor< std::string, ColumnAccessMode::input, ColumnarModeArray >::BaseAccessor
ContainerFreeAccessor< std::vector< char >, CAM, CM > BaseAccessor
Definition
StringColumn.h:54
columnar::detail::ContainerFreeAccessor< std::string, ColumnAccessMode::input, ColumnarModeArray >::isAvailable
bool isAvailable(void **dataArea) const noexcept
Definition
StringColumn.h:78
columnar::detail::ContainerFreeAccessor< std::string, ColumnAccessMode::input, ColumnarModeArray >::ContainerFreeAccessor
ContainerFreeAccessor()=default
columnar::detail::MemoryAccessor< std::string, ColumnarModeXAOD >::makeViewer
static auto makeViewer(void **)
Definition
StringColumn.h:34
columnar::detail::MemoryAccessor< std::string, ColumnarModeXAOD >::updateColumnInfo
static void updateColumnInfo(ColumnInfo &)
Definition
StringColumn.h:32
columnar::detail::MemoryAccessor< std::string, ColumnarModeXAOD >::viewIsReference
static constexpr bool viewIsReference
Definition
StringColumn.h:28
columnar::detail::MemoryAccessor< std::string, ColumnarModeXAOD >::MemoryType
std::string MemoryType
Definition
StringColumn.h:30
columnar::detail::MemoryAccessor< std::string, ColumnarModeXAOD >::isDefined
static constexpr bool isDefined
Definition
StringColumn.h:27
columnar::detail::MemoryAccessor< std::string, ColumnarModeXAOD >::CM
ColumnarModeXAOD CM
Definition
StringColumn.h:26
columnar::detail::MemoryAccessor< std::string, ColumnarModeXAOD >::hasSetter
static constexpr bool hasSetter
Definition
StringColumn.h:29
columnar::detail::MemoryAccessor
a help implementation of AccessorTemplate that handles type conversions
Definition
ColumnAccessor.h:139
string
STL class.
base
std::string base
Definition
hcg.cxx:83
columnar::detail
Container id definitions for the columnar infrastructure.
Definition
ColumnAccessor.h:97
columnar::detail::VectorConvertView
VectorConvertView(FunctionType &&, ViewType &&) -> VectorConvertView< std::decay_t< FunctionType >, std::decay_t< ViewType > >
columnar
Definition
ClusterDef.h:16
columnar::ColumnAccessMode
ColumnAccessMode
an enum for the different access modes for a column
Definition
ColumnInfo.h:20
columnar::ColumnAccessMode::input
@ input
an input column
Definition
ColumnInfo.h:22
index
Definition
index.py:1
std
STL namespace.
columnar::ColumnAccessorOptions
Definition
ColumnAccessor.h:25
columnar::ColumnInfo
a struct that contains meta-information about each column that's needed to interface the column with ...
Definition
ColumnInfo.h:36
columnar::ColumnarModeArray
Definition
ColumnarCore/ColumnarCore/ColumnarDef.h:45
columnar::ColumnarModeXAOD
Definition
ColumnarCore/ColumnarCore/ColumnarDef.h:18
Generated on
for ATLAS Offline Software by
1.17.0