mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-05-06 10:44:05 +08:00
implement evaluator for SparseVector
This commit is contained in:
parent
3849cc65ee
commit
17f119689e
@ -410,6 +410,7 @@ class SparseVector<Scalar,_Options,_Index>::ReverseInnerIterator
|
|||||||
|
|
||||||
namespace internal {
|
namespace internal {
|
||||||
|
|
||||||
|
#ifndef EIGEN_TEST_EVALUATORS
|
||||||
template< typename Dest, typename Src>
|
template< typename Dest, typename Src>
|
||||||
struct sparse_vector_assign_selector<Dest,Src,SVA_Inner> {
|
struct sparse_vector_assign_selector<Dest,Src,SVA_Inner> {
|
||||||
static void run(Dest& dst, const Src& src) {
|
static void run(Dest& dst, const Src& src) {
|
||||||
@ -431,6 +432,33 @@ struct sparse_vector_assign_selector<Dest,Src,SVA_Outer> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
#else // EIGEN_TEST_EVALUATORS
|
||||||
|
template< typename Dest, typename Src>
|
||||||
|
struct sparse_vector_assign_selector<Dest,Src,SVA_Inner> {
|
||||||
|
static void run(Dest& dst, const Src& src) {
|
||||||
|
eigen_internal_assert(src.innerSize()==src.size());
|
||||||
|
typedef typename internal::evaluator<Src>::type SrcEvaluatorType;
|
||||||
|
SrcEvaluatorType srcEval(src);
|
||||||
|
for(typename SrcEvaluatorType::InnerIterator it(srcEval, 0); it; ++it)
|
||||||
|
dst.insert(it.index()) = it.value();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
template< typename Dest, typename Src>
|
||||||
|
struct sparse_vector_assign_selector<Dest,Src,SVA_Outer> {
|
||||||
|
static void run(Dest& dst, const Src& src) {
|
||||||
|
eigen_internal_assert(src.outerSize()==src.size());
|
||||||
|
typedef typename internal::evaluator<Src>::type SrcEvaluatorType;
|
||||||
|
SrcEvaluatorType srcEval(src);
|
||||||
|
for(typename Dest::Index i=0; i<src.size(); ++i)
|
||||||
|
{
|
||||||
|
typename SrcEvaluatorType::InnerIterator it(srcEval, i);
|
||||||
|
if(it)
|
||||||
|
dst.insert(i) = it.value();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
#endif // EIGEN_TEST_EVALUATORS
|
||||||
|
|
||||||
template< typename Dest, typename Src>
|
template< typename Dest, typename Src>
|
||||||
struct sparse_vector_assign_selector<Dest,Src,SVA_RuntimeSwitch> {
|
struct sparse_vector_assign_selector<Dest,Src,SVA_RuntimeSwitch> {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user