Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef EIGEN_MISC_SOLVE_H
00026 #define EIGEN_MISC_SOLVE_H
00027
00028 namespace Eigen {
00029
00030 namespace internal {
00031
00035 template<typename DecompositionType, typename Rhs>
00036 struct traits<solve_retval_base<DecompositionType, Rhs> >
00037 {
00038 typedef typename DecompositionType::MatrixType MatrixType;
00039 typedef Matrix<typename Rhs::Scalar,
00040 MatrixType::ColsAtCompileTime,
00041 Rhs::ColsAtCompileTime,
00042 Rhs::PlainObject::Options,
00043 MatrixType::MaxColsAtCompileTime,
00044 Rhs::MaxColsAtCompileTime> ReturnType;
00045 };
00046
00047 template<typename _DecompositionType, typename Rhs> struct solve_retval_base
00048 : public ReturnByValue<solve_retval_base<_DecompositionType, Rhs> >
00049 {
00050 typedef typename remove_all<typename Rhs::Nested>::type RhsNestedCleaned;
00051 typedef _DecompositionType DecompositionType;
00052 typedef ReturnByValue<solve_retval_base> Base;
00053 typedef typename Base::Index Index;
00054
00055 solve_retval_base(const DecompositionType& dec, const Rhs& rhs)
00056 : m_dec(dec), m_rhs(rhs)
00057 {}
00058
00059 inline Index rows() const { return m_dec.cols(); }
00060 inline Index cols() const { return m_rhs.cols(); }
00061 inline const DecompositionType& dec() const { return m_dec; }
00062 inline const RhsNestedCleaned& rhs() const { return m_rhs; }
00063
00064 template<typename Dest> inline void evalTo(Dest& dst) const
00065 {
00066 static_cast<const solve_retval<DecompositionType,Rhs>*>(this)->evalTo(dst);
00067 }
00068
00069 protected:
00070 const DecompositionType& m_dec;
00071 typename Rhs::Nested m_rhs;
00072 };
00073
00074 }
00075
00076 #define EIGEN_MAKE_SOLVE_HELPERS(DecompositionType,Rhs) \
00077 typedef typename DecompositionType::MatrixType MatrixType; \
00078 typedef typename MatrixType::Scalar Scalar; \
00079 typedef typename MatrixType::RealScalar RealScalar; \
00080 typedef typename MatrixType::Index Index; \
00081 typedef Eigen::internal::solve_retval_base<DecompositionType,Rhs> Base; \
00082 using Base::dec; \
00083 using Base::rhs; \
00084 using Base::rows; \
00085 using Base::cols; \
00086 solve_retval(const DecompositionType& dec, const Rhs& rhs) \
00087 : Base(dec, rhs) {}
00088
00089 }
00090
00091 #endif // EIGEN_MISC_SOLVE_H