MUDA
Loading...
Searching...
No Matches
field_entry_viewer_vector.inl
1namespace muda
2{
3template <bool IsConst, typename T, FieldEntryLayout Layout, int N>
4class FieldEntryViewerBase<IsConst, T, Layout, N, 1>
5 : public FieldEntryViewerCore<IsConst, T, Layout, N, 1>
6{
8
9 template <typename U>
10 using auto_const_t = typename Base::template auto_const_t<U>;
11
12 public:
13 using Base::Base;
17
18 using ConstVectorMap = typename Base::ConstMatMap;
19 using ThisVectorMap = typename Base::ThisMatMap;
20
21 MUDA_GENERIC auto as_const() const { return ConstViewer{this->m_core}; }
22 MUDA_GENERIC operator ConstViewer() const { return as_const(); }
23
24 MUDA_GENERIC auto_const_t<T>* data(int i, int comp_j)
25 {
26 return Base::data(i, comp_j);
27 }
28 MUDA_GENERIC const T* data(int i, int comp_j) const
29 {
30 return remove_const(this)->data(i, comp_j);
31 }
32
33 MUDA_GENERIC auto operator()(int i)
34 {
35 return ThisVectorMap{data(i, 0), this->m_stride};
36 }
37 MUDA_GENERIC auto operator()(int i) const
38 {
39 return ConstVectorMap{data(i, 0), this->m_stride};
40 }
41};
42
43template <typename T, FieldEntryLayout Layout, int N>
44class CFieldEntryViewer<T, Layout, N, 1>
45 : public FieldEntryViewerBase<true, T, Layout, N, 1>
46{
48
49 MUDA_VIEWER_COMMON_NAME(CFieldEntryViewer);
50
51 public:
52 using Base::Base;
56
57 MUDA_GENERIC CFieldEntryViewer(const Base& base)
58 : Base(base)
59 {
60 }
61
62 MUDA_GENERIC auto as_const() const { return *this; }
63 MUDA_GENERIC operator ConstViewer() const { return as_const(); }
64
65 using Base::operator();
66};
67
68template <typename T, FieldEntryLayout Layout, int N>
69class FieldEntryViewer<T, Layout, N, 1>
70 : public FieldEntryViewerBase<false, T, Layout, N, 1>
71{
73
74 MUDA_VIEWER_COMMON_NAME(FieldEntryViewer);
75
76 public:
77 using Base::Base;
81
82 MUDA_GENERIC FieldEntryViewer(const Base& base)
83 : Base(base)
84 {
85 }
86
87 MUDA_GENERIC auto as_const() const { return ConstViewer{Base::as_const()}; }
88 MUDA_GENERIC operator ConstViewer() const { return as_const(); }
89
90 using Base::operator();
91};
92} // namespace muda
Definition field_entry_viewer_vector.inl:46
Definition field_entry_viewer_matrix.inl:52
Definition field_entry_viewer_vector.inl:71
Definition field_entry_viewer_vector.inl:6
Definition field_entry_viewer_matrix.inl:5
Definition field_entry_viewer.h:42
Definition field_entry_viewer_matrix.inl:77