Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Image.h
00001 // This file is part of Eigen, a lightweight C++ template library 00002 // for linear algebra. 00003 // 00004 // Copyright (C) 2009 Benoit Jacob <jacob.benoit.1@gmail.com> 00005 // 00006 // This Source Code Form is subject to the terms of the Mozilla 00007 // Public License v. 2.0. If a copy of the MPL was not distributed 00008 // with this file, You can obtain one at http://mozilla.org/MPL/2.0/. 00009 00010 #ifndef EIGEN_MISC_IMAGE_H 00011 #define EIGEN_MISC_IMAGE_H 00012 00013 namespace Eigen { 00014 00015 namespace internal { 00016 00017 /** \class image_retval_base 00018 * 00019 */ 00020 template<typename DecompositionType> 00021 struct traits<image_retval_base<DecompositionType> > 00022 { 00023 typedef typename DecompositionType::MatrixType MatrixType; 00024 typedef Matrix< 00025 typename MatrixType::Scalar, 00026 MatrixType::RowsAtCompileTime, // the image is a subspace of the destination space, whose 00027 // dimension is the number of rows of the original matrix 00028 Dynamic, // we don't know at compile time the dimension of the image (the rank) 00029 MatrixType::Options, 00030 MatrixType::MaxRowsAtCompileTime, // the image matrix will consist of columns from the original matrix, 00031 MatrixType::MaxColsAtCompileTime // so it has the same number of rows and at most as many columns. 00032 > ReturnType; 00033 }; 00034 00035 template<typename _DecompositionType> struct image_retval_base 00036 : public ReturnByValue<image_retval_base<_DecompositionType> > 00037 { 00038 typedef _DecompositionType DecompositionType; 00039 typedef typename DecompositionType::MatrixType MatrixType; 00040 typedef ReturnByValue<image_retval_base> Base; 00041 typedef typename Base::Index Index; 00042 00043 image_retval_base(const DecompositionType& dec, const MatrixType& originalMatrix) 00044 : m_dec(dec), m_rank(dec.rank()), 00045 m_cols(m_rank == 0 ? 1 : m_rank), 00046 m_originalMatrix(originalMatrix) 00047 {} 00048 00049 inline Index rows() const { return m_dec.rows(); } 00050 inline Index cols() const { return m_cols; } 00051 inline Index rank() const { return m_rank; } 00052 inline const DecompositionType& dec() const { return m_dec; } 00053 inline const MatrixType& originalMatrix() const { return m_originalMatrix; } 00054 00055 template<typename Dest> inline void evalTo(Dest& dst) const 00056 { 00057 static_cast<const image_retval<DecompositionType>*>(this)->evalTo(dst); 00058 } 00059 00060 protected: 00061 const DecompositionType& m_dec; 00062 Index m_rank, m_cols; 00063 const MatrixType& m_originalMatrix; 00064 }; 00065 00066 } // end namespace internal 00067 00068 #define EIGEN_MAKE_IMAGE_HELPERS(DecompositionType) \ 00069 typedef typename DecompositionType::MatrixType MatrixType; \ 00070 typedef typename MatrixType::Scalar Scalar; \ 00071 typedef typename MatrixType::RealScalar RealScalar; \ 00072 typedef typename MatrixType::Index Index; \ 00073 typedef Eigen::internal::image_retval_base<DecompositionType> Base; \ 00074 using Base::dec; \ 00075 using Base::originalMatrix; \ 00076 using Base::rank; \ 00077 using Base::rows; \ 00078 using Base::cols; \ 00079 image_retval(const DecompositionType& dec, const MatrixType& originalMatrix) \ 00080 : Base(dec, originalMatrix) {} 00081 00082 } // end namespace Eigen 00083 00084 #endif // EIGEN_MISC_IMAGE_H
Generated on Thu Nov 17 2022 22:01:29 by
1.7.2