10 #ifndef EIGEN_FORCEALIGNEDACCESS_H
11 #define EIGEN_FORCEALIGNEDACCESS_H
29 template<
typename ExpressionType>
30 struct traits<ForceAlignedAccess<ExpressionType> > :
public traits<ExpressionType>
35 :
public internal::dense_xpr_base< ForceAlignedAccess<ExpressionType> >::type
39 typedef typename internal::dense_xpr_base<ForceAlignedAccess>::type Base;
44 inline Index rows()
const {
return m_expression.rows(); }
45 inline Index cols()
const {
return m_expression.cols(); }
46 inline Index outerStride()
const {
return m_expression.outerStride(); }
47 inline Index innerStride()
const {
return m_expression.innerStride(); }
49 inline const CoeffReturnType coeff(Index row, Index col)
const
51 return m_expression.coeff(row, col);
54 inline Scalar& coeffRef(Index row, Index col)
56 return m_expression.const_cast_derived().coeffRef(row, col);
59 inline const CoeffReturnType coeff(Index index)
const
61 return m_expression.coeff(index);
64 inline Scalar& coeffRef(Index index)
66 return m_expression.const_cast_derived().coeffRef(index);
69 template<
int LoadMode>
70 inline const PacketScalar packet(Index row, Index col)
const
72 return m_expression.template packet<Aligned>(row, col);
75 template<
int LoadMode>
76 inline void writePacket(Index row, Index col,
const PacketScalar& x)
78 m_expression.const_cast_derived().template writePacket<Aligned>(row, col, x);
81 template<
int LoadMode>
82 inline const PacketScalar packet(Index index)
const
84 return m_expression.template packet<Aligned>(index);
87 template<
int LoadMode>
88 inline void writePacket(Index index,
const PacketScalar& x)
90 m_expression.const_cast_derived().template writePacket<Aligned>(index, x);
93 operator const ExpressionType&()
const {
return m_expression; }
96 const ExpressionType& m_expression;
105 template<
typename Derived>
115 template<
typename Derived>
125 template<
typename Derived>
126 template<
bool Enable>
127 inline typename internal::add_const_on_value_type<typename internal::conditional<Enable,ForceAlignedAccess<Derived>,Derived&>::type>::type
136 template<
typename Derived>
137 template<
bool Enable>
138 inline typename internal::conditional<Enable,ForceAlignedAccess<Derived>,Derived&>::type
146 #endif // EIGEN_FORCEALIGNEDACCESS_H
Enforce aligned packet loads and stores regardless of what is requested.
Definition: ForceAlignedAccess.h:34
internal::add_const_on_value_type< typename internal::conditional< Enable, ForceAlignedAccess< Derived >, Derived & >::type >::type forceAlignedAccessIf() const
Definition: ForceAlignedAccess.h:128
const ForceAlignedAccess< Derived > forceAlignedAccess() const
Definition: ForceAlignedAccess.h:107