10#ifndef EIGEN_FLAGGED_H
11#define EIGEN_FLAGGED_H
32template<
typename ExpressionType,
unsigned int Added,
unsigned int Removed>
33struct traits<Flagged<ExpressionType, Added, Removed> > : traits<ExpressionType>
35 enum { Flags = (ExpressionType::Flags | Added) & ~Removed };
39template<
typename ExpressionType,
unsigned int Added,
unsigned int Removed>
class Flagged
40 :
public MatrixBase<Flagged<ExpressionType, Added, Removed> >
44 typedef MatrixBase<Flagged> Base;
46 EIGEN_DENSE_PUBLIC_INTERFACE(Flagged)
47 typedef typename internal::conditional<internal::must_nest_by_value<ExpressionType>::ret,
48 ExpressionType,
const ExpressionType&>::type ExpressionTypeNested;
49 typedef typename ExpressionType::InnerIterator InnerIterator;
51 inline Flagged(
const ExpressionType& matrix) : m_matrix(matrix) {}
53 inline Index rows()
const {
return m_matrix.rows(); }
54 inline Index cols()
const {
return m_matrix.cols(); }
55 inline Index outerStride()
const {
return m_matrix.outerStride(); }
56 inline Index innerStride()
const {
return m_matrix.innerStride(); }
60 return m_matrix.coeff(
row,
col);
63 inline CoeffReturnType coeff(
Index index)
const
65 return m_matrix.coeff(index);
70 return m_matrix.const_cast_derived().coeffRef(
row,
col);
73 inline const Scalar& coeffRef(
Index index)
const
75 return m_matrix.const_cast_derived().coeffRef(index);
80 return m_matrix.const_cast_derived().coeffRef(
row,
col);
83 inline Scalar& coeffRef(
Index index)
85 return m_matrix.const_cast_derived().coeffRef(index);
88 template<
int LoadMode>
91 return m_matrix.template packet<LoadMode>(
row,
col);
94 template<
int LoadMode>
97 m_matrix.const_cast_derived().template writePacket<LoadMode>(
row,
col, x);
100 template<
int LoadMode>
101 inline const PacketScalar packet(
Index index)
const
103 return m_matrix.template packet<LoadMode>(index);
106 template<
int LoadMode>
107 inline void writePacket(
Index index,
const PacketScalar& x)
109 m_matrix.const_cast_derived().template writePacket<LoadMode>(index, x);
112 const ExpressionType& _expression()
const {
return m_matrix; }
114 template<
typename OtherDerived>
115 typename ExpressionType::PlainObject solveTriangular(
const MatrixBase<OtherDerived>& other)
const;
117 template<
typename OtherDerived>
118 void solveTriangularInPlace(
const MatrixBase<OtherDerived>& other)
const;
121 ExpressionTypeNested m_matrix;
130template<
typename Derived>
131template<
unsigned int Added,
unsigned int Removed>
132inline const Flagged<Derived, Added, Removed>
internal::traits< Flagged< ExpressionType, Added, Removed > >::Index Index
Definition DenseBase.h:51
ColXpr col(Index i)
Definition DenseBase.h:553
RowXpr row(Index i)
Definition DenseBase.h:570
const Flagged< Derived, Added, Removed > flagged() const
Definition Flagged.h:133
Base class for all dense matrices, vectors, and expressions.
Definition MatrixBase.h:50