From 8de4d92b70753e81420d2ff387f9596eb423b2de Mon Sep 17 00:00:00 2001 From: Benoit Jacob Date: Tue, 3 Jun 2008 02:06:18 +0000 Subject: [PATCH] - get the doc of the enums in MatrixBase right - get the doc of the flags in Constants right - finally give up with SEPARATE_MEMBER_PAGES: it triggers too big Doxygen bugs, and produces too many small pages. So we have one huge page for MatrixBase at currently 300kb and going up, so the solution especially for users with low bandwidth will be to provide an archive of the html documentation. --- Eigen/src/Core/MatrixBase.h | 45 +++++++--------- Eigen/src/Core/util/Constants.h | 95 ++++++++++++++++++++++++++++----- doc/Doxyfile.in | 5 +- 3 files changed, 104 insertions(+), 41 deletions(-) diff --git a/Eigen/src/Core/MatrixBase.h b/Eigen/src/Core/MatrixBase.h index 3b08ea7c6..f02aac36a 100644 --- a/Eigen/src/Core/MatrixBase.h +++ b/Eigen/src/Core/MatrixBase.h @@ -60,28 +60,26 @@ template class MatrixBase : public ArrayBase enum { - RowsAtCompileTime + RowsAtCompileTime = ei_traits::RowsAtCompileTime, /**< The number of rows at compile-time. This is just a copy of the value provided * by the \a Derived type. If a value is not known at compile-time, * it is set to the \a Dynamic constant. * \sa MatrixBase::rows(), MatrixBase::cols(), ColsAtCompileTime, SizeAtCompileTime */ - = ei_traits::RowsAtCompileTime, - ColsAtCompileTime + ColsAtCompileTime = ei_traits::ColsAtCompileTime, /**< The number of columns at compile-time. This is just a copy of the value provided * by the \a Derived type. If a value is not known at compile-time, * it is set to the \a Dynamic constant. * \sa MatrixBase::rows(), MatrixBase::cols(), RowsAtCompileTime, SizeAtCompileTime */ - = ei_traits::ColsAtCompileTime, + - SizeAtCompileTime + SizeAtCompileTime = (ei_size_at_compile_time::RowsAtCompileTime, + ei_traits::ColsAtCompileTime>::ret), /**< This is equal to the number of coefficients, i.e. the number of * rows times the number of columns, or to \a Dynamic if this is not * known at compile-time. \sa RowsAtCompileTime, ColsAtCompileTime */ - = ei_size_at_compile_time::RowsAtCompileTime, - ei_traits::ColsAtCompileTime>::ret, - - MaxRowsAtCompileTime + + MaxRowsAtCompileTime = ei_traits::MaxRowsAtCompileTime, /**< This value is equal to the maximum possible number of rows that this expression * might have. If this expression might have an arbitrarily high number of rows, * this value is set to \a Dynamic. @@ -91,9 +89,8 @@ template class MatrixBase : public ArrayBase * * \sa RowsAtCompileTime, MaxColsAtCompileTime, MaxSizeAtCompileTime */ - = ei_traits::MaxRowsAtCompileTime, - - MaxColsAtCompileTime + + MaxColsAtCompileTime = ei_traits::MaxColsAtCompileTime, /**< This value is equal to the maximum possible number of columns that this expression * might have. If this expression might have an arbitrarily high number of columns, * this value is set to \a Dynamic. @@ -103,9 +100,9 @@ template class MatrixBase : public ArrayBase * * \sa ColsAtCompileTime, MaxRowsAtCompileTime, MaxSizeAtCompileTime */ - = ei_traits::MaxColsAtCompileTime, - - MaxSizeAtCompileTime + + MaxSizeAtCompileTime = (ei_size_at_compile_time::MaxRowsAtCompileTime, + ei_traits::MaxColsAtCompileTime>::ret), /**< This value is equal to the maximum possible number of coefficients that this expression * might have. If this expression might have an arbitrarily high number of coefficients, * this value is set to \a Dynamic. @@ -115,27 +112,23 @@ template class MatrixBase : public ArrayBase * * \sa SizeAtCompileTime, MaxRowsAtCompileTime, MaxColsAtCompileTime */ - = ei_size_at_compile_time::MaxRowsAtCompileTime, - ei_traits::MaxColsAtCompileTime>::ret, - IsVectorAtCompileTime + IsVectorAtCompileTime = ei_traits::RowsAtCompileTime == 1 + || ei_traits::ColsAtCompileTime == 1, /**< This is set to true if either the number of rows or the number of * columns is known at compile-time to be equal to 1. Indeed, in that case, * we are dealing with a column-vector (if there is only one column) or with * a row-vector (if there is only one row). */ - = ei_traits::RowsAtCompileTime == 1 || ei_traits::ColsAtCompileTime == 1, - - Flags - /**< This stores expression metadata which typically is inherited by new expressions - * constructed from this one. The available flags are FIXME!!! document that !!! + + Flags = ei_traits::Flags, + /**< This stores expression \ref flags flags which may or may not be inherited by new expressions + * constructed from this one. See the \ref flags "list of flags". */ - = ei_traits::Flags, - CoeffReadCost + CoeffReadCost = ei_traits::CoeffReadCost /**< This is a rough measure of how expensive it is to read one coefficient from * this expression. */ - = ei_traits::CoeffReadCost }; /** Default constructor. Just checks at compile-time for self-consistency of the flags. */ diff --git a/Eigen/src/Core/util/Constants.h b/Eigen/src/Core/util/Constants.h index fd3451922..fdde9acd3 100644 --- a/Eigen/src/Core/util/Constants.h +++ b/Eigen/src/Core/util/Constants.h @@ -28,24 +28,93 @@ const int Dynamic = 10000; -// matrix/expression flags +/** \defgroup flags */ + +/** \name flags + * + * These are the possible bits which can be OR'ed to constitute the flags of a matrix or + * expression. + * + * \sa MatrixBase::Flags + */ + +/** \ingroup flags + * + * for a matrix, this means that the storage order is row-major. + * If this bit is not set, the storage order is column-major. + * For an expression, this determines the storage order of + * the matrix created by evaluation of that expression. */ const unsigned int RowMajorBit = 0x1; -const unsigned int EvalBeforeNestingBit = 0x2; ///< means the expression should be evaluated by the calling expression -const unsigned int EvalBeforeAssigningBit = 0x4;///< means the expression should be evaluated before any assignement + +/** \ingroup flags + * + * means the expression should be evaluated by the calling expression */ +const unsigned int EvalBeforeNestingBit = 0x2; + +/** \ingroup flags + * + * means the expression should be evaluated before any assignement */ +const unsigned int EvalBeforeAssigningBit = 0x4; + +/** \ingroup flags + * + * currently unused. Means the matrix probably has a very big size. + * Could eventually be used as a hint to determine which algorithms + * to use. */ const unsigned int LargeBit = 0x8; + #ifdef EIGEN_VECTORIZE -const unsigned int VectorizableBit = 0x10; ///< means the expression might be vectorized +/** \ingroup flags + * + * means the expression might be vectorized */ +const unsigned int VectorizableBit = 0x10; #else const unsigned int VectorizableBit = 0x0; #endif -const unsigned int Like1DArrayBit = 0x20; ///< means the expression can be seen as 1D vector (used for explicit vectorization) -const unsigned int ZeroDiagBit = 0x40; ///< means all diagonal coefficients are equal to 0 -const unsigned int UnitDiagBit = 0x80; ///< means all diagonal coefficients are equal to 1 -const unsigned int SelfAdjointBit = 0x100; ///< means the matrix is selfadjoint (M=M*). -const unsigned int UpperTriangularBit = 0x200; ///< means the strictly triangular lower part is 0 -const unsigned int LowerTriangularBit = 0x400; ///< means the strictly triangular upper part is 0 -const unsigned int DirectAccessBit = 0x800; ///< means the underlying matrix data can be direclty accessed -const unsigned int ArrayBit = 0x1000; ///< means the underlying matrix data can be direclty accessed + +/** \ingroup flags + * + * means the expression can be seen as 1D vector (used for explicit vectorization) */ +const unsigned int Like1DArrayBit = 0x20; + +/** \ingroup flags + * + * means all diagonal coefficients are equal to 0 */ +const unsigned int ZeroDiagBit = 0x40; + +/** \ingroup flags + * + * means all diagonal coefficients are equal to 1 */ +const unsigned int UnitDiagBit = 0x80; + +/** \ingroup flags + * + * means the matrix is selfadjoint (M=M*). */ +const unsigned int SelfAdjointBit = 0x100; + +/** \ingroup flags + * + * means the strictly triangular lower part is 0 */ +const unsigned int UpperTriangularBit = 0x200; + +/** \ingroup flags + * + * means the strictly triangular upper part is 0 */ +const unsigned int LowerTriangularBit = 0x400; + +/** \ingroup flags + * + * means the underlying matrix data can be direclty accessed (contrary to certain + * expressions where the matrix coefficients need to be computed rather than just read from + * memory) */ +const unsigned int DirectAccessBit = 0x800; + +/** \ingroup flags + * + * means the object is just an array of scalars, and operations on it are regarded as operations + * on every of these scalars taken separately. + */ +const unsigned int ArrayBit = 0x1000; // list of flags that are inherited by default const unsigned int HereditaryBits = RowMajorBit @@ -67,11 +136,11 @@ const unsigned int UnitLower = LowerTriangularBit | UnitDiagBit; const unsigned int Diagonal = Upper | Lower; - enum { Aligned=0, UnAligned=1 }; enum { ConditionalJumpCost = 5 }; enum CornerType { TopLeft, TopRight, BottomLeft, BottomRight }; enum DirectionType { Vertical, Horizontal }; enum ProductEvaluationMode { NormalProduct, CacheFriendlyProduct, LazyProduct}; + #endif // EIGEN_CONSTANTS_H diff --git a/doc/Doxyfile.in b/doc/Doxyfile.in index 2decc8f37..b86a8c1e2 100644 --- a/doc/Doxyfile.in +++ b/doc/Doxyfile.in @@ -182,7 +182,7 @@ INHERIT_DOCS = YES # a new page for each member. If set to NO, the documentation of a member will # be part of the file/class/namespace that contains it. -SEPARATE_MEMBER_PAGES = YES +SEPARATE_MEMBER_PAGES = NO # The TAB_SIZE tag can be used to set the number of spaces in a tab. # Doxygen uses this value to replace tabs by spaces in code fragments. @@ -1177,7 +1177,8 @@ INCLUDE_FILE_PATTERNS = # instead of the = operator. PREDEFINED = EIGEN_EMPTY_STRUCT \ - EIGEN_PARSED_BY_DOXYGEN + EIGEN_PARSED_BY_DOXYGEN \ + EIGEN_VECTORIZE # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then # this tag can be used to specify a list of macro names that should be expanded.