10#include "vecmem/edm/details/proxy_traits.hpp"
11#include "vecmem/edm/schema.hpp"
12#include "vecmem/utils/tuple.hpp"
13#include "vecmem/utils/types.hpp"
19template <
typename T, details::proxy_domain PDOMAIN,
20 details::proxy_access PACCESS, details::proxy_type PTYPE>
33 details::proxy_access
PACCESS, details::proxy_type
PTYPE>
40 static constexpr details::proxy_domain proxy_domain =
PDOMAIN;
42 static constexpr details::proxy_access access_type =
PACCESS;
44 static constexpr details::proxy_type proxy_type =
PTYPE;
47 VARTYPES, proxy_domain, access_type, proxy_type>::type...>;
53 template <details::proxy_type
OPTYPE = proxy_type,
54 std::enable_if_t<
OPTYPE == details::proxy_type::standalone,
56 VECMEM_HOST_AND_DEVICE
proxy();
64 template <
typename PARENT>
66 typename PARENT::size_type index);
74 template <
typename PARENT>
76 typename PARENT::size_type index);
94 VECMEM_HOST_AND_DEVICE
proxy(
104 VECMEM_HOST_AND_DEVICE
proxy(
106 proxy_type>::type...
data);
114 VECMEM_HOST_AND_DEVICE
141 VECMEM_HOST_AND_DEVICE
147 VECMEM_HOST_AND_DEVICE
158 VECMEM_HOST_AND_DEVICE
161 VECMEM_HOST_AND_DEVICE
176#include "vecmem/edm/impl/proxy.ipp"
An allocator class that wraps a memory resource.
Definition allocator.hpp:37
Technical base type for data<schema<VARTYPES...>>
Definition data.hpp:25
proxy(const proxy &)=default
Default copy constructor.
proxy(proxy &&) noexcept=default
Default move constructor.
Technical base type for proxy<schema<VARTYPES...>,PDOMAIN,PACCESS,PTYPE>
Definition proxy.hpp:21
Main namespace for the vecmem classes/functions.
Definition atomic_ref.hpp:16
VECMEM_HOST_AND_DEVICE constexpr const auto & get(const tuple< Ts... > &t) noexcept
Get a constant element out of a tuple.
Definition tuple.ipp:58
Technical base class for the proxy_var_type traits.
Definition proxy_traits.hpp:57
Meta type describing the "schema" of an SoA container.
Definition schema.hpp:46