2 #include <muda/viewer/viewer_base.h> 6 template <
bool IsConst,
typename T>
19 using auto_const_t =
typename Base::template auto_const_t<U>;
20 auto_const_t<T>* m_data;
27 MUDA_GENERIC
explicit DenseViewerBase(auto_const_t<T>* p) MUDA_NOEXCEPT : m_data(p)
31 MUDA_GENERIC
auto as_const()
const MUDA_NOEXCEPT
36 MUDA_GENERIC
operator ConstViewer()
const MUDA_NOEXCEPT
41 MUDA_GENERIC auto_const_t<T>& operator*() MUDA_NOEXCEPT
47 MUDA_GENERIC auto_const_t<T>* operator->() MUDA_NOEXCEPT
53 MUDA_GENERIC auto_const_t<T>* data() MUDA_NOEXCEPT {
return m_data; }
55 MUDA_GENERIC
const T& operator*()
const MUDA_NOEXCEPT
57 return remove_const(*this).operator*();
60 MUDA_GENERIC
const T* operator->()
const MUDA_NOEXCEPT
62 return remove_const(*this).operator->();
65 MUDA_GENERIC
const T* data()
const MUDA_NOEXCEPT {
return m_data; }
67 MUDA_GENERIC
operator const T&()
const MUDA_NOEXCEPT {
return *m_data; }
70 MUDA_INLINE MUDA_GENERIC
void check()
const MUDA_NOEXCEPT
72 if constexpr(DEBUG_VIEWER)
74 MUDA_KERNEL_ASSERT(m_data,
75 "Dense[%s:%s]: m_data is null",
85 MUDA_VIEWER_COMMON_NAME(
Dense);
95 MUDA_GENERIC
Dense(
const Base& base) MUDA_NOEXCEPT :
Base(base) {}
97 MUDA_GENERIC
Dense& operator=(
const T& base) MUDA_NOEXCEPT
100 *this->m_data = base;
104 using Base::operator*;
105 using Base::operator->;
106 using Base::as_const;
109 MUDA_GENERIC
operator T&() MUDA_NOEXCEPT {
return *this->m_data; }
110 MUDA_GENERIC
operator const T&()
const MUDA_NOEXCEPT
112 return *this->m_data;
115 MUDA_GENERIC
operator ConstViewer()
const MUDA_NOEXCEPT
117 return this->as_const();
121 template <
typename T>
125 template <
typename T>
131 template <
typename T>
138 template <
typename T>
139 MUDA_INLINE MUDA_GENERIC
auto make_cdense(
const T* data) MUDA_NOEXCEPT
144 template <
typename T>
145 MUDA_INLINE MUDA_GENERIC
auto make_dense(T* data) MUDA_NOEXCEPT
151 template <
typename T>
152 MUDA_INLINE MUDA_GENERIC
const T& print_convert(
const Dense<T>& v) MUDA_NOEXCEPT
154 return v.operator
const T&();
157 template <
typename T>
158 MUDA_INLINE MUDA_GENERIC
const T& print_convert(
const CDense<T>& v) MUDA_NOEXCEPT
160 return v.operator
const T&();
Definition: type_modifier.h:21
Definition: type_modifier.h:27
Definition: dense_0d.h:83
Definition: viewer_base.h:21