68 using ValueType = DataType;
69 using AccessorReturnType = DataViewSetter<DataType>;
73 explicit ARCCORE_HOST_DEVICE DataViewSetter(DataType* ptr)
76 ARCCORE_HOST_DEVICE DataViewSetter(
const DataViewSetter<DataType>& v)
79 ARCCORE_HOST_DEVICE DataViewSetter<DataType>&
80 operator=(
const DataType& v)
85 ARCCORE_HOST_DEVICE DataViewSetter<DataType>&
86 operator=(
const DataViewSetter<DataType>& v)
94 static ARCCORE_HOST_DEVICE AccessorReturnType build(DataType* ptr)
96 return AccessorReturnType(ptr);
103 ARCCORE_HOST_DEVICE DataViewSetter<DataType>&
104 operator+=(
const DataType& v)
106 *m_ptr = (*m_ptr) + v;
109 ARCCORE_HOST_DEVICE DataViewSetter<DataType>&
110 operator+=(
const DataViewSetter<DataType>& v)
112 *m_ptr = (*m_ptr) + *(v.m_ptr);
117 ARCCORE_HOST_DEVICE DataViewSetter<DataType>&
118 operator-=(
const DataType& v)
120 *m_ptr = (*m_ptr) - v;
123 ARCCORE_HOST_DEVICE DataViewSetter<DataType>&
124 operator-=(
const DataViewSetter<DataType>& v)
126 *m_ptr = (*m_ptr) - *(v.m_ptr);
131 ARCCORE_HOST_DEVICE DataViewSetter<DataType>&
132 operator*=(
const DataType& v)
134 *m_ptr = (*m_ptr) * v;
137 ARCCORE_HOST_DEVICE DataViewSetter<DataType>&
138 operator*=(
const DataViewSetter<DataType>& v)
140 *m_ptr = (*m_ptr) * *(v.m_ptr);
145 ARCCORE_HOST_DEVICE DataViewSetter<DataType>&
146 operator/=(
const DataType& v)
148 *m_ptr = (*m_ptr) / v;
151 ARCCORE_HOST_DEVICE DataViewSetter<DataType>&
152 operator/=(
const DataViewSetter<DataType>& v)
154 *m_ptr = (*m_ptr) / *(v.m_ptr);
160 template <typename X = DataType, typename = std::enable_if_t<DataTypeTraitsT<X>::HasComponentX()>>
165 template <typename X = DataType, typename = std::enable_if_t<DataTypeTraitsT<X>::HasComponentY()>>
170 template <typename X = DataType, typename = std::enable_if_t<DataTypeTraitsT<X>::HasComponentZ()>>
176 template <typename X = DataType, typename = std::enable_if_t<DataTypeTraitsT<X>::HasComponentXX()>>
177 ARCCORE_HOST_DEVICE
void setXX(
Real value)
181 template <typename X = DataType, typename = std::enable_if_t<DataTypeTraitsT<X>::HasComponentYX()>>
182 ARCCORE_HOST_DEVICE
void setYX(
Real value)
186 template <typename X = DataType, typename = std::enable_if_t<DataTypeTraitsT<X>::HasComponentZX()>>
187 ARCCORE_HOST_DEVICE
void setZX(
Real value)
192 template <typename X = DataType, typename = std::enable_if_t<DataTypeTraitsT<X>::HasComponentXY()>>
193 ARCCORE_HOST_DEVICE
void setXY(
Real value)
197 template <typename X = DataType, typename = std::enable_if_t<DataTypeTraitsT<X>::HasComponentYY()>>
198 ARCCORE_HOST_DEVICE
void setYY(
Real value)
202 template <typename X = DataType, typename = std::enable_if_t<DataTypeTraitsT<X>::HasComponentZY()>>
203 ARCCORE_HOST_DEVICE
void setZY(
Real value)
208 template <typename X = DataType, typename = std::enable_if_t<DataTypeTraitsT<X>::HasComponentXZ()>>
209 ARCCORE_HOST_DEVICE
void setXZ(
Real value)
213 template <typename X = DataType, typename = std::enable_if_t<DataTypeTraitsT<X>::HasComponentYZ()>>
214 ARCCORE_HOST_DEVICE
void setYZ(
Real value)
218 template <typename X = DataType, typename = std::enable_if_t<DataTypeTraitsT<X>::HasComponentZZ()>>
219 ARCCORE_HOST_DEVICE
void setZZ(
Real value)
223 template <typename X = DataType, typename = std::enable_if_t<DataTypeTraitsT<X>::HasSubscriptOperator()>>
226 return DataViewSetter<typename DataTypeTraitsT<X>::SubscriptType>(&m_ptr->operator[](index));
243class DataViewGetterSetter
244:
public DataViewSetter<DataType>
246 using BaseType = DataViewSetter<DataType>;
247 using BaseType::m_ptr;
252 using ValueType = DataType;
253 using AccessorReturnType = DataViewGetterSetter<DataType>;
257 explicit ARCCORE_HOST_DEVICE DataViewGetterSetter(DataType* ptr)
260 ARCCORE_HOST_DEVICE DataViewGetterSetter(
const DataViewGetterSetter& v)
263 ARCCORE_HOST_DEVICE
operator DataType()
const
267 ARCCORE_HOST_DEVICE DataViewSetter<DataType>&
268 operator=(
const DataViewGetterSetter<DataType>& v)
270 BaseType::operator=(v);
273 ARCCORE_HOST_DEVICE DataViewSetter<DataType>&
274 operator=(
const DataType& v)
276 BaseType::operator=(v);
279 static ARCCORE_HOST_DEVICE AccessorReturnType build(DataType* ptr)
281 return AccessorReturnType(ptr);
284 template <typename X = DataType, typename = std::enable_if_t<DataTypeTraitsT<X>::HasSubscriptOperator()>>
287 return DataViewGetterSetter<typename DataTypeTraitsT<X>::SubscriptType>(&m_ptr->operator[](index));
290 template <
typename X = DataType>
constexpr ARCCORE_HOST_DEVICE
auto
291 operator()(
Int32 i0) -> DataViewGetterSetter<typename DataTypeTraitsT<X>::FunctionCall1ReturnType>
293 return DataViewGetterSetter<typename DataTypeTraitsT<X>::FunctionCall1ReturnType>(&m_ptr->operator()(i0));
296 template <
typename X = DataType>
constexpr ARCCORE_HOST_DEVICE
auto
297 operator()(
Int32 i0,
Int32 i1) -> DataViewGetterSetter<typename DataTypeTraitsT<X>::FunctionCall2ReturnType>
299 return DataViewGetterSetter<typename DataTypeTraitsT<X>::FunctionCall2ReturnType>(&m_ptr->operator()(i0, i1));
305 constexpr ARCCORE_HOST_DEVICE DataType* _address()
const {
return m_ptr; }