now we also have a examples/ directory for self-contained examples,

and this is already used to document DynBlock
This commit is contained in:
Benoit Jacob 2007-12-21 10:35:00 +00:00
parent eb6ee51fdf
commit c38156a217
8 changed files with 61 additions and 3 deletions

View File

@ -26,6 +26,23 @@
#ifndef 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
: public MatrixBase<typename MatrixType::Scalar, DynBlock<MatrixType> >
{
@ -84,6 +101,10 @@ template<typename MatrixType> class DynBlock
*
* Example:
* \include MatrixBase_dynBlock.cpp
* Output:
* \verbinclude MatrixBase_dynBlock.out
*
* \sa class DynBlock
*/
template<typename Scalar, typename Derived>
DynBlock<Derived> MatrixBase<Scalar, Derived>

View File

@ -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
* (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;
/** \returns the number of rows. \sa cols(), RowsAtCompileTime */

View File

@ -5,6 +5,7 @@ CONFIGURE_FILE(
${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
)
ADD_SUBDIRECTORY(examples)
ADD_SUBDIRECTORY(snippets)
ENDIF(BUILD_DOC)

View File

@ -85,7 +85,7 @@ WARN_LOGFILE =
#---------------------------------------------------------------------------
# configuration options related to the input files
#---------------------------------------------------------------------------
INPUT = ${CMAKE_SOURCE_DIR}
INPUT = ${CMAKE_SOURCE_DIR}/doc ${CMAKE_SOURCE_DIR}/Eigen
INPUT_ENCODING = UTF-8
FILE_PATTERNS = *.c \
*.cc \
@ -133,7 +133,9 @@ EXCLUDE =
EXCLUDE_SYMLINKS = NO
EXCLUDE_PATTERNS =
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
EXAMPLE_PATTERNS = *
EXAMPLE_RECURSIVE = NO

View 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)

View 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;
}

View File

@ -4,4 +4,5 @@ using namespace std;
int main(int, char**)
{
${snippet_source_code}
return 0;
}