3#include <muda/tools/host_device_string_cache.h>
4#include <muda/ext/field/field_build_options.h>
6#include <muda/ext/field/field_entry_type.h>
7#include <muda/ext/field/field_builder.h>
13template <
typename T, FieldEntryLayout Layout,
int M,
int N>
15class SubFieldInterface;
20 using U = std::unique_ptr<T>;
24 U<SubFieldInterface> m_interface;
25 bool m_is_built =
false;
27 std::byte* data_buffer()
const;
28 size_t num_entries()
const;
32 template <
typename FieldEntryT>
33 FieldEntryT* find_entry(std::string_view name)
const;
39 std::string_view name()
const {
return m_name; }
42 void resize(
size_t num_elements);
44 template <FieldEntryLayout Layout>
81 template <FieldEntryLayout Layout>
84 template <
typename T, FieldEntryLayout Layout,
int M,
int N>
87 template <
typename T, FieldEntryLayout Layout,
int M,
int N>
94 bool allow_inplace_shrink()
const;
98#include "details/sub_field.inl"
Definition field_build_options.inl:6
Definition field_builder.h:15
Definition field_entry.h:19
Definition field_entry.h:76
Definition field_entry_layout.h:24
Definition sub_field.h:18
FieldBuilder< FieldEntryLayout::AoS > AoS(const FieldBuildOptions &options={})
The layout is array of structs (determined at compile time)
Definition sub_field.inl:118
FieldBuilder< FieldEntryLayout::AoSoA > AoSoA(uint32_t innermost_array_size=32, const FieldBuildOptions &options={})
The layout is array of structs of arrays (determined at compile time)
Definition sub_field.inl:106
FieldBuilder< FieldEntryLayout::SoA > SoA(const FieldBuildOptions &options={})
The layout is struct of arrays (determined at compile time)
Definition sub_field.inl:113
A light-weight wrapper of cuda device memory. Like std::vector, allow user to resize,...