ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
PhysicsAnalysis
Columnar
ColumnarCore
ColumnarCore
VectorConvertView.h
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3
*/
4
6
7
8
#ifndef COLUMNAR_CORE_VECTOR_CONVERT_VIEW_H
9
#define COLUMNAR_CORE_VECTOR_CONVERT_VIEW_H
10
11
#include <cstddef>
//std::size_t
12
#include <stdexcept>
//std::out_of_range
13
#include <utility>
//for std::move
14
15
namespace
columnar
16
{
17
namespace
detail
18
{
30
31
33
template
<
typename
FunctionType,
typename
IteratorType>
34
class
VectorConvertIterator
final
35
{
38
public
:
39
40
VectorConvertIterator
(
const
FunctionType& val_function, IteratorType&& val_iterator)
41
:
m_function
(val_function),
m_iterator
(
std
::move (val_iterator))
42
{}
43
44
[[nodiscard]]
bool
operator ==
(
const
VectorConvertIterator
& that)
const
noexcept
{
45
return
m_iterator
== that.m_iterator;}
46
[[nodiscard]]
bool
operator !=
(
const
VectorConvertIterator
& that)
const
noexcept
{
47
return
m_iterator
!= that.m_iterator;}
48
49
VectorConvertIterator
&
operator ++
() noexcept {
50
++
m_iterator
;
return
*
this
;}
51
52
[[nodiscard]]
decltype
(
auto
)
operator
* ()
const
noexcept
{
53
return
m_function
(*
m_iterator
);}
54
57
private
:
58
59
[[no_unique_address]] FunctionType
m_function
;
60
IteratorType
m_iterator
;
61
};
62
template
<
typename
FunctionType,
typename
IteratorType>
VectorConvertIterator
(FunctionType&&,IteratorType&&) ->
VectorConvertIterator<std::decay_t<FunctionType>
,std::decay_t<IteratorType>>;
63
64
65
67
template
<
typename
FunctionType,
typename
ViewType>
68
class
VectorConvertView
final
69
{
72
public
:
73
74
explicit
VectorConvertView
(
const
FunctionType& val_function,
const
ViewType
& val_view) noexcept
75
:
m_function
(val_function),
m_view
(val_view)
76
{}
77
78
[[nodiscard]] std::size_t
size
()
const
noexcept
79
{
80
return
m_view
.size();
81
}
82
83
[[nodiscard]]
decltype
(
auto
)
operator
[] (std::size_t
index
)
const
84
{
85
if
(
index
>=
m_view
.size()) [[
unlikely
]]
86
throw
std::out_of_range (
"VectorConvertView::operator[]: index out of range"
);
87
return
m_function
(
m_view
[
index
]);
88
}
89
90
[[nodiscard]]
auto
begin
()
const
noexcept
91
{
92
return
VectorConvertIterator
(
m_function
,
m_view
.begin());
93
}
94
95
[[nodiscard]]
auto
end
()
const
noexcept
96
{
97
return
VectorConvertIterator
(
m_function
,
m_view
.end());
98
}
99
102
private
:
103
104
[[no_unique_address]] FunctionType
m_function
;
105
ViewType
m_view
;
106
};
107
template
<
typename
FunctionType,
typename
ViewType>
VectorConvertView
(FunctionType&&,
ViewType
&&) ->
VectorConvertView<std::decay_t<FunctionType>
,std::decay_t<ViewType>>;
108
}
109
}
110
111
#endif
ViewType
ViewType
Definition
RPCdef.h:8
columnar::detail::VectorConvertIterator
an iterator that does converts members using a passed in function
Definition
VectorConvertView.h:35
columnar::detail::VectorConvertIterator::m_function
FunctionType m_function
Definition
VectorConvertView.h:59
columnar::detail::VectorConvertIterator::operator==
bool operator==(const VectorConvertIterator &that) const noexcept
Definition
VectorConvertView.h:44
columnar::detail::VectorConvertIterator::operator++
VectorConvertIterator & operator++() noexcept
Definition
VectorConvertView.h:49
columnar::detail::VectorConvertIterator::m_iterator
IteratorType m_iterator
Definition
VectorConvertView.h:60
columnar::detail::VectorConvertIterator::VectorConvertIterator
VectorConvertIterator(const FunctionType &val_function, IteratorType &&val_iterator)
Definition
VectorConvertView.h:40
columnar::detail::VectorConvertIterator::operator!=
bool operator!=(const VectorConvertIterator &that) const noexcept
Definition
VectorConvertView.h:46
columnar::detail::VectorConvertView
a range view that does converts members using a passed in function
Definition
VectorConvertView.h:69
columnar::detail::VectorConvertView::begin
auto begin() const noexcept
Definition
VectorConvertView.h:90
columnar::detail::VectorConvertView::end
auto end() const noexcept
Definition
VectorConvertView.h:95
columnar::detail::VectorConvertView::m_function
FunctionType m_function
Definition
VectorConvertView.h:104
columnar::detail::VectorConvertView::size
std::size_t size() const noexcept
Definition
VectorConvertView.h:78
columnar::detail::VectorConvertView::VectorConvertView
VectorConvertView(const FunctionType &val_function, const ViewType &val_view) noexcept
Definition
VectorConvertView.h:74
columnar::detail::VectorConvertView::m_view
ViewType m_view
Definition
VectorConvertView.h:105
const
columnar::detail
Container id definitions for the columnar infrastructure.
Definition
ColumnAccessor.h:97
columnar::detail::VectorConvertIterator
VectorConvertIterator(FunctionType &&, IteratorType &&) -> VectorConvertIterator< std::decay_t< FunctionType >, std::decay_t< IteratorType > >
columnar::detail::VectorConvertView
VectorConvertView(FunctionType &&, ViewType &&) -> VectorConvertView< std::decay_t< FunctionType >, std::decay_t< ViewType > >
columnar
Definition
ClusterDef.h:16
index
Definition
index.py:1
std
STL namespace.
unlikely
#define unlikely(x)
Definition
pythonic_coracool.cxx:9
Generated on
for ATLAS Offline Software by
1.17.0