minor changes
This commit is contained in:
parent
ec430efcc6
commit
6ecbe5ff27
2 changed files with 51 additions and 5 deletions
|
@ -174,15 +174,18 @@ namespace MultiArrayTools
|
||||||
{
|
{
|
||||||
ExtType last = rootSteps();
|
ExtType last = rootSteps();
|
||||||
last.zero();
|
last.zero();
|
||||||
mDataPtr[OpIndexResolve<OIA>::get(start,last)] = mSec.get(last.next());
|
//mDataPtr[OpIndexResolve<OIA>::get(start,last)] = mSec.get(last.next());
|
||||||
//mDataPtr[last.val()] = mSec.get(last.next());
|
IAssign::f(mDataPtr,OpIndexResolve<OIA>::get(start,last),mSec,last.next());
|
||||||
|
|
||||||
|
//mDataPtr[last.val()] = mSec.get(last.next());
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T, class Target, class OpClass, OpIndexAff OIA>
|
template <typename T, class Target, class OpClass, OpIndexAff OIA>
|
||||||
inline void AssignmentExpr2<T,Target,OpClass,OIA>::operator()(size_t start, ExtType last)
|
inline void AssignmentExpr2<T,Target,OpClass,OIA>::operator()(size_t start, ExtType last)
|
||||||
{
|
{
|
||||||
//CHECK;
|
//CHECK;
|
||||||
mDataPtr[OpIndexResolve<OIA>::get(start,last)] = mSec.get(last.next());
|
//mDataPtr[OpIndexResolve<OIA>::get(start,last)] = mSec.get(last.next());
|
||||||
|
IAssign::f(mDataPtr,OpIndexResolve<OIA>::get(start,last),mSec,last.next());
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T, class Target, class OpClass, OpIndexAff OIA>
|
template <typename T, class Target, class OpClass, OpIndexAff OIA>
|
||||||
|
@ -303,7 +306,9 @@ namespace MultiArrayTools
|
||||||
template <typename T, class Target, class OpClass, OpIndexAff OIA>
|
template <typename T, class Target, class OpClass, OpIndexAff OIA>
|
||||||
inline void AddExpr<T,Target,OpClass,OIA>::operator()(size_t start, ExtType last)
|
inline void AddExpr<T,Target,OpClass,OIA>::operator()(size_t start, ExtType last)
|
||||||
{
|
{
|
||||||
mDataPtr[OpIndexResolve<OIA>::get(start,last)] += mSec.get(last.next());
|
//IPlus::f(mDataPtr[OpIndexResolve<OIA>::get(start,last)],mSec.get(last.next()));
|
||||||
|
IPlus::f(mDataPtr,OpIndexResolve<OIA>::get(start,last),mSec,last.next());
|
||||||
|
//mDataPtr[OpIndexResolve<OIA>::get(start,last)] += mSec.get(last.next());
|
||||||
//mDataPtr[start] += mSec.get(last.next());
|
//mDataPtr[start] += mSec.get(last.next());
|
||||||
//mDataPtr[start] += mSec.template get<ExtType>(last);
|
//mDataPtr[start] += mSec.template get<ExtType>(last);
|
||||||
}
|
}
|
||||||
|
@ -313,7 +318,9 @@ namespace MultiArrayTools
|
||||||
{
|
{
|
||||||
ExtType last = rootSteps();
|
ExtType last = rootSteps();
|
||||||
last.zero();
|
last.zero();
|
||||||
mDataPtr[OpIndexResolve<OIA>::get(start,last)] += mSec.get(last.next());
|
//mDataPtr[OpIndexResolve<OIA>::get(start,last)] += mSec.get(last.next());
|
||||||
|
//IPlus::f(mDataPtr[OpIndexResolve<OIA>::get(start,last)],mSec.get(last.next()));
|
||||||
|
IPlus::f(mDataPtr,OpIndexResolve<OIA>::get(start,last),mSec,last.next());
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T, class Target, class OpClass, OpIndexAff OIA>
|
template <typename T, class Target, class OpClass, OpIndexAff OIA>
|
||||||
|
|
|
@ -204,6 +204,45 @@ namespace MultiArrayTools
|
||||||
TARGET = 1
|
TARGET = 1
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct IAssign
|
||||||
|
{
|
||||||
|
template <typename T, typename Op, class ExtType>
|
||||||
|
static inline void f(T*& t, size_t pos, const Op& op, ExtType e)
|
||||||
|
{
|
||||||
|
//a = b;
|
||||||
|
t[pos] = op.get(e);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename V>
|
||||||
|
struct IVAssign
|
||||||
|
{
|
||||||
|
template <typename T1, typename T2>
|
||||||
|
static inline void f(T1& a, const T2& b)
|
||||||
|
{
|
||||||
|
*reinterpret_cast<V*>(&a) = b;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
struct IPlus
|
||||||
|
{
|
||||||
|
template <typename T, typename Op, class ExtType>
|
||||||
|
static inline void f(T*& t, size_t pos, const Op& op, ExtType e)
|
||||||
|
{
|
||||||
|
t[pos] += op.get(e);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename V>
|
||||||
|
struct IVPlus
|
||||||
|
{
|
||||||
|
template <typename T1, typename T2>
|
||||||
|
static inline void f(T1& a, const T2& b)
|
||||||
|
{
|
||||||
|
*reinterpret_cast<V*>(&a) += b;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
template <typename T, class Target, class OpClass, OpIndexAff OIA=OpIndexAff::EXTERN>
|
template <typename T, class Target, class OpClass, OpIndexAff OIA=OpIndexAff::EXTERN>
|
||||||
class AssignmentExpr2 : public ExpressionBase
|
class AssignmentExpr2 : public ExpressionBase
|
||||||
|
|
Loading…
Reference in a new issue