29#ifndef HPP_CONSTRAINTS_MATRIX_VIEW_HH
30#define HPP_CONSTRAINTS_MATRIX_VIEW_HH
39#define HPP_EIGEN_USE_EVALUATOR EIGEN_VERSION_AT_LEAST(3, 2, 92)
65 template <
typename Derived>
67 const Eigen::ArrayBase<Derived>& array);
123template <
typename ArgType,
int _Rows,
int _Cols,
bool _allRows,
bool _allCols>
136template <
bool _allRows = false,
bool _allCols = false>
141template <
bool _allRows = false,
bool _allCols = false>
145template <
bool condition>
147 template <
class Then,
class Else>
148 static constexpr inline Then&
rr(Then& f, Else&) {
151 template <
class Then,
class Else>
152 static constexpr inline Then
pp(Then f, Else) {
158 template <
class Then,
class Else>
159 static constexpr inline Else&
rr(Then&, Else& s) {
162 template <
class Then,
class Else>
163 static constexpr inline Else
pp(Then, Else s) {
171 template <
typename In_t>
173 template <
typename In0_t,
typename In1_t>
179template <
bool _allRows,
bool _allCols>
190template <
bool _allRows,
bool _allCols>
201template <
typename ArgType,
int _Rows,
int _Cols,
bool _allRows,
bool _allCols>
203#if HPP_EIGEN_USE_EVALUATOR
204 typedef typename ArgType::StorageIndex StorageIndex;
206 typedef typename ArgType::Index
Index;
209 typedef typename traits<ArgType>::XprKind
XprKind;
212#if !HPP_EIGEN_USE_EVALUATOR
215 Flags = ~PacketAccessBit & ~DirectAccessBit & ~ActualPacketAccessBit &
216 ~LinearAccessBit & ArgType::Flags,
224#if HPP_EIGEN_USE_EVALUATOR
225template <
typename Derived,
typename ArgType,
int _Rows,
int _Cols,
226 bool _allRows,
bool _allCols,
typename Functor,
typename Scalar>
227struct Assignment<Derived,
229 Functor, Dense2Dense, Scalar> {
232 static EIGEN_STRONG_INLINE
void run(Derived& dst,
const OtherDerived& src,
233 const Functor& func) {
234 dst.resize(src.rows(), src.cols());
235 typedef Block<Derived> BlockDerived;
236 typedef Assignment<BlockDerived,
typename OtherDerived::BlockConstXprType,
239 for (
typename OtherDerived::block_iterator b(src); b.valid(); ++b) {
240 BlockDerived bdst(dst.block(b.ro(), b.co(), b.rs(), b.cs()));
241 AssignmentType::run(bdst, src._block(b), func);
246template <
typename Derived,
typename ArgType,
int _Rows,
int _Cols,
247 bool _allRows,
bool _allCols>
248struct assign_selector<
249 Derived,
MatrixBlockView<ArgType, _Rows, _Cols, _allRows, _allCols>, false,
253 static EIGEN_STRONG_INLINE Derived&
run(Derived& dst,
258 template <
typename ActualDerived,
typename ActualOtherDerived>
259 static EIGEN_STRONG_INLINE Derived&
evalTo(ActualDerived& dst,
260 const ActualOtherDerived& other) {
265template <
typename Derived,
typename ArgType,
int _Rows,
int _Cols,
266 bool _allRows,
bool _allCols>
267struct assign_selector<
268 Derived,
MatrixBlockView<ArgType, _Rows, _Cols, _allRows, _allCols>, false,
272 static EIGEN_STRONG_INLINE Derived&
run(Derived& dst,
274 other.
writeTo(dst.transpose());
277 template <
typename ActualDerived,
typename ActualOtherDerived>
278 static EIGEN_STRONG_INLINE Derived&
evalTo(ActualDerived& dst,
279 const ActualOtherDerived& other) {
280 Transpose<ActualDerived> dstTrans(dst);
281 other.evalTo(dstTrans);
287template <
typename Src,
typename Dst>
289template <
typename Src,
typename _ArgType,
int _Rows,
int _Cols,
bool _allRows,
295 static void run(
const Src& src,
Dst& dst) {
296 for (
typename Dst::block_iterator b(dst); b.valid(); ++b)
297 dst.
_block(b) = src.block(b.ro(), b.co(), b.rs(), b.cs());
300template <
typename _ArgType,
int _Rows,
int _Cols,
bool _allRows,
bool _allCols,
306 static void run(
const Src& src, Dst& dst) {
307 for (
typename Src::block_iterator b(src); b.valid(); ++b)
308 dst.block(b.ro(), b.co(), b.rs(), b.cs()) = src.
_block(b);
311template <
typename _ArgType,
int _Rows,
int _Cols,
bool _allRows,
bool _allCols,
312 typename _ArgType2,
int _Rows2,
int _Cols2,
bool _allRows2,
321 typename Dst::block_iterator db(dst);
322 for (
typename Src::block_iterator sb(src); sb.valid(); ++sb) {
331template <
typename ReturnType,
typename View,
bool AllRows = View::AllRows,
332 bool AllCols = View::AllCols>
335 template <
typename Derived>
338 return ReturnType(
d, r, c, rs, cs);
341template <
typename ReturnType,
typename View>
344 template <
typename Derived>
347 return d.middleRows(r, rs);
350template <
typename ReturnType,
typename View>
353 template <
typename Derived>
356 return d.middleCols(c, cs);
361 template <
typename BlockIndexType>
362 static void run(std::ostream&,
const BlockIndexType&) {}
365 template <
typename BlockIndexType>
366 static void run(std::ostream& os,
const BlockIndexType& bi) {
367 for (std::size_t i = 0; i < bi.size(); ++i)
368 os <<
"[ " << bi[i].first <<
", " << bi[i].second <<
"], ";
372#if HPP_EIGEN_USE_EVALUATOR
373template <
typename ArgType,
int _Rows,
int _Cols,
bool _allRows,
bool _allCols>
374struct unary_evaluator<
377 MatrixBlockView<ArgType, _Rows, _Cols, _allRows, _allCols> > {
379 typedef typename XprType::Scalar Scalar;
382 CoeffReadCost = evaluator<ArgType>::CoeffReadCost,
383 Flags = ~PacketAccessBit & ~DirectAccessBit & ~ActualPacketAccessBit &
384 ~LinearAccessBit & ArgType::Flags,
387 EIGEN_DEVICE_FUNC
explicit unary_evaluator(
const XprType& view)
390 const XprType& m_view;
395#define EIGEN_MATRIX_BLOCKS_PUBLIC_INTERFACE(Derived) \
396 enum { AllRows = _allRows, AllCols = _allCols }; \
397 typedef MatrixBlocksBase<Derived> Base; \
398 typedef typename Base::size_type size_type; \
399 typedef typename Base::segments_t segments_t; \
400 typedef typename Base::segment_t segment_t; \
401 typedef typename Base::RowIndices_t RowIndices_t; \
402 typedef typename Base::ColIndices_t ColIndices_t;
407template <
typename Derived>
425 template <
typename MatrixType,
int _Rows = MatrixType::RowsAtCompileTime,
426 int _Cols = MatrixType::ColsAtCompileTime>
431 Derived
const&
derived()
const {
return static_cast<Derived const&
>(*this); }
432 Derived&
derived() {
return static_cast<Derived&
>(*this); }
438 template <
typename MatrixType>
440 const MatrixBase<MatrixType>& other)
const {
441 MatrixType& o =
const_cast<MatrixBase<MatrixType>&
>(other).
derived();
442 if (Derived::OneDimension)
453 template <
typename MatrixType>
455 const MatrixBase<MatrixType>& other)
const {
456 if (Derived::OneDimension)
546template <
bool _allRows,
bool _allCols>
602 :
m_nbRows(_allRows ? 0 : idx.second),
603 m_nbCols(_allCols ? 0 : idx.second),
608 template <
typename MBDerived>
614 EIGEN_STATIC_ASSERT((
bool(
AllRows) ==
bool(MBDerived::AllRows)) &&
615 (
bool(
AllCols) ==
bool(MBDerived::AllCols)),
616 YOU_MIXED_MATRICES_OF_DIFFERENT_SIZES);
660 template <
bool Sort,
bool Shrink,
bool Cardinal>
669 template <
bool Sort,
bool Shrink,
bool Cardinal>
690 template <
bool Sort,
bool Shrink,
bool Cardinal>
692 update<Sort, Shrink, Cardinal>(
702 template <
bool Sort,
bool Shrink,
bool Cardinal>
711template <
bool _allRows,
bool _allCols>
713 :
public MatrixBlocksBase<MatrixBlocksRef<_allRows, _allCols> > {
721 MatrixBlocksRef(
const size_type& nbRows,
const RowIndices_t& rows,
722 const size_type& nbCols,
const ColIndices_t& cols)
723 : m_nbRows(nbRows), m_nbCols(nbCols), m_rows(rows), m_cols(cols) {}
726 template <
typename Derived1,
typename Derived2>
727 MatrixBlocksRef(
const MatrixBlocksBase<Derived1>& rows,
728 const MatrixBlocksBase<Derived2>& cols)
729 : m_nbRows(rows.nbIndices()),
730 m_nbCols(cols.nbIndices()),
731 m_rows(rows.indices()),
732 m_cols(cols.indices()) {
734 bool(Derived1::OneDimension) &&
bool(Derived2::OneDimension),
735 YOU_MIXED_MATRICES_OF_DIFFERENT_SIZES);
743 MatrixBlocksRef(
const size_type& nidx,
const segments_t& idx)
744 : m_nbRows(_allRows ? 0 : nidx),
745 m_nbCols(_allCols ? 0 : nidx),
750 MatrixBlocksRef(
const MatrixBlocksRef& other)
752 m_nbRows(other.nbRows()),
753 m_nbCols(other.nbCols()),
754 m_rows(other.rows()),
755 m_cols(other.cols()) {}
759 inline const RowIndices_t& rows()
const {
return m_rows; }
763 inline const ColIndices_t& cols()
const {
return m_cols; }
767 inline const size_type& nbRows()
const {
return m_nbRows; }
771 inline const size_type& nbCols()
const {
return m_nbCols; }
779template <
typename Derived>
783 typename internal::conditional<Derived::AllRows,
787 typename internal::conditional<Derived::AllCols,
790 if (!Derived::AllRows) {
792 row_printer::run(os, mbi.
rows());
795 if (!Derived::AllCols) {
797 col_printer::run(os, mbi.
cols());
831template <
typename _ArgType,
int _Rows = _ArgType::RowsAtCompileTime,
832 int _Cols = _ArgType::ColsAtCompileTime,
bool _allRows =
false,
833 bool _allCols =
false>
836 MatrixBlockView<_ArgType, _Rows, _Cols, _allRows, _allCols> > {
843 internal::variable_if_dynamic<
size_type, (_allRows ? 0 : Dynamic)>
_ro;
844 internal::variable_if_dynamic<
size_type, (_allCols ? 0 : Dynamic)>
_co;
915 typedef Matrix<Scalar, RowsAtCompileTime, ColsAtCompileTime>
PlainObject;
923 template <typename Derived>
925 typedef Block<Derived,
926 (
AllRows ? Derived::RowsAtCompileTime : Eigen::Dynamic),
927 (
AllCols ? Derived::ColsAtCompileTime : Eigen::Dynamic),
928 (
AllCols ? (bool)Derived::IsRowMajor
929 : (
AllRows ? (bool)!Derived::IsRowMajor :
false))>
967 "It is not possible to access the coefficients of "
968 "MatrixBlockView this way.");
973 "It is not possible to access the coefficients of "
974 "MatrixBlockView this way.");
978 "It is not possible to access the coefficients of "
979 "MatrixBlockView this way.");
983 "It is not possible to access the coefficients of "
984 "MatrixBlockView this way.");
986 template <
typename Dest>
987 EIGEN_STRONG_INLINE
void evalTo(Dest& dst)
const {
991 template <
typename Dest>
992 EIGEN_STRONG_INLINE
void writeTo(Dest& dst)
const {
1003 template <
typename OtherDerived>
1005 const EigenBase<OtherDerived>& other) {
1006 EIGEN_STATIC_ASSERT_LVALUE(
ArgType);
1008 other.derived(), *
this);
1029 return block_iterator(*
this);
1033 const RealScalar& prec = NumTraits<Scalar>::dummy_precision())
const {
1034 for (block_iterator block(*
this); block.valid(); ++block)
1035 if (!
m_arg.block(block.ri(), block.ci(), block.rs(), block.cs())
1043 for (block_iterator block(*
this); block.valid(); ++block)
1062#undef HPP_EIGEN_USE_EVALUATOR
1065template <
int Option>
1068 return os <<
"[ " << s.first <<
", " << s.first + s.second <<
" ]";
Definition matrix-view.hh:836
block_t< constArgType >::type BlockConstXprType
Definition matrix-view.hh:933
internal::remove_all< ArgType >::type NestedExpression
Definition matrix-view.hh:919
MatrixBlockView(ArgType &arg, const size_type &nbIndices, const Indices_t &indices)
Valid only when _allRows or _allCols is true.
Definition matrix-view.hh:954
internal::conditional< _allCols, constinternal::empty_struct, constIndices_t & >::type ColIndices_t
Definition matrix-view.hh:940
internal::ref_selector< ArgType >::type ArgTypeNested
Definition matrix-view.hh:918
EIGEN_STRONG_INLINE void writeTo(Dest &dst) const
Definition matrix-view.hh:992
EIGEN_STRONG_INLINE size_type _blocks() const
Definition matrix-view.hh:1012
EIGEN_STRONG_INLINE BlockXprType _block(const block_iterator &b)
Definition matrix-view.hh:1015
EIGEN_STRONG_INLINE size_type cols() const
Definition matrix-view.hh:963
EIGEN_STRONG_INLINE block_iterator _block_iterator() const
Definition matrix-view.hh:1028
ArgType & m_arg
Definition matrix-view.hh:1048
EIGEN_STRONG_INLINE bool isZero(const RealScalar &prec=NumTraits< Scalar >::dummy_precision()) const
Definition matrix-view.hh:1032
EIGEN_STRONG_INLINE const BlockConstXprType _block(const block_iterator &b) const
Definition matrix-view.hh:1022
hpp::constraints::size_type size_type
Definition matrix-view.hh:838
EIGEN_STRONG_INLINE PlainObject eval() const
Definition matrix-view.hh:997
RowIndices_t m_rows
Definition matrix-view.hh:1050
@ AllCols
Definition matrix-view.hh:839
@ Cols
Definition matrix-view.hh:839
@ Rows
Definition matrix-view.hh:839
@ AllRows
Definition matrix-view.hh:839
block_t< ArgType >::type BlockXprType
Definition matrix-view.hh:932
internal::conditional< _allRows, constinternal::empty_struct, constIndices_t & >::type RowIndices_t
Definition matrix-view.hh:938
ColIndices_t m_cols
Definition matrix-view.hh:1052
size_type m_nbRows
Definition matrix-view.hh:1049
EIGEN_STRONG_INLINE size_type rows() const
Definition matrix-view.hh:962
MatrixBlocks< _allRows, _allCols > MatrixIndices_t
Definition matrix-view.hh:935
EIGEN_STRONG_INLINE MatrixBlockView & setZero()
Definition matrix-view.hh:1041
EIGEN_STRONG_INLINE Scalar & coeffRef(size_type row, const size_type &col)
Definition matrix-view.hh:981
matrix_t ArgType
Definition matrix-view.hh:917
size_type m_nbCols
Definition matrix-view.hh:1051
EIGEN_STRONG_INLINE MatrixBlockView & operator=(const EigenBase< OtherDerived > &other)
Definition matrix-view.hh:1004
MatrixBlockView(ArgType &arg, const size_type &nbRows, const RowIndices_t rows, const size_type &nbCols, const ColIndices_t cols)
Definition matrix-view.hh:944
Matrix< Scalar, RowsAtCompileTime, ColsAtCompileTime > PlainObject
Definition matrix-view.hh:915
MatrixIndices_t::segments_t Indices_t
Definition matrix-view.hh:936
EIGEN_STRONG_INLINE CoeffReturnType coeff(size_type row, size_type col) const
Definition matrix-view.hh:970
EIGEN_STRONG_INLINE void evalTo(Dest &dst) const
Definition matrix-view.hh:987
EIGEN_STRONG_INLINE Scalar & coeffRef(size_type index)
Definition matrix-view.hh:976
EIGEN_STRONG_INLINE CoeffReturnType coeff(size_type index) const
Definition matrix-view.hh:965
EIGEN_STRONG_INLINE MatrixBlockView & setConstant(const Scalar &value)
Definition matrix-view.hh:1042
MatrixBase< MatrixBlockView< matrix_t, _Rows, _Cols, _allRows, _allCols > > Base
Definition matrix-view.hh:912
Definition matrix-view.hh:408
internal::traits< Derived >::RowIndices_t RowIndices_t
Definition matrix-view.hh:421
EIGEN_STRONG_INLINE View< MatrixType >::type lview(const MatrixBase< MatrixType > &other) const
Definition matrix-view.hh:439
MatrixBlocks< AllRows, AllCols > middleRows(size_type i, size_type ni) const
Definition matrix-view.hh:525
BlockIndex::segments_t segments_t
vector of segments
Definition matrix-view.hh:420
MatrixBlocksBase(const MatrixBlocksBase &)
Copy constructor.
Definition matrix-view.hh:543
const RowIndices_t & rows() const
Definition matrix-view.hh:490
MatrixBlocksBase()
Empty constructor.
Definition matrix-view.hh:540
EIGEN_STRONG_INLINE View< constMatrixType >::type rview(const MatrixBase< MatrixType > &other) const
Definition matrix-view.hh:454
BlockIndex::segment_t segment_t
Interval of indices [first, first + second - 1].
Definition matrix-view.hh:418
const segments_t & indices() const
Definition matrix-view.hh:484
MatrixBlocks< AllRows, AllCols > block(size_type i, size_type j, size_type ni, size_type nj) const
Definition matrix-view.hh:516
hpp::constraints::size_type size_type
Index of vector or matrix.
Definition matrix-view.hh:416
MatrixBlocksRef< AllCols, AllRows > transpose() const
Definition matrix-view.hh:464
internal::traits< Derived >::ColIndices_t ColIndices_t
Definition matrix-view.hh:422
const size_type & nbIndices() const
Definition matrix-view.hh:501
@ OneDimension
Definition matrix-view.hh:413
@ AllRows
Definition matrix-view.hh:411
@ AllCols
Definition matrix-view.hh:412
MatrixBlocksRef< AllRows, true > keepRows() const
Definition matrix-view.hh:469
Derived & derived()
Definition matrix-view.hh:432
const ColIndices_t & cols() const
Definition matrix-view.hh:494
const size_type & nbCols() const
Definition matrix-view.hh:511
MatrixBlocks< AllRows, AllCols > middleCols(size_type j, size_type nj) const
Definition matrix-view.hh:533
const size_type & nbRows() const
Definition matrix-view.hh:507
MatrixBlocksRef< true, AllCols > keepCols() const
Definition matrix-view.hh:474
Derived const & derived() const
Definition matrix-view.hh:431
Definition matrix-view.hh:142
Definition matrix-view.hh:548
void updateCols()
Definition matrix-view.hh:670
MatrixBlocks(const segments_t &idx)
Definition matrix-view.hh:591
void addRow(const size_type &row, const size_type size)
Definition matrix-view.hh:643
const ColIndices_t & cols() const
Definition matrix-view.hh:680
const RowIndices_t & rows() const
Definition matrix-view.hh:676
MatrixBlocks(const segment_t &idx)
Definition matrix-view.hh:601
MatrixBlocks(const MatrixBlocks &other)=default
size_type m_nbCols
Definition matrix-view.hh:697
void updateIndices()
Definition matrix-view.hh:691
void updateRows()
Definition matrix-view.hh:661
MatrixBlocks()
Empty constructor.
Definition matrix-view.hh:553
void clearCols()
Clear cols.
Definition matrix-view.hh:635
MatrixBlocks & operator=(const MatrixBlocks &other)
Definition matrix-view.hh:621
const size_type & nbCols() const
Definition matrix-view.hh:688
MatrixBlocks(const size_type &nbRows, const RowIndices_t &rows, const size_type &nbCols, const ColIndices_t &cols)
Definition matrix-view.hh:571
MatrixBlocks(const segments_t &rows, const segments_t &cols)
Definition matrix-view.hh:559
void addCol(const size_type &col, const size_type size)
Definition matrix-view.hh:651
const size_type & nbRows() const
Definition matrix-view.hh:684
ColIndices_t m_cols
Definition matrix-view.hh:699
RowIndices_t m_rows
Definition matrix-view.hh:698
MatrixBlocks(size_type start, size_type size)
Definition matrix-view.hh:580
size_type m_nbRows
Definition matrix-view.hh:697
MatrixBlocks(const MatrixBlocksBase< MBDerived > &other)
Copy constructor.
Definition matrix-view.hh:609
void clearRows()
Clear rows.
Definition matrix-view.hh:629
#define EIGEN_MATRIX_BLOCKS_PUBLIC_INTERFACE(Derived)
Definition matrix-view.hh:395
Definition matrix-view-operation.hh:148
assert(d.lhs()._blocks()==d.rhs()._blocks())
const Derived & d
Definition matrix-view-operation.hh:138
Definition active-set-differentiable-function.hh:37
std::pair< size_type, size_type > segment_t
Definition fwd.hh:84
pinocchio::size_type size_type
Definition fwd.hh:48
std::vector< segment_t > segments_t
Definition fwd.hh:86
matrix_t::Index size_type
HPP_UTIL_DLLAPI std::ostream & iendl(std::ostream &o)
Definition matrix-view.hh:49
static void shrink(segments_t &a)
static segments_t fromLogicalExpression(const Eigen::ArrayBase< Derived > &array)
Definition matrix-view.hh:31
hpp::constraints::size_type size_type
Index of vector or matrix.
Definition matrix-view.hh:51
static segments_t difference(const segments_t &a, const segments_t &b)
static segments_t difference(const segment_t &a, const segment_t &b)
Compute the set difference between two segments.
static segments_t split(segments_t &segments, const size_type &cardinal)
static void sort(segments_t &a)
hpp::constraints::segment_t segment_t
Interval of indices [first, first + second - 1].
Definition matrix-view.hh:53
hpp::constraints::segments_t segments_t
vector of segments
Definition matrix-view.hh:55
static segments_t sum(const segment_t &a, const segment_t &b)
Compute the union of tws segments.
static size_type cardinal(const segments_t &a)
static void add(segments_t &a, const segment_t &b)
In place addition of a segment_t to segments_t.
static segments_t extract(const segments_t &segments, size_type start, size_type cardinal)
static bool overlap(const segment_t &a, const segment_t &b)
Whether two segments overlap.
static void add(segments_t &a, const segments_t &b)
In place addition of segments_t to segments_t.
static segments_t difference(const segments_t &a, const segment_t &b)
static segments_t difference(const segment_t &a, const segments_t &b)
size_type row
Definition matrix-view.hh:842
size_type col
Definition matrix-view.hh:842
block_iterator operator++(int)
Definition matrix-view.hh:900
size_type rs() const
number of RowS
Definition matrix-view.hh:864
size_type ri() const
Row in the Input matrix
Definition matrix-view.hh:852
internal::variable_if_dynamic< size_type,(_allRows ? 0 :Dynamic)> _ro
Definition matrix-view.hh:843
block_iterator(const MatrixBlockView &v)
Definition matrix-view.hh:845
size_type co() const
Col in the Output matrix
Definition matrix-view.hh:850
size_type cs() const
number of ColS
Definition matrix-view.hh:870
size_type ro() const
Row in the Output matrix
Definition matrix-view.hh:848
size_type ci() const
Col in the Input matrix
Definition matrix-view.hh:858
block_iterator & operator++()
Definition matrix-view.hh:876
constexpr bool valid() const
Definition matrix-view.hh:905
internal::variable_if_dynamic< size_type,(_allCols ? 0 :Dynamic)> _co
Definition matrix-view.hh:844
const MatrixBlockView & view
Definition matrix-view.hh:841
Definition matrix-view.hh:924
Block< Derived,(AllRows ? Derived::RowsAtCompileTime :Eigen::Dynamic),(AllCols ? Derived::ColsAtCompileTime :Eigen::Dynamic),(AllCols ?(bool) Derived::IsRowMajor :(AllRows ?(bool)!Derived::IsRowMajor :false))> type
Definition matrix-view.hh:930
Smaller matrix composed by concatenation of the blocks.
Definition matrix-view.hh:427
MatrixBlockView< MatrixType, _Rows, _Cols, AllRows, AllCols > type
Definition matrix-view.hh:428
View::size_type size_type
Definition matrix-view.hh:343
static ReturnType run(Derived &d, size_type r, size_type, size_type rs, size_type)
Definition matrix-view.hh:345
View::size_type size_type
Definition matrix-view.hh:352
static ReturnType run(Derived &d, size_type, size_type c, size_type, size_type cs)
Definition matrix-view.hh:354
Definition matrix-view.hh:333
View::size_type size_type
Definition matrix-view.hh:334
static ReturnType run(Derived &d, size_type r, size_type c, size_type rs, size_type cs)
Definition matrix-view.hh:336
static EIGEN_STRONG_INLINE Derived & evalTo(ActualDerived &dst, const ActualOtherDerived &other)
Definition matrix-view.hh:278
static EIGEN_STRONG_INLINE Derived & run(Derived &dst, const OtherDerived &other)
Definition matrix-view.hh:272
MatrixBlockView< ArgType, _Rows, _Cols, _allRows, _allCols > OtherDerived
Definition matrix-view.hh:271
static EIGEN_STRONG_INLINE Derived & run(Derived &dst, const OtherDerived &other)
Definition matrix-view.hh:253
static EIGEN_STRONG_INLINE Derived & evalTo(ActualDerived &dst, const ActualOtherDerived &other)
Definition matrix-view.hh:259
MatrixBlockView< ArgType, _Rows, _Cols, _allRows, _allCols > OtherDerived
Definition matrix-view.hh:252
Definition matrix-view.hh:360
static void run(std::ostream &, const BlockIndexType &)
Definition matrix-view.hh:362
Definition matrix-view.hh:168
constexpr empty_struct(In0_t, In1_t)
Definition matrix-view.hh:174
constexpr const Index & operator[](const Index &i) const
Definition matrix-view.hh:176
static constexpr Index size()
Definition matrix-view.hh:175
MatrixXd::Index Index
Definition matrix-view.hh:169
constexpr empty_struct()=default
constexpr empty_struct(In_t)
Definition matrix-view.hh:172
static void run(const Src &src, Dst &dst)
Definition matrix-view.hh:320
MatrixBlockView< _ArgType2, _Rows2, _Cols2, _allRows2, _allCols2 > Dst
Definition matrix-view.hh:319
MatrixBlockView< _ArgType, _Rows, _Cols, _allRows, _allCols > Src
Definition matrix-view.hh:318
MatrixBlockView< _ArgType, _Rows, _Cols, _allRows, _allCols > Src
Definition matrix-view.hh:305
static void run(const Src &src, Dst &dst)
Definition matrix-view.hh:306
static void run(const Src &src, Dst &dst)
Definition matrix-view.hh:295
MatrixBlockView< _ArgType, _Rows, _Cols, _allRows, _allCols > Dst
Definition matrix-view.hh:294
Definition matrix-view.hh:288
Definition matrix-view.hh:364
static void run(std::ostream &os, const BlockIndexType &bi)
Definition matrix-view.hh:366
static constexpr Else & rr(Then &, Else &s)
Definition matrix-view.hh:159
static constexpr Else pp(Then, Else s)
Definition matrix-view.hh:163
Definition matrix-view.hh:146
static constexpr Then & rr(Then &f, Else &)
Definition matrix-view.hh:148
static constexpr Then pp(Then f, Else)
Definition matrix-view.hh:152
traits< ArgType >::StorageKind StorageKind
Definition matrix-view.hh:208
@ MaxRowsAtCompileTime
Definition matrix-view.hh:219
@ Flags
Definition matrix-view.hh:215
@ MaxColsAtCompileTime
Definition matrix-view.hh:220
@ CoeffReadCost
Definition matrix-view.hh:213
@ ColsAtCompileTime
Definition matrix-view.hh:218
@ RowsAtCompileTime
Definition matrix-view.hh:217
traits< ArgType >::XprKind XprKind
Definition matrix-view.hh:209
ArgType::Scalar Scalar
Definition matrix-view.hh:210
ArgType::Index Index
Definition matrix-view.hh:206
internal::conditional< _allRows, internal::empty_struct, constBlockIndex::segments_t & >::type RowIndices_t
Definition matrix-view.hh:195
@ AllCols
Definition matrix-view.hh:192
@ AllRows
Definition matrix-view.hh:192
internal::conditional< _allCols, internal::empty_struct, constBlockIndex::segments_t & >::type ColIndices_t
Definition matrix-view.hh:198
@ AllCols
Definition matrix-view.hh:181
@ AllRows
Definition matrix-view.hh:181
internal::conditional< _allRows, internal::empty_struct, BlockIndex::segments_t >::type RowIndices_t
Definition matrix-view.hh:184
internal::conditional< _allCols, internal::empty_struct, BlockIndex::segments_t >::type ColIndices_t
Definition matrix-view.hh:187
static std::ostream & run(std::ostream &os, const constraints::segment_t &s)
Definition matrix-view.hh:1067