aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src/Core/Swap.h
diff options
context:
space:
mode:
Diffstat (limited to 'Eigen/src/Core/Swap.h')
-rw-r--r--Eigen/src/Core/Swap.h30
1 files changed, 20 insertions, 10 deletions
diff --git a/Eigen/src/Core/Swap.h b/Eigen/src/Core/Swap.h
index b58fd1279..31e8170f5 100644
--- a/Eigen/src/Core/Swap.h
+++ b/Eigen/src/Core/Swap.h
@@ -59,6 +59,16 @@ template<typename ExpressionType> class SwapWrapper
inline int cols() const { return m_expression.cols(); }
inline int stride() const { return m_expression.stride(); }
+ inline Scalar& coeffRef(int row, int col)
+ {
+ return m_expression.const_cast_derived().coeffRef(row, col);
+ }
+
+ inline Scalar& coeffRef(int index)
+ {
+ return m_expression.const_cast_derived().coeffRef(index);
+ }
+
template<typename OtherDerived>
void copyCoeff(int row, int col, const MatrixBase<OtherDerived>& other)
{
@@ -80,29 +90,29 @@ template<typename ExpressionType> class SwapWrapper
_other.coeffRef(index) = tmp;
}
- template<typename OtherDerived, int LoadStoreMode>
+ template<typename OtherDerived, int StoreMode, int LoadMode>
void copyPacket(int row, int col, const MatrixBase<OtherDerived>& other)
{
OtherDerived& _other = other.const_cast_derived();
ei_internal_assert(row >= 0 && row < rows()
&& col >= 0 && col < cols());
- Packet tmp = m_expression.template packet<LoadStoreMode>(row, col);
- m_expression.template writePacket<LoadStoreMode>(row, col,
- _other.template packet<LoadStoreMode>(row, col)
+ Packet tmp = m_expression.template packet<StoreMode>(row, col);
+ m_expression.template writePacket<StoreMode>(row, col,
+ _other.template packet<LoadMode>(row, col)
);
- _other.template writePacket<LoadStoreMode>(row, col, tmp);
+ _other.template writePacket<LoadMode>(row, col, tmp);
}
- template<typename OtherDerived, int LoadStoreMode>
+ template<typename OtherDerived, int StoreMode, int LoadMode>
void copyPacket(int index, const MatrixBase<OtherDerived>& other)
{
OtherDerived& _other = other.const_cast_derived();
ei_internal_assert(index >= 0 && index < m_expression.size());
- Packet tmp = m_expression.template packet<LoadStoreMode>(index);
- m_expression.template writePacket<LoadStoreMode>(index,
- _other.template packet<LoadStoreMode>(index)
+ Packet tmp = m_expression.template packet<StoreMode>(index);
+ m_expression.template writePacket<StoreMode>(index,
+ _other.template packet<LoadMode>(index)
);
- _other.template writePacket<LoadStoreMode>(index, tmp);
+ _other.template writePacket<LoadMode>(index, tmp);
}
protected: