MUDA
Loading...
Searching...
No Matches
field_viewer.h
1//#pragma once
2//#include <muda/viewer/viewer_base_accessor.h>
3//#include <muda/ext/field/field_entry_viewer.h>
4//#include <muda/viewer/dense.h>
5//namespace muda
6//{
7//class FieldViewer : public ViewerBase
8//{
9// MUDA_VIEWER_COMMON_NAME(FieldViewer);
10//
11// private:
12// friend class Field;
13// Dense1D<FieldEntryViewerBase> m_entries;
14// MUDA_GENERIC FieldViewer(const Dense1D<FieldEntryViewerBase>& m)
15// : m_entries(m)
16// {
17// }
18//
19// public:
20// template <typename T, FieldEntryLayout Layout, int M, int N>
21// MUDA_DEVICE FieldEntryViewer<T, Layout, M, N> entry(const char* name)
22// {
23// using Viewer = FieldEntryViewer<T, Layout, M, N>;
24//
25// auto strcmp = [] MUDA_DEVICE(const char* a, const char* b) -> bool
26// {
27// while(*a && *b && *a == *b)
28// {
29// a++;
30// b++;
31// }
32// return *a == *b;
33// };
34// for(int i = 0; i < m_entries.total_size(); i++)
35// {
36// auto& e = m_entries(i);
37// if(strcmp(e.name(), name))
38// {
39// MUDA_KERNEL_ASSERT(e.elem_byte_size() == sizeof(T),
40// "FieldViewer[%s:%s]: FieldEntry[%s] Type size mismatching, entry type size=%d, your size=%d",
41// kernel_name(),
42// this->name(),
43// name,
44// e.elem_byte_size(),
45// sizeof(T));
46//#if MUDA_CHECK_ON
47// using Acc = details::ViewerBaseAccessor;
48// Acc::kernel_name(e) = Acc::kernel_name(*this);
49//#endif
50// return (Viewer&)e;
51// }
52// }
53// MUDA_KERNEL_ERROR_WITH_LOCATION("FieldViewer[%s:%s] FieldEntry[%s] not found",
54// kernel_name(),
55// this->name(),
56// name);
57// return Viewer{};
58// }
59//};
60//} // namespace muda