10 #ifndef EIGEN_TRANSPOSITIONS_H    11 #define EIGEN_TRANSPOSITIONS_H    48 template<
typename Derived>
    58     Derived& 
derived() { 
return *
static_cast<Derived*
>(
this); }
    59     const Derived& 
derived()
 const { 
return *
static_cast<const Derived*
>(
this); }
    62     template<
typename OtherDerived>
    69     #ifndef EIGEN_PARSED_BY_DOXYGEN    81     inline Index 
size()
 const { 
return indices().size(); }
    84     inline const Index& 
coeff(Index i)
 const { 
return indices().coeff(i); }
    86     inline Index& 
coeffRef(Index i) { 
return indices().coeffRef(i); }
    88     inline const Index& 
operator()(Index i)
 const { 
return indices()(i); }
    90     inline Index& 
operator()(Index i) { 
return indices()(i); }
    92     inline const Index& 
operator[](Index i)
 const { 
return indices()(i); }
    94     inline Index& 
operator[](Index i) { 
return indices()(i); }
    97     const IndicesType& 
indices()
 const { 
return derived().indices(); }
    99     IndicesType& 
indices() { 
return derived().indices(); }
   104       indices().resize(newSize);
   110       for(
int i = 0; i < indices().size(); ++i)
   147 template<
int SizeAtCompileTime, 
int MaxSizeAtCompileTime, 
typename IndexType>
   155 template<
int SizeAtCompileTime, 
int MaxSizeAtCompileTime, 
typename IndexType>
   168     template<
typename OtherDerived>
   170       : m_indices(other.indices()) {}
   172     #ifndef EIGEN_PARSED_BY_DOXYGEN   179     template<
typename Other>
   184     template<
typename OtherDerived>
   187       return Base::operator=(other);
   190     #ifndef EIGEN_PARSED_BY_DOXYGEN   207     const IndicesType& 
indices()
 const { 
return m_indices; }
   218 template<
int SizeAtCompileTime, 
int MaxSizeAtCompileTime, 
typename IndexType, 
int _PacketAccess>
   226 template<
int SizeAtCompileTime, 
int MaxSizeAtCompileTime, 
typename IndexType, 
int PacketAccess>
   228  : 
public TranspositionsBase<Map<Transpositions<SizeAtCompileTime,MaxSizeAtCompileTime,IndexType>,PacketAccess> >
   235     typedef typename IndicesType::Scalar 
Index;
   237     inline Map(
const Index* indicesPtr)
   238       : m_indices(indicesPtr)
   241     inline Map(
const Index* indicesPtr, Index size)
   242       : m_indices(indicesPtr,size)
   246     template<
typename OtherDerived>
   249       return Base::operator=(other);
   252     #ifndef EIGEN_PARSED_BY_DOXYGEN   258       m_indices = other.m_indices;
   264     const IndicesType& 
indices()
 const { 
return m_indices; }
   275 template<
typename _IndicesType>
   278   typedef typename _IndicesType::Scalar 
Index;
   283 template<
typename _IndicesType>
   292     typedef typename IndicesType::Scalar 
Index;
   295       : m_indices(a_indices)
   299     template<
typename OtherDerived>
   302       return Base::operator=(other);
   305     #ifndef EIGEN_PARSED_BY_DOXYGEN   317     const IndicesType& 
indices()
 const { 
return m_indices; }
   329 template<
typename Derived, 
typename TranspositionsDerived>
   336            (transpositions.
derived(), matrix.derived());
   341 template<
typename Derived, 
typename TranspositionDerived>
   343                <TranspositionDerived, Derived, 
OnTheLeft>
   348            <TranspositionDerived, Derived, 
OnTheLeft>
   349            (transpositions.
derived(), matrix.derived());
   354 template<
typename TranspositionType, 
typename MatrixType, 
int S
ide, 
bool Transposed>
   360 template<
typename TranspositionType, 
typename MatrixType, 
int S
ide, 
bool Transposed>
   362  : 
public ReturnByValue<transposition_matrix_product_retval<TranspositionType, MatrixType, Side, Transposed> >
   365     typedef typename TranspositionType::Index 
Index;
   368       : m_transpositions(tr), m_matrix(matrix)
   371     inline int rows()
 const { 
return m_matrix.rows(); }
   372     inline int cols()
 const { 
return m_matrix.cols(); }
   374     template<
typename Dest> 
inline void evalTo(Dest& dst)
 const   376       const int size = m_transpositions.size();
   382       for(
int k=(Transposed?size-1:0) ; Transposed?k>=0:k<size ; Transposed?--k:++k)
   383         if((j=m_transpositions.coeff(k))!=k)
   386             dst.row(k).swap(dst.row(j));
   388             dst.col(k).swap(dst.col(j));
   401 template<
typename TranspositionsDerived>
   408     Transpose(
const TranspositionType& t) : m_transpositions(t) {}
   410     inline int size()
 const { 
return m_transpositions.size(); }
   414     template<
typename Derived> 
friend   423     template<
typename Derived>
   436 #endif // EIGEN_TRANSPOSITIONS_H 
Index & operator()(Index i)
internal::traits< Matrix< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols > >::Scalar Scalar
Traits::IndicesType IndicesType
Derived & operator=(const TranspositionsBase< OtherDerived > &other)
internal::traits< Map > Traits
MatrixType::PlainObject ReturnType
Transpositions(const MatrixBase< Other > &a_indices)
A matrix or vector expression mapping an existing array of data. 
Expression of the transpose of a matrix. 
Traits::IndicesType IndicesType
Derived & operator=(const TranspositionsBase &other)
_IndicesType::Scalar Index
TranspositionsDerived TranspositionType
const internal::permut_matrix_product_retval< PermutationDerived, Derived, OnTheRight > operator*(const MatrixBase< Derived > &matrix, const PermutationBase< PermutationDerived > &permutation)
TranspositionType::IndicesType IndicesType
Map(const Index *indicesPtr)
void evalTo(Dest &dst) const 
Index & coeffRef(Index i)
Map(const Index *indicesPtr, Index size)
internal::traits< Transpositions > Traits
Traits::IndicesType IndicesType
Map & operator=(const TranspositionsBase< OtherDerived > &other)
const Index & operator[](Index i) const 
IndicesType::Scalar Index
Traits::IndicesType IndicesType
Transpositions & operator=(const TranspositionsBase< OtherDerived > &other)
const IndicesType & indices() const 
Matrix< Index, SizeAtCompileTime, 1, 0, MaxSizeAtCompileTime, 1 > IndicesType
Transpositions(const TranspositionsBase< OtherDerived > &other)
const TranspositionType & m_transpositions
const TranspositionType & m_transpositions
Transpose< TranspositionsBase > transpose() const 
Transpositions & operator=(const Transpositions &other)
TranspositionsBase< Map > Base
Index & operator[](Index i)
const IndicesType & indices() const 
Map & operator=(const Map &other)
TranspositionsBase< TranspositionsWrapper > Base
IndicesType::Scalar Index
MatrixType::Nested m_matrix
internal::traits< TranspositionsWrapper > Traits
IndicesType::Scalar Index
friend const internal::transposition_matrix_product_retval< TranspositionType, Derived, OnTheRight, true > operator*(const MatrixBase< Derived > &matrix, const Transpose &trt)
const IndicesType & indices() const 
Transpose< TranspositionsBase > inverse() const 
Map< const Matrix< Index, SizeAtCompileTime, 1, 0, MaxSizeAtCompileTime, 1 >, _PacketAccess > IndicesType
TranspositionType::Index Index
const IndicesType::Nested m_indices
const Derived & derived() const 
const Index & coeff(Index i) const 
const internal::transposition_matrix_product_retval< TranspositionType, Derived, OnTheLeft, true > operator*(const MatrixBase< Derived > &matrix) const 
TranspositionsWrapper & operator=(const TranspositionsBase< OtherDerived > &other)
remove_all< typename MatrixType::Nested >::type MatrixTypeNestedCleaned
TranspositionsWrapper(IndicesType &a_indices)
Transpositions(Index size)
Transpositions(const Transpositions &other)
const IndicesType & indices() const 
const T::Scalar * extract_data(const T &m)
The matrix class, also used for vectors and row-vectors. 
Transpose(const TranspositionType &t)
Base class for all dense matrices, vectors, and expressions. 
Represents a sequence of transpositions (row/column interchange) 
IndicesType::Scalar Index
TranspositionsBase< Transpositions > Base
const Index & operator()(Index i) const 
TranspositionsWrapper & operator=(const TranspositionsWrapper &other)
internal::traits< Derived > Traits
transposition_matrix_product_retval(const TranspositionType &tr, const MatrixType &matrix)