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
6namespace muda
7{
8class FieldEntryBase;
9template <typename T, FieldEntryLayout Layout, int M, int N>
10class FieldEntry;
11class SubField;
12class SubFieldInterface;
13template <FieldEntryLayout Layout>
15
16class 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"
Definition field_entry.h:19
Definition field.h:17
Definition sub_field.h:18
Definition field.h:14
Definition sub_field_interface.h:15
Definition host_device_string_cache.h:15