12 #ifndef EIGEN_PARSED_BY_DOXYGEN 15 typedef Block<Derived, internal::traits<Derived>::RowsAtCompileTime, 1, !IsRowMajor> ColXpr;
16 typedef const Block<const Derived, internal::traits<Derived>::RowsAtCompileTime, 1, !IsRowMajor> ConstColXpr;
18 typedef Block<Derived, 1, internal::traits<Derived>::ColsAtCompileTime, IsRowMajor> RowXpr;
19 typedef const Block<const Derived, 1, internal::traits<Derived>::ColsAtCompileTime, IsRowMajor> ConstRowXpr;
21 typedef Block<Derived, internal::traits<Derived>::RowsAtCompileTime,
Dynamic, !IsRowMajor> ColsBlockXpr;
22 typedef const Block<const Derived, internal::traits<Derived>::RowsAtCompileTime,
Dynamic, !IsRowMajor> ConstColsBlockXpr;
24 typedef Block<Derived, Dynamic, internal::traits<Derived>::ColsAtCompileTime, IsRowMajor> RowsBlockXpr;
25 typedef const Block<const Derived, Dynamic, internal::traits<Derived>::ColsAtCompileTime, IsRowMajor> ConstRowsBlockXpr;
27 template<
int N>
struct NColsBlockXpr {
typedef Block<Derived, internal::traits<Derived>::RowsAtCompileTime, N, !IsRowMajor> Type; };
28 template<
int N>
struct ConstNColsBlockXpr {
typedef const Block<const Derived, internal::traits<Derived>::RowsAtCompileTime, N, !IsRowMajor> Type; };
30 template<
int N>
struct NRowsBlockXpr {
typedef Block<Derived, N, internal::traits<Derived>::ColsAtCompileTime, IsRowMajor> Type; };
31 template<
int N>
struct ConstNRowsBlockXpr {
typedef const Block<const Derived, N, internal::traits<Derived>::ColsAtCompileTime, IsRowMajor> Type; };
33 typedef VectorBlock<Derived> SegmentReturnType;
34 typedef const VectorBlock<const Derived> ConstSegmentReturnType;
38 #endif // not EIGEN_PARSED_BY_DOXYGEN 56 inline Block<Derived> block(Index startRow, Index startCol, Index blockRows, Index blockCols)
58 return Block<Derived>(derived(), startRow, startCol, blockRows, blockCols);
62 inline const Block<const Derived> block(Index startRow, Index startCol, Index blockRows, Index blockCols)
const 64 return Block<const Derived>(derived(), startRow, startCol, blockRows, blockCols);
80 inline Block<Derived> topRightCorner(Index cRows, Index cCols)
82 return Block<Derived>(derived(), 0, cols() - cCols, cRows, cCols);
86 inline const Block<const Derived> topRightCorner(Index cRows, Index cCols)
const 88 return Block<const Derived>(derived(), 0, cols() - cCols, cRows, cCols);
101 template<
int CRows,
int CCols>
102 inline Block<Derived, CRows, CCols> topRightCorner()
104 return Block<Derived, CRows, CCols>(derived(), 0, cols() - CCols);
108 template<
int CRows,
int CCols>
109 inline const Block<const Derived, CRows, CCols> topRightCorner()
const 111 return Block<const Derived, CRows, CCols>(derived(), 0, cols() - CCols);
131 template<
int CRows,
int CCols>
132 inline Block<Derived, CRows, CCols> topRightCorner(Index cRows, Index cCols)
134 return Block<Derived, CRows, CCols>(derived(), 0, cols() - cCols, cRows, cCols);
138 template<
int CRows,
int CCols>
139 inline const Block<const Derived, CRows, CCols> topRightCorner(Index cRows, Index cCols)
const 141 return Block<const Derived, CRows, CCols>(derived(), 0, cols() - cCols, cRows, cCols);
156 inline Block<Derived> topLeftCorner(Index cRows, Index cCols)
158 return Block<Derived>(derived(), 0, 0, cRows, cCols);
162 inline const Block<const Derived> topLeftCorner(Index cRows, Index cCols)
const 164 return Block<const Derived>(derived(), 0, 0, cRows, cCols);
176 template<
int CRows,
int CCols>
177 inline Block<Derived, CRows, CCols> topLeftCorner()
179 return Block<Derived, CRows, CCols>(derived(), 0, 0);
183 template<
int CRows,
int CCols>
184 inline const Block<const Derived, CRows, CCols> topLeftCorner()
const 186 return Block<const Derived, CRows, CCols>(derived(), 0, 0);
206 template<
int CRows,
int CCols>
207 inline Block<Derived, CRows, CCols> topLeftCorner(Index cRows, Index cCols)
209 return Block<Derived, CRows, CCols>(derived(), 0, 0, cRows, cCols);
213 template<
int CRows,
int CCols>
214 inline const Block<const Derived, CRows, CCols> topLeftCorner(Index cRows, Index cCols)
const 216 return Block<const Derived, CRows, CCols>(derived(), 0, 0, cRows, cCols);
231 inline Block<Derived> bottomRightCorner(Index cRows, Index cCols)
233 return Block<Derived>(derived(), rows() - cRows, cols() - cCols, cRows, cCols);
237 inline const Block<const Derived> bottomRightCorner(Index cRows, Index cCols)
const 239 return Block<const Derived>(derived(), rows() - cRows, cols() - cCols, cRows, cCols);
251 template<
int CRows,
int CCols>
252 inline Block<Derived, CRows, CCols> bottomRightCorner()
254 return Block<Derived, CRows, CCols>(derived(), rows() - CRows, cols() - CCols);
258 template<
int CRows,
int CCols>
259 inline const Block<const Derived, CRows, CCols> bottomRightCorner()
const 261 return Block<const Derived, CRows, CCols>(derived(), rows() - CRows, cols() - CCols);
281 template<
int CRows,
int CCols>
282 inline Block<Derived, CRows, CCols> bottomRightCorner(Index cRows, Index cCols)
284 return Block<Derived, CRows, CCols>(derived(), rows() - cRows, cols() - cCols, cRows, cCols);
288 template<
int CRows,
int CCols>
289 inline const Block<const Derived, CRows, CCols> bottomRightCorner(Index cRows, Index cCols)
const 291 return Block<const Derived, CRows, CCols>(derived(), rows() - cRows, cols() - cCols, cRows, cCols);
306 inline Block<Derived> bottomLeftCorner(Index cRows, Index cCols)
308 return Block<Derived>(derived(), rows() - cRows, 0, cRows, cCols);
312 inline const Block<const Derived> bottomLeftCorner(Index cRows, Index cCols)
const 314 return Block<const Derived>(derived(), rows() - cRows, 0, cRows, cCols);
326 template<
int CRows,
int CCols>
327 inline Block<Derived, CRows, CCols> bottomLeftCorner()
329 return Block<Derived, CRows, CCols>(derived(), rows() - CRows, 0);
333 template<
int CRows,
int CCols>
334 inline const Block<const Derived, CRows, CCols> bottomLeftCorner()
const 336 return Block<const Derived, CRows, CCols>(derived(), rows() - CRows, 0);
356 template<
int CRows,
int CCols>
357 inline Block<Derived, CRows, CCols> bottomLeftCorner(Index cRows, Index cCols)
359 return Block<Derived, CRows, CCols>(derived(), rows() - cRows, 0, cRows, cCols);
363 template<
int CRows,
int CCols>
364 inline const Block<const Derived, CRows, CCols> bottomLeftCorner(Index cRows, Index cCols)
const 366 return Block<const Derived, CRows, CCols>(derived(), rows() - cRows, 0, cRows, cCols);
380 inline RowsBlockXpr topRows(Index n)
382 return RowsBlockXpr(derived(), 0, 0, n, cols());
386 inline ConstRowsBlockXpr topRows(Index n)
const 388 return ConstRowsBlockXpr(derived(), 0, 0, n, cols());
405 inline typename NRowsBlockXpr<N>::Type topRows(Index n = N)
407 return typename NRowsBlockXpr<N>::Type(derived(), 0, 0, n, cols());
412 inline typename ConstNRowsBlockXpr<N>::Type topRows(Index n = N)
const 414 return typename ConstNRowsBlockXpr<N>::Type(derived(), 0, 0, n, cols());
428 inline RowsBlockXpr bottomRows(Index n)
430 return RowsBlockXpr(derived(), rows() - n, 0, n, cols());
434 inline ConstRowsBlockXpr bottomRows(Index n)
const 436 return ConstRowsBlockXpr(derived(), rows() - n, 0, n, cols());
453 inline typename NRowsBlockXpr<N>::Type bottomRows(Index n = N)
455 return typename NRowsBlockXpr<N>::Type(derived(), rows() - n, 0, n, cols());
460 inline typename ConstNRowsBlockXpr<N>::Type bottomRows(Index n = N)
const 462 return typename ConstNRowsBlockXpr<N>::Type(derived(), rows() - n, 0, n, cols());
477 inline RowsBlockXpr middleRows(Index startRow, Index n)
479 return RowsBlockXpr(derived(), startRow, 0, n, cols());
483 inline ConstRowsBlockXpr middleRows(Index startRow, Index n)
const 485 return ConstRowsBlockXpr(derived(), startRow, 0, n, cols());
503 inline typename NRowsBlockXpr<N>::Type middleRows(Index startRow, Index n = N)
505 return typename NRowsBlockXpr<N>::Type(derived(), startRow, 0, n, cols());
510 inline typename ConstNRowsBlockXpr<N>::Type middleRows(Index startRow, Index n = N)
const 512 return typename ConstNRowsBlockXpr<N>::Type(derived(), startRow, 0, n, cols());
526 inline ColsBlockXpr leftCols(Index n)
528 return ColsBlockXpr(derived(), 0, 0, rows(), n);
532 inline ConstColsBlockXpr leftCols(Index n)
const 534 return ConstColsBlockXpr(derived(), 0, 0, rows(), n);
551 inline typename NColsBlockXpr<N>::Type leftCols(Index n = N)
553 return typename NColsBlockXpr<N>::Type(derived(), 0, 0, rows(), n);
558 inline typename ConstNColsBlockXpr<N>::Type leftCols(Index n = N)
const 560 return typename ConstNColsBlockXpr<N>::Type(derived(), 0, 0, rows(), n);
574 inline ColsBlockXpr rightCols(Index n)
576 return ColsBlockXpr(derived(), 0, cols() - n, rows(), n);
580 inline ConstColsBlockXpr rightCols(Index n)
const 582 return ConstColsBlockXpr(derived(), 0, cols() - n, rows(), n);
599 inline typename NColsBlockXpr<N>::Type rightCols(Index n = N)
601 return typename NColsBlockXpr<N>::Type(derived(), 0, cols() - n, rows(), n);
606 inline typename ConstNColsBlockXpr<N>::Type rightCols(Index n = N)
const 608 return typename ConstNColsBlockXpr<N>::Type(derived(), 0, cols() - n, rows(), n);
623 inline ColsBlockXpr middleCols(Index startCol, Index numCols)
625 return ColsBlockXpr(derived(), 0, startCol, rows(), numCols);
629 inline ConstColsBlockXpr middleCols(Index startCol, Index numCols)
const 631 return ConstColsBlockXpr(derived(), 0, startCol, rows(), numCols);
649 inline typename NColsBlockXpr<N>::Type middleCols(Index startCol, Index n = N)
651 return typename NColsBlockXpr<N>::Type(derived(), 0, startCol, rows(), n);
656 inline typename ConstNColsBlockXpr<N>::Type middleCols(Index startCol, Index n = N)
const 658 return typename ConstNColsBlockXpr<N>::Type(derived(), 0, startCol, rows(), n);
679 template<
int BlockRows,
int BlockCols>
680 inline Block<Derived, BlockRows, BlockCols> block(Index startRow, Index startCol)
682 return Block<Derived, BlockRows, BlockCols>(derived(), startRow, startCol);
686 template<
int BlockRows,
int BlockCols>
687 inline const Block<const Derived, BlockRows, BlockCols> block(Index startRow, Index startCol)
const 689 return Block<const Derived, BlockRows, BlockCols>(derived(), startRow, startCol);
711 template<
int BlockRows,
int BlockCols>
712 inline Block<Derived, BlockRows, BlockCols> block(Index startRow, Index startCol,
713 Index blockRows, Index blockCols)
715 return Block<Derived, BlockRows, BlockCols>(derived(), startRow, startCol, blockRows, blockCols);
719 template<
int BlockRows,
int BlockCols>
720 inline const Block<const Derived, BlockRows, BlockCols> block(Index startRow, Index startCol,
721 Index blockRows, Index blockCols)
const 723 return Block<const Derived, BlockRows, BlockCols>(derived(), startRow, startCol, blockRows, blockCols);
732 inline ColXpr col(Index i)
734 return ColXpr(derived(), i);
738 inline ConstColXpr col(Index i)
const 740 return ConstColXpr(derived(), i);
749 inline RowXpr row(Index i)
751 return RowXpr(derived(), i);
755 inline ConstRowXpr row(Index i)
const 757 return ConstRowXpr(derived(), i);
776 inline SegmentReturnType segment(Index start, Index n)
778 EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
779 return SegmentReturnType(derived(), start, n);
784 inline ConstSegmentReturnType segment(Index start, Index n)
const 786 EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
787 return ConstSegmentReturnType(derived(), start, n);
805 inline SegmentReturnType
head(Index n)
807 EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
808 return SegmentReturnType(derived(), 0, n);
812 inline ConstSegmentReturnType
head(Index n)
const 814 EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
815 return ConstSegmentReturnType(derived(), 0, n);
833 inline SegmentReturnType
tail(Index n)
835 EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
836 return SegmentReturnType(derived(), this->
size() - n, n);
840 inline ConstSegmentReturnType
tail(Index n)
const 842 EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
843 return ConstSegmentReturnType(derived(), this->
size() - n, n);
863 inline typename FixedSegmentReturnType<N>::Type segment(Index start, Index n = N)
865 EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
866 return typename FixedSegmentReturnType<N>::Type(derived(), start, n);
871 inline typename ConstFixedSegmentReturnType<N>::Type segment(Index start, Index n = N)
const 873 EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
874 return typename ConstFixedSegmentReturnType<N>::Type(derived(), start, n);
893 inline typename FixedSegmentReturnType<N>::Type
head(Index n = N)
895 EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
896 return typename FixedSegmentReturnType<N>::Type(derived(), 0, n);
901 inline typename ConstFixedSegmentReturnType<N>::Type
head(Index n = N)
const 903 EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
904 return typename ConstFixedSegmentReturnType<N>::Type(derived(), 0, n);
923 inline typename FixedSegmentReturnType<N>::Type
tail(Index n = N)
925 EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
926 return typename FixedSegmentReturnType<N>::Type(derived(),
size() - n);
931 inline typename ConstFixedSegmentReturnType<N>::Type
tail(Index n = N)
const 933 EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
934 return typename ConstFixedSegmentReturnType<N>::Type(derived(),
size() - n);
Definition: BlockMethods.h:35
Definition: BlockMethods.h:31
Definition: BlockMethods.h:36
typename detail::split_list_< List... >::head head
Get the first element of a list.
Definition: SplitList.h:54
typename detail::split_list_< List... >::tail tail
Get the list without its first element.
Definition: SplitList.h:58
detail::size< coerce_list< Ts... >> size
Get the size of a list (number of elements.)
Definition: Size.h:56
Definition: BlockMethods.h:28
Definition: BlockMethods.h:27
const int Dynamic
This value means that a positive quantity (e.g., a size) is not known at compile-time, and that instead the value is stored in some runtime variable.
Definition: Constants.h:21
Definition: BlockMethods.h:30