mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-01-30 17:40:05 +08:00
now we also have a examples/ directory for self-contained examples,
and this is already used to document DynBlock
This commit is contained in:
parent
eb6ee51fdf
commit
c38156a217
@ -26,6 +26,23 @@
|
|||||||
#ifndef EIGEN_DYNBLOCK_H
|
#ifndef EIGEN_DYNBLOCK_H
|
||||||
#define EIGEN_DYNBLOCK_H
|
#define EIGEN_DYNBLOCK_H
|
||||||
|
|
||||||
|
/** \class DynBlock
|
||||||
|
*
|
||||||
|
* \brief Expression of a dynamic-size block
|
||||||
|
*
|
||||||
|
* This class represents an expression of a dynamic-size block. It is the return
|
||||||
|
* type of MatrixBase::dynBlock() and most of the time this is the only way this
|
||||||
|
* class is used.
|
||||||
|
*
|
||||||
|
* However, if you want to directly maniputate dynamic-size block expressions,
|
||||||
|
* for instance if you want to write a function returning such an expression, you
|
||||||
|
* will need to use this class.
|
||||||
|
*
|
||||||
|
* Here is an example illustrating this:
|
||||||
|
* \include class_DynBlock.cpp
|
||||||
|
* Output:
|
||||||
|
* \verbinclude class_DynBlock.out
|
||||||
|
*/
|
||||||
template<typename MatrixType> class DynBlock
|
template<typename MatrixType> class DynBlock
|
||||||
: public MatrixBase<typename MatrixType::Scalar, DynBlock<MatrixType> >
|
: public MatrixBase<typename MatrixType::Scalar, DynBlock<MatrixType> >
|
||||||
{
|
{
|
||||||
@ -84,6 +101,10 @@ template<typename MatrixType> class DynBlock
|
|||||||
*
|
*
|
||||||
* Example:
|
* Example:
|
||||||
* \include MatrixBase_dynBlock.cpp
|
* \include MatrixBase_dynBlock.cpp
|
||||||
|
* Output:
|
||||||
|
* \verbinclude MatrixBase_dynBlock.out
|
||||||
|
*
|
||||||
|
* \sa class DynBlock
|
||||||
*/
|
*/
|
||||||
template<typename Scalar, typename Derived>
|
template<typename Scalar, typename Derived>
|
||||||
DynBlock<Derived> MatrixBase<Scalar, Derived>
|
DynBlock<Derived> MatrixBase<Scalar, Derived>
|
||||||
|
@ -85,7 +85,7 @@ template<typename Scalar, typename Derived> class MatrixBase
|
|||||||
|
|
||||||
/** This is the "real scalar" type; if the \a Scalar type is already real numbers
|
/** This is the "real scalar" type; if the \a Scalar type is already real numbers
|
||||||
* (e.g. int, float or double) then RealScalar is just the same as \a Scalar. If
|
* (e.g. int, float or double) then RealScalar is just the same as \a Scalar. If
|
||||||
* \Scalar is \a std::complex<T> then RealScalar is \a T. */
|
* \a Scalar is \a std::complex<T> then RealScalar is \a T. */
|
||||||
typedef typename NumTraits<Scalar>::Real RealScalar;
|
typedef typename NumTraits<Scalar>::Real RealScalar;
|
||||||
|
|
||||||
/** \returns the number of rows. \sa cols(), RowsAtCompileTime */
|
/** \returns the number of rows. \sa cols(), RowsAtCompileTime */
|
||||||
|
@ -5,6 +5,7 @@ CONFIGURE_FILE(
|
|||||||
${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
|
${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
|
||||||
)
|
)
|
||||||
|
|
||||||
|
ADD_SUBDIRECTORY(examples)
|
||||||
ADD_SUBDIRECTORY(snippets)
|
ADD_SUBDIRECTORY(snippets)
|
||||||
|
|
||||||
ENDIF(BUILD_DOC)
|
ENDIF(BUILD_DOC)
|
||||||
|
@ -85,7 +85,7 @@ WARN_LOGFILE =
|
|||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
# configuration options related to the input files
|
# configuration options related to the input files
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
INPUT = ${CMAKE_SOURCE_DIR}
|
INPUT = ${CMAKE_SOURCE_DIR}/doc ${CMAKE_SOURCE_DIR}/Eigen
|
||||||
INPUT_ENCODING = UTF-8
|
INPUT_ENCODING = UTF-8
|
||||||
FILE_PATTERNS = *.c \
|
FILE_PATTERNS = *.c \
|
||||||
*.cc \
|
*.cc \
|
||||||
@ -133,7 +133,9 @@ EXCLUDE =
|
|||||||
EXCLUDE_SYMLINKS = NO
|
EXCLUDE_SYMLINKS = NO
|
||||||
EXCLUDE_PATTERNS =
|
EXCLUDE_PATTERNS =
|
||||||
EXCLUDE_SYMBOLS =
|
EXCLUDE_SYMBOLS =
|
||||||
EXAMPLE_PATH = ${CMAKE_SOURCE_DIR}/doc/examples \
|
EXAMPLE_PATH = ${CMAKE_SOURCE_DIR}/doc/snippets \
|
||||||
|
${CMAKE_BINARY_DIR}/doc/snippets \
|
||||||
|
${CMAKE_SOURCE_DIR}/doc/examples \
|
||||||
${CMAKE_BINARY_DIR}/doc/examples
|
${CMAKE_BINARY_DIR}/doc/examples
|
||||||
EXAMPLE_PATTERNS = *
|
EXAMPLE_PATTERNS = *
|
||||||
EXAMPLE_RECURSIVE = NO
|
EXAMPLE_RECURSIVE = NO
|
||||||
|
14
doc/examples/CMakeLists.txt
Normal file
14
doc/examples/CMakeLists.txt
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
FILE(GLOB examples_SRCS "*.cpp")
|
||||||
|
|
||||||
|
FOREACH(example_src ${examples_SRCS})
|
||||||
|
GET_FILENAME_COMPONENT(example ${example_src} NAME_WE)
|
||||||
|
ADD_EXECUTABLE(${example} ${example_src})
|
||||||
|
GET_TARGET_PROPERTY(example_executable
|
||||||
|
${example} LOCATION)
|
||||||
|
ADD_CUSTOM_COMMAND(
|
||||||
|
TARGET ${example}
|
||||||
|
POST_BUILD
|
||||||
|
COMMAND ${example_executable}
|
||||||
|
ARGS >${CMAKE_CURRENT_BINARY_DIR}/${example}.out
|
||||||
|
)
|
||||||
|
ENDFOREACH(example_src)
|
19
doc/examples/class_DynBlock.cpp
Normal file
19
doc/examples/class_DynBlock.cpp
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#include <Eigen/Core.h>
|
||||||
|
USING_EIGEN_DATA_TYPES
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
template<typename Scalar, typename Derived>
|
||||||
|
Eigen::DynBlock<Derived>
|
||||||
|
topLeftCorner(const Eigen::MatrixBase<Scalar, Derived>& m, int rows, int cols)
|
||||||
|
{
|
||||||
|
return m.dynBlock(0, 0, rows, cols);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int, char**)
|
||||||
|
{
|
||||||
|
Matrix4d m = Matrix4d::identity();
|
||||||
|
cout << topLeftCorner(m, 2, 3) << endl;
|
||||||
|
topLeftCorner(m, 2, 3) *= 5;
|
||||||
|
cout << "Now the matrix m is:" << endl << m << endl;
|
||||||
|
return 0;
|
||||||
|
}
|
@ -4,4 +4,5 @@ using namespace std;
|
|||||||
int main(int, char**)
|
int main(int, char**)
|
||||||
{
|
{
|
||||||
${snippet_source_code}
|
${snippet_source_code}
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user