11 #ifndef EIGEN_XPRHELPER_H 12 #define EIGEN_XPRHELPER_H 17 #if (defined __GNUG__) && !((__GNUC__==4) && (__GNUC_MINOR__==3)) 18 #define EIGEN_EMPTY_STRUCT_CTOR(X) \ 19 EIGEN_STRONG_INLINE X() {} \ 20 EIGEN_STRONG_INLINE X(const X& ) {} 22 #define EIGEN_EMPTY_STRUCT_CTOR(X) 39 template<
typename I1,
typename I2>
54 static T
value() {
return T(Value); }
64 T
value()
const {
return m_value; }
75 static T
value() {
return T(Value); }
85 T
value()
const {
return m_value; }
107 template<
typename _Scalar,
int _Rows,
int _Cols,
112 int _MaxRows = _Rows,
117 IsColVector = _Cols==1 && _Rows!=1,
118 IsRowVector = _Rows==1 && _Cols!=1,
127 template<
typename Scalar,
int Rows,
int Cols,
int Options,
int MaxRows,
int MaxCols>
138 #if EIGEN_ALIGN_STATICALLY 139 ((!is_dynamic_size_storage) && (((MaxCols*MaxRows*
int(
sizeof(Scalar))) % 16) == 0))
147 is_dynamic_size_storage
170 template<typename T, typename StorageKind = typename traits<T>::StorageKind>
struct plain_matrix_type;
203 template<typename T, typename StorageKind = typename traits<T>::StorageKind>
struct eval;
219 template<
typename _Scalar,
int _Rows,
int _Cols,
int _Options,
int _MaxRows,
int _MaxCols>
225 template<
typename _Scalar,
int _Rows,
int _Cols,
int _Options,
int _MaxRows,
int _MaxCols>
275 template <
typename T>
286 template<
typename T1,
typename T2>
316 template<typename T, int n=1, typename PlainObject = typename eval<T>::type>
struct nested 324 DynamicAsInteger = 10000,
326 ScalarReadCostAsInteger = ScalarReadCost ==
Dynamic ? int(DynamicAsInteger) : int(ScalarReadCost),
327 CoeffReadCost =
traits<T>::CoeffReadCost,
328 CoeffReadCostAsInteger = CoeffReadCost ==
Dynamic ? int(DynamicAsInteger) : int(CoeffReadCost),
329 NAsInteger = n ==
Dynamic ? int(DynamicAsInteger) : n,
330 CostEvalAsInteger = (NAsInteger+1) * ScalarReadCostAsInteger + CoeffReadCostAsInteger,
331 CostNoEvalAsInteger = NAsInteger * CoeffReadCostAsInteger
336 int(CostEvalAsInteger) < int(CostNoEvalAsInteger)
346 return const_cast<T*
>(ptr);
349 template<typename Derived, typename XprKind = typename traits<Derived>::XprKind>
355 template<
typename Derived>
361 template<
typename Derived>
369 template<
typename Derived,
typename Scalar,
typename OtherScalar,
378 template<
typename Derived,
typename Scalar,
typename OtherScalar>
384 return CwiseUnaryOp<scalar_multiple2_op<Scalar,OtherScalar>, Derived>
388 inline friend const CwiseUnaryOp<scalar_multiple2_op<Scalar,OtherScalar>, Derived>
389 operator*(
const OtherScalar& scalar,
const Derived& matrix)
412 template<
typename ExpressionType,
typename Scalar =
typename ExpressionType::Scalar>
415 typedef Matrix<Scalar, 1, ExpressionType::ColsAtCompileTime,
417 typedef Array<Scalar, 1, ExpressionType::ColsAtCompileTime,
427 template<
typename ExpressionType,
typename Scalar =
typename ExpressionType::Scalar>
430 typedef Matrix<Scalar, ExpressionType::RowsAtCompileTime, 1,
432 typedef Array<Scalar, ExpressionType::RowsAtCompileTime, 1,
442 template<
typename ExpressionType,
typename Scalar =
typename ExpressionType::Scalar>
458 template<
typename ExpressionType>
469 #endif // EIGEN_XPRHELPER_H
Matrix< Scalar, ExpressionType::RowsAtCompileTime, 1, ExpressionType::PlainObject::Options &~RowMajor, ExpressionType::MaxRowsAtCompileTime, 1 > MatrixColType
ArrayBase< Derived > type
conditional< bool(traits< T >::Flags &NestByRefBit), T const &, const T >::type type
#define EIGEN_EMPTY_STRUCT_CTOR(X)
#define EIGEN_ONLY_USED_FOR_DEBUG(x)
plain_matrix_type< T >::type type
#define EIGEN_DEFAULT_DENSE_INDEX_TYPE
variable_if_dynamicindex(T value)
const CwiseUnaryOp< scalar_multiple2_op< Scalar, OtherScalar >, Derived > operator*(const OtherScalar &scalar) const
T * const_cast_ptr(const T *ptr)
remove_all< CastType >::type _CastType
const unsigned int DirectAccessBit
const Matrix< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols > & type
const unsigned int LvalueBit
conditional< bool(internal::is_const< T1 >::value), typename internal::add_const_on_value_type< T2 >::type, T2 >::type type
Holds information about the various numeric (i.e. scalar) types allowed by Eigen. ...
const internal::permut_matrix_product_retval< PermutationDerived, Derived, OnTheRight > operator*(const MatrixBase< Derived > &matrix, const PermutationBase< PermutationDerived > &permutation)
#define EIGEN_DEFAULT_MATRIX_STORAGE_ORDER_OPTION
#define EIGEN_SIZE_MIN_PREFER_FIXED(a, b)
const unsigned int RowMajorBit
const unsigned int PacketAccessBit
const unsigned int AlignedBit
conditional< is_same< typename traits< ExpressionType >::XprKind, MatrixXpr >::value, MatrixRowType, ArrayRowType >::type type
Matrix< Scalar, 1, ExpressionType::ColsAtCompileTime, ExpressionType::PlainObject::Options|RowMajor, 1, ExpressionType::MaxColsAtCompileTime > MatrixRowType
friend const CwiseUnaryOp< scalar_multiple2_op< Scalar, OtherScalar >, Derived > operator*(const OtherScalar &scalar, const Derived &matrix)
Array< Scalar, diag_size, 1, ExpressionType::PlainObject::Options &~RowMajor, max_diag_size, 1 > ArrayDiagType
Base class for all 1D and 2D array, and related expressions.
plain_matrix_type_dense< T, typename traits< T >::XprKind >::type type
const Array< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols > & type
Matrix< _Scalar, _Rows, _Cols, Options, _MaxRows, _MaxCols > type
const unsigned int NestByRefBit
EIGEN_DEFAULT_DENSE_INDEX_TYPE DenseIndex
variable_if_dynamicindex()
_CastType::Scalar NewScalarType
Array< Scalar, 1, ExpressionType::ColsAtCompileTime, ExpressionType::PlainObject::Options|RowMajor, 1, ExpressionType::MaxColsAtCompileTime > ArrayRowType
#define EIGEN_SIZE_MIN_PREFER_DYNAMIC(a, b)
conditional< is_same< CurrentScalarType, NewScalarType >::value, const XprType &, CastType >::type type
General-purpose arrays with easy API for coefficient-wise operations.
no_assignment_operator& operator=(const no_assignment_operator&)
conditional< is_same< typename traits< ExpressionType >::XprKind, MatrixXpr >::value, MatrixDiagType, ArrayDiagType >::type type
variable_if_dynamic(T value)
const unsigned int EvalBeforeNestingBit
Generic expression where a coefficient-wise unary operator is applied to an expression.
The matrix class, also used for vectors and row-vectors.
conditional< is_same< typename traits< ExpressionType >::XprKind, MatrixXpr >::value, MatrixColType, ArrayColType >::type type
Matrix< Scalar, diag_size, 1, ExpressionType::PlainObject::Options &~RowMajor, max_diag_size, 1 > MatrixDiagType
XprType::Scalar CurrentScalarType
Base class for all dense matrices, vectors, and expressions.
const unsigned int LinearAccessBit
Array< Scalar, ExpressionType::RowsAtCompileTime, 1, ExpressionType::PlainObject::Options &~RowMajor, ExpressionType::MaxRowsAtCompileTime, 1 > ArrayColType
MatrixBase< Derived > type