11 #ifndef EIGEN_EIGENBASE_H
12 #define EIGEN_EIGENBASE_H
42 typedef typename internal::traits<Derived>::StorageKind StorageKind;
46 Derived&
derived() {
return *
static_cast<Derived*
>(
this); }
49 const Derived&
derived()
const {
return *
static_cast<const Derived*
>(
this); }
52 inline Derived& const_cast_derived()
const
53 {
return *
static_cast<Derived*
>(
const_cast<EigenBase*
>(
this)); }
55 inline const Derived& const_derived()
const
56 {
return *
static_cast<const Derived*
>(
this); }
59 EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
62 EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
66 EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
70 template<
typename Dest>
72 inline void evalTo(Dest& dst)
const
76 template<
typename Dest>
78 inline void addTo(Dest& dst)
const
82 typename Dest::PlainObject res(
rows(),
cols());
88 template<
typename Dest>
90 inline void subTo(Dest& dst)
const
94 typename Dest::PlainObject res(
rows(),
cols());
100 template<
typename Dest>
101 EIGEN_DEVICE_FUNC
inline void applyThisOnTheRight(Dest& dst)
const
109 template<
typename Dest>
110 EIGEN_DEVICE_FUNC
inline void applyThisOnTheLeft(Dest& dst)
const
131 template<
typename Derived>
132 template<
typename OtherDerived>
136 call_assignment(derived(), other.
derived());
140 template<
typename Derived>
141 template<
typename OtherDerived>
145 call_assignment(derived(), other.
derived(), internal::add_assign_op<Scalar,typename OtherDerived::Scalar>());
149 template<
typename Derived>
150 template<
typename OtherDerived>
152 Derived& DenseBase<Derived>::operator-=(
const EigenBase<OtherDerived> &other)
154 call_assignment(derived(), other.derived(), internal::sub_assign_op<Scalar,typename OtherDerived::Scalar>());
160 #endif // EIGEN_EIGENBASE_H