From c38156a217c439e8cdd684556d03461955b9c012 Mon Sep 17 00:00:00 2001 From: Benoit Jacob Date: Fri, 21 Dec 2007 10:35:00 +0000 Subject: now we also have a examples/ directory for self-contained examples, and this is already used to document DynBlock --- Eigen/Core/DynBlock.h | 21 +++++++++++++++++++++ Eigen/Core/MatrixBase.h | 2 +- doc/CMakeLists.txt | 1 + doc/Doxyfile.in | 6 ++++-- doc/examples/CMakeLists.txt | 14 ++++++++++++++ doc/examples/class_DynBlock.cpp | 19 +++++++++++++++++++ doc/snippets/MatrixBase_dynBlock.cpp | 3 +++ doc/snippets/compile_snippet.cpp.in | 1 + doc/snippets/function_dynBlock.cpp | 3 --- 9 files changed, 64 insertions(+), 6 deletions(-) create mode 100644 doc/examples/CMakeLists.txt create mode 100644 doc/examples/class_DynBlock.cpp create mode 100644 doc/snippets/MatrixBase_dynBlock.cpp delete mode 100644 doc/snippets/function_dynBlock.cpp diff --git a/Eigen/Core/DynBlock.h b/Eigen/Core/DynBlock.h index b6795151c..39c83584d 100644 --- a/Eigen/Core/DynBlock.h +++ b/Eigen/Core/DynBlock.h @@ -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 class DynBlock : public MatrixBase > { @@ -84,6 +101,10 @@ template class DynBlock * * Example: * \include MatrixBase_dynBlock.cpp + * Output: + * \verbinclude MatrixBase_dynBlock.out + * + * \sa class DynBlock */ template DynBlock MatrixBase diff --git a/Eigen/Core/MatrixBase.h b/Eigen/Core/MatrixBase.h index 6ca815ef0..3cc4e5e41 100644 --- a/Eigen/Core/MatrixBase.h +++ b/Eigen/Core/MatrixBase.h @@ -85,7 +85,7 @@ template 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 then RealScalar is \a T. */ + * \a Scalar is \a std::complex then RealScalar is \a T. */ typedef typename NumTraits::Real RealScalar; /** \returns the number of rows. \sa cols(), RowsAtCompileTime */ diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt index ba8798e9c..90228f071 100644 --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@ -5,6 +5,7 @@ CONFIGURE_FILE( ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile ) +ADD_SUBDIRECTORY(examples) ADD_SUBDIRECTORY(snippets) ENDIF(BUILD_DOC) diff --git a/doc/Doxyfile.in b/doc/Doxyfile.in index fb0bd8137..423a6eac6 100644 --- a/doc/Doxyfile.in +++ b/doc/Doxyfile.in @@ -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 diff --git a/doc/examples/CMakeLists.txt b/doc/examples/CMakeLists.txt new file mode 100644 index 000000000..8ced15735 --- /dev/null +++ b/doc/examples/CMakeLists.txt @@ -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) diff --git a/doc/examples/class_DynBlock.cpp b/doc/examples/class_DynBlock.cpp new file mode 100644 index 000000000..8407d8733 --- /dev/null +++ b/doc/examples/class_DynBlock.cpp @@ -0,0 +1,19 @@ +#include +USING_EIGEN_DATA_TYPES +using namespace std; + +template +Eigen::DynBlock +topLeftCorner(const Eigen::MatrixBase& 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; +} diff --git a/doc/snippets/MatrixBase_dynBlock.cpp b/doc/snippets/MatrixBase_dynBlock.cpp new file mode 100644 index 000000000..5ca7655ed --- /dev/null +++ b/doc/snippets/MatrixBase_dynBlock.cpp @@ -0,0 +1,3 @@ +Matrix4d m = Matrix4d::identity(); +m.dynBlock(2,0,2,2) = m.dynBlock(0,0,2,2); +cout << m << endl; diff --git a/doc/snippets/compile_snippet.cpp.in b/doc/snippets/compile_snippet.cpp.in index 552a5db21..952a3ee81 100644 --- a/doc/snippets/compile_snippet.cpp.in +++ b/doc/snippets/compile_snippet.cpp.in @@ -4,4 +4,5 @@ using namespace std; int main(int, char**) { ${snippet_source_code} +return 0; } diff --git a/doc/snippets/function_dynBlock.cpp b/doc/snippets/function_dynBlock.cpp deleted file mode 100644 index 5ca7655ed..000000000 --- a/doc/snippets/function_dynBlock.cpp +++ /dev/null @@ -1,3 +0,0 @@ -Matrix4d m = Matrix4d::identity(); -m.dynBlock(2,0,2,2) = m.dynBlock(0,0,2,2); -cout << m << endl; -- cgit v1.2.3