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.