ATLAS Offline Software
Loading...
Searching...
No Matches
AccessorTuple.icc
Go to the documentation of this file.
1// Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
2#ifndef ATHDEVICEUTILS_DETAILS_ACCESSORTUPLE_ICC
3#define ATHDEVICEUTILS_DETAILS_ACCESSORTUPLE_ICC
4
5// Local include(s).
6#include "AthDeviceUtils/details/AccessorType.h"
7
8namespace AthDevice::Details {
9
10template <typename... VARTYPES>
11template <Concepts::SoAColumn... COLUMNS>
12auto AccessorTuple<vecmem::edm::schema<VARTYPES...>>::get_const(
13 const std::tuple<COLUMNS...>& columns) {
14
15 return std::apply(
16 [](const auto&... column) {
17 return std::make_tuple(
18 ConstAccessorType_t<
19 std::tuple_element_t<column.index, std::tuple<VARTYPES...>>>(
20 std::string{column.name})...);
21 },
22 columns);
23}
24
25template <typename... VARTYPES>
26template <Concepts::SoAColumn... COLUMNS>
27auto AccessorTuple<vecmem::edm::schema<VARTYPES...>>::get_nc(
28 const std::tuple<COLUMNS...>& columns) {
29
30 return std::apply(
31 [](const auto&... column) {
32 return std::make_tuple(
33 AccessorType_t<
34 std::tuple_element_t<column.index, std::tuple<VARTYPES...>>>(
35 std::string{column.name})...);
36 },
37 columns);
38}
39
40} // namespace AthDevice::Details
41
42#endif // ATHDEVICEUTILS_DETAILS_ACCESSORTUPLE_ICC