37class ForceAlignedAccess :
public internal::dense_xpr_base<ForceAlignedAccess<ExpressionType>>::type {
39 typedef typename internal::dense_xpr_base<ForceAlignedAccess>::type Base;
42 EIGEN_DEVICE_FUNC
explicit inline ForceAlignedAccess(
const ExpressionType& matrix) : m_expression(matrix) {}
44 EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
inline Index rows()
const EIGEN_NOEXCEPT {
return m_expression.rows(); }
45 EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
inline Index cols()
const EIGEN_NOEXCEPT {
return m_expression.cols(); }
46 EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
inline Index outerStride()
const EIGEN_NOEXCEPT {
47 return m_expression.outerStride();
49 EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
inline Index innerStride()
const EIGEN_NOEXCEPT {
50 return m_expression.innerStride();
53 EIGEN_DEVICE_FUNC
inline const CoeffReturnType coeff(
Index row,
Index col)
const {
54 return m_expression.coeff(row, col);
57 EIGEN_DEVICE_FUNC
inline Scalar& coeffRef(
Index row,
Index col) {
58 return m_expression.const_cast_derived().coeffRef(row, col);
61 EIGEN_DEVICE_FUNC
inline const CoeffReturnType coeff(
Index index)
const {
return m_expression.coeff(index); }
63 EIGEN_DEVICE_FUNC
inline Scalar& coeffRef(
Index index) {
return m_expression.const_cast_derived().coeffRef(index); }
65 template <
int LoadMode>
66 inline const PacketScalar packet(
Index row,
Index col)
const {
67 return m_expression.template packet<Aligned>(row, col);
70 template <
int LoadMode>
71 inline void writePacket(
Index row,
Index col,
const PacketScalar& x) {
72 m_expression.const_cast_derived().template writePacket<Aligned>(row, col, x);
75 template <
int LoadMode>
76 inline const PacketScalar packet(
Index index)
const {
77 return m_expression.template packet<Aligned>(index);
80 template <
int LoadMode>
81 inline void writePacket(
Index index,
const PacketScalar& x) {
82 m_expression.const_cast_derived().template writePacket<Aligned>(index, x);
85 EIGEN_DEVICE_FUNC
operator const ExpressionType&()
const {
return m_expression; }
88 const ExpressionType& m_expression;