Allow to use arbitrary packet-types during evaluation.

This is implemented by adding a PacketType template parameter to packet and writePacket members of evaluator<>.
This commit is contained in:
Gael Guennebaud
2015-08-07 12:01:39 +02:00
parent 3602926ed5
commit 65bfa5fce7
10 changed files with 221 additions and 225 deletions

View File

@@ -216,8 +216,9 @@ class DenseCoeffsBase<Derived,ReadOnlyAccessors> : public EigenBase<Derived>
template<int LoadMode>
EIGEN_STRONG_INLINE PacketReturnType packet(Index row, Index col) const
{
typedef typename internal::packet_traits<Scalar>::type DefaultPacketType;
eigen_internal_assert(row >= 0 && row < rows() && col >= 0 && col < cols());
return typename internal::evaluator<Derived>::type(derived()).template packet<LoadMode>(row,col);
return typename internal::evaluator<Derived>::type(derived()).template packet<LoadMode,DefaultPacketType>(row,col);
}
@@ -242,8 +243,9 @@ class DenseCoeffsBase<Derived,ReadOnlyAccessors> : public EigenBase<Derived>
template<int LoadMode>
EIGEN_STRONG_INLINE PacketReturnType packet(Index index) const
{
typedef typename internal::packet_traits<Scalar>::type DefaultPacketType;
eigen_internal_assert(index >= 0 && index < size());
return typename internal::evaluator<Derived>::type(derived()).template packet<LoadMode>(index);
return typename internal::evaluator<Derived>::type(derived()).template packet<LoadMode,DefaultPacketType>(index);
}
protected: