aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src/Core/util/Constants.h
diff options
context:
space:
mode:
authorGravatar Konstantinos Margaritis <konstantinos.margaritis@freevec.org>2014-09-21 14:02:51 +0300
committerGravatar Konstantinos Margaritis <konstantinos.margaritis@freevec.org>2014-09-21 14:02:51 +0300
commit60e093a9dce2f8d4c0f3b2ea3e0386d5f01bff8d (patch)
tree05442eeff0bcfe7fe85ce59cf5fa72aa06ee2a07 /Eigen/src/Core/util/Constants.h
parent56408504e4e3fa5f9c59d9edac14ca1ba1255e5a (diff)
parent03dd4dd91a5d8963f56eebe3b9d2eb924bc06e02 (diff)
Merged eigen/eigen into default
Diffstat (limited to 'Eigen/src/Core/util/Constants.h')
-rw-r--r--Eigen/src/Core/util/Constants.h30
1 files changed, 26 insertions, 4 deletions
diff --git a/Eigen/src/Core/util/Constants.h b/Eigen/src/Core/util/Constants.h
index 31073b990..2c9fb443d 100644
--- a/Eigen/src/Core/util/Constants.h
+++ b/Eigen/src/Core/util/Constants.h
@@ -53,14 +53,13 @@ const int Infinity = -1;
const unsigned int RowMajorBit = 0x1;
/** \ingroup flags
- *
* means the expression should be evaluated by the calling expression */
const unsigned int EvalBeforeNestingBit = 0x2;
/** \ingroup flags
- *
+ * \deprecated
* means the expression should be evaluated before any assignment */
-const unsigned int EvalBeforeAssigningBit = 0x4;
+const unsigned int EvalBeforeAssigningBit = 0x4; // FIXME deprecated
/** \ingroup flags
*
@@ -155,6 +154,16 @@ const unsigned int AlignedBit = 0x80;
const unsigned int NestByRefBit = 0x100;
+/** \ingroup flags
+ *
+ * for an expression, this means that the storage order
+ * can be either row-major or column-major.
+ * The precise choice will be decided at evaluation time or when
+ * combined with other expressions.
+ * \sa \ref RowMajorBit, \ref TopicStorageOrders */
+const unsigned int NoPreferredStorageOrderBit = 0x200;
+
+
// list of flags that are inherited by default
const unsigned int HereditaryBits = RowMajorBit
| EvalBeforeNestingBit
@@ -431,7 +440,7 @@ namespace Architecture
/** \internal \ingroup enums
* Enum used as template parameter in GeneralProduct. */
-enum { CoeffBasedProductMode, LazyCoeffBasedProductMode, OuterProduct, InnerProduct, GemvProduct, GemmProduct };
+enum { DefaultProduct=0, CoeffBasedProductMode, LazyCoeffBasedProductMode, LazyProduct, OuterProduct, InnerProduct, GemvProduct, GemmProduct };
/** \internal \ingroup enums
* Enum used in experimental parallel implementation. */
@@ -440,12 +449,25 @@ enum Action {GetAction, SetAction};
/** The type used to identify a dense storage. */
struct Dense {};
+/** The type used to identify a permutation storage. */
+struct PermutationStorage {};
+
/** The type used to identify a matrix expression */
struct MatrixXpr {};
/** The type used to identify an array expression */
struct ArrayXpr {};
+// An evaluator must define its shape. By default, it can be one of the following:
+struct DenseShape { static std::string debugName() { return "DenseShape"; } };
+struct HomogeneousShape { static std::string debugName() { return "HomogeneousShape"; } };
+struct DiagonalShape { static std::string debugName() { return "DiagonalShape"; } };
+struct BandShape { static std::string debugName() { return "BandShape"; } };
+struct TriangularShape { static std::string debugName() { return "TriangularShape"; } };
+struct SelfAdjointShape { static std::string debugName() { return "SelfAdjointShape"; } };
+struct PermutationShape { static std::string debugName() { return "PermutationShape"; } };
+struct SparseShape { static std::string debugName() { return "SparseShape"; } };
+
} // end namespace Eigen
#endif // EIGEN_CONSTANTS_H