MUDA
Loading...
Searching...
No Matches
field.h
1
#pragma once
2
#include <memory>
3
#include <muda/tools/host_device_string_cache.h>
4
#include <muda/ext/field/field_entry_layout.h>
5
6
namespace
muda
7
{
8
class
FieldEntryBase;
9
template
<
typename
T, FieldEntryLayout Layout,
int
M,
int
N>
10
class
FieldEntry;
11
class
SubField;
12
class
SubFieldInterface;
13
template
<FieldEntryLayout Layout>
14
class
SubFieldImpl
;
15
16
class
Field
17
{
18
template
<
typename
T>
19
using
U = std::unique_ptr<T>;
20
21
friend
class
SubField
;
22
friend
class
SubFieldInterface
;
23
template
<FieldEntryLayout Layout>
24
friend
class
SubFieldImpl
;
25
friend
class
FieldEntryBase
;
26
27
details::HostDeviceStringCache
m_string_cache;
28
std::vector<U<SubField>> m_sub_fields;
29
std::unordered_map<std::string, size_t> m_name_to_index;
30
31
public
:
32
using
Layout = FieldEntryLayout;
33
Field
();
34
~Field
();
35
36
// sub field count
37
size_t
num_sub_fields()
const
{
return
m_sub_fields.size(); }
38
39
// create or find a subfield
40
SubField
& operator[](std::string_view name);
41
};
42
}
// namespace muda
43
44
#include "details/field.inl"
muda::FieldEntryBase
Definition
field_entry.h:19
muda::Field
Definition
field.h:17
muda::SubField
Definition
sub_field.h:18
muda::SubFieldImpl
Definition
field.h:14
muda::SubFieldInterface
Definition
sub_field_interface.h:15
muda::details::HostDeviceStringCache
Definition
host_device_string_cache.h:15
src
muda
ext
field
field.h
Generated by
1.9.8