3template <
bool IsConst,
typename T, FieldEntryLayout Layout>
9 using auto_const_t =
typename Base::template auto_const_t<U>;
19 using ThisViewer = std::conditional_t<IsConst, ConstViewer, NonConstViewer>;
20 using ElementType = T;
22 MUDA_GENERIC
auto as_const()
const
24 return ConstView{this->m_core, Base::offset(), Base::size()};
26 MUDA_GENERIC
operator ConstView()
const {
return as_const(); }
28 MUDA_GENERIC auto_const_t<T>* data(
int i) {
return Base::data(i); }
29 MUDA_GENERIC
const T* data(
int i)
const
31 return remove_const(
this)->data(i);
34 MUDA_GENERIC
auto subview(
int offset)
const
36 return ConstView{this->m_core, this->m_offset + offset, this->m_size - offset};
39 MUDA_GENERIC
auto subview(
int offset,
int size)
const
41 return ConstView{this->m_core, this->m_offset + offset, size};
44 MUDA_GENERIC
auto subview(
int offset)
46 return ThisView{this->m_core, this->m_offset + offset, this->m_size - offset};
49 MUDA_GENERIC
auto subview(
int offset,
int size)
51 return ThisView{this->m_core, this->m_offset + offset, size};
62 using iterator_category = std::random_access_iterator_tag;
63 using difference_type = size_t;
65 MUDA_GENERIC
ThisView operator+(
int i)
67 return ThisView{this->m_core, this->m_offset + i, this->m_size - i,
typename Base::AsIterator{}};
69 MUDA_GENERIC
ConstView operator+(
int i)
const
71 return remove_const(*this).operator+(i).as_const();
73 MUDA_GENERIC reference operator*() {
return *data(0); }
74 MUDA_GENERIC auto_const_t<T>& operator[](
int i) {
return *data(i); }
75 MUDA_GENERIC
const T& operator[](
int i)
const {
return *data(i); }
78template <
typename T, FieldEntryLayout Layout>
89 using ElementType =
typename Base::ElementType;
97 MUDA_GENERIC
auto as_const()
const {
return *
this; }
98 MUDA_GENERIC
operator ConstView()
const {
return as_const(); }
100 MUDA_GENERIC
auto subview(
int offset)
const
105 MUDA_GENERIC
auto subview(
int offset,
int size)
const
107 return ConstView{Base::subview(offset, size)};
110 MUDA_GENERIC
auto subview(
int offset)
112 return ThisView{Base::subview(offset)};
115 MUDA_GENERIC
auto subview(
int offset,
int size)
117 return ThisView{Base::subview(offset, size)};
124template <
typename T, FieldEntryLayout Layout>
135 using ElementType =
typename Base::ElementType;
136 using value_type = T;
143 MUDA_GENERIC
auto as_const()
const {
return ConstView{Base::as_const()}; }
144 MUDA_GENERIC
operator ConstView()
const {
return as_const(); }
146 MUDA_GENERIC
auto subview(
int offset)
const
151 MUDA_GENERIC
auto subview(
int offset,
int size)
const
153 return ConstView{Base::subview(offset, size)};
156 MUDA_GENERIC
auto subview(
int offset)
158 return ThisView{Base::subview(offset)};
161 MUDA_GENERIC
auto subview(
int offset,
int size)
163 return ThisView{Base::subview(offset, size)};
166 template <FieldEntryLayout SrcLayout>
170 MUDA_HOST
void copy_to(
BufferView<T> dst)
const { as_const().copy_to(dst); }
172 MUDA_HOST
void fill(
const T& value);
176#include <muda/ext/field/field_entry_launch.h>
180template <
typename T, FieldEntryLayout Layout>
181template <FieldEntryLayout SrcLayout>
182MUDA_HOST
void FieldEntryView<T, Layout, 1, 1>::copy_from(CFieldEntryView<T, SrcLayout, 1, 1> src)
189template <
typename T, FieldEntryLayout Layout>
190MUDA_HOST
void FieldEntryView<T, Layout, 1, 1>::copy_from(CBufferView<T> src)
197template <
typename T, FieldEntryLayout Layout>
198MUDA_HOST
void CFieldEntryView<T, Layout, 1, 1>::copy_to(BufferView<T> dst)
const
205template <
typename T, FieldEntryLayout Layout>
206MUDA_HOST
void FieldEntryView<T, Layout, 1, 1>::fill(
const T& value)
Definition field_entry_view_scalar.inl:81
Definition field_entry_view_matrix.inl:110
Definition field_entry_viewer_scalar.inl:34
Definition field_entry_viewer_matrix.inl:52
Definition field_entry_view_scalar.inl:127
Definition field_entry_view_scalar.inl:6
Definition field_entry_view_matrix.inl:5
Definition field_entry_view.h:16
Definition field_entry_view_matrix.inl:154
Definition field_entry_viewer_scalar.inl:59
Definition field_entry_viewer_matrix.inl:77