Shapeworks Studio  2.1
Shape analysis software suite
List of all members | Public Member Functions | Protected Attributes
Eigen::NoAlias< ExpressionType, StorageBase > Class Template Reference

Pseudo expression providing an operator = assuming no aliasing. More...

#include <NoAlias.h>

Public Member Functions

 NoAlias (ExpressionType &expression)
 
template<typename OtherDerived >
EIGEN_STRONG_INLINE ExpressionType & operator= (const StorageBase< OtherDerived > &other)
 
template<typename OtherDerived >
EIGEN_STRONG_INLINE ExpressionType & operator+= (const StorageBase< OtherDerived > &other)
 
template<typename OtherDerived >
EIGEN_STRONG_INLINE ExpressionType & operator-= (const StorageBase< OtherDerived > &other)
 
template<typename ProductDerived , typename Lhs , typename Rhs >
EIGEN_STRONG_INLINE ExpressionType & operator+= (const ProductBase< ProductDerived, Lhs, Rhs > &other)
 
template<typename ProductDerived , typename Lhs , typename Rhs >
EIGEN_STRONG_INLINE ExpressionType & operator-= (const ProductBase< ProductDerived, Lhs, Rhs > &other)
 
template<typename Lhs , typename Rhs , int NestingFlags>
EIGEN_STRONG_INLINE ExpressionType & operator+= (const CoeffBasedProduct< Lhs, Rhs, NestingFlags > &other)
 
template<typename Lhs , typename Rhs , int NestingFlags>
EIGEN_STRONG_INLINE ExpressionType & operator-= (const CoeffBasedProduct< Lhs, Rhs, NestingFlags > &other)
 
template<typename OtherDerived >
ExpressionType & operator= (const ReturnByValue< OtherDerived > &func)
 
ExpressionType & expression () const
 

Protected Attributes

ExpressionType & m_expression
 

Detailed Description

template<typename ExpressionType, template< typename > class StorageBase>
class Eigen::NoAlias< ExpressionType, StorageBase >

Pseudo expression providing an operator = assuming no aliasing.

Parameters
ExpressionTypethe type of the object on which to do the lazy assignment

This class represents an expression with special assignment operators assuming no aliasing between the target expression and the source expression. More precisely it alloas to bypass the EvalBeforeAssignBit flag of the source expression. It is the return type of MatrixBase::noalias() and most of the time this is the only way it is used.

See also
MatrixBase::noalias()

Definition at line 31 of file NoAlias.h.

Member Function Documentation

template<typename ExpressionType, template< typename > class StorageBase>
template<typename OtherDerived >
EIGEN_STRONG_INLINE ExpressionType& Eigen::NoAlias< ExpressionType, StorageBase >::operator+= ( const StorageBase< OtherDerived > &  other)
inline
See also
MatrixBase::operator+=

Definition at line 45 of file NoAlias.h.

46  {
47  typedef SelfCwiseBinaryOp<internal::scalar_sum_op<Scalar>, ExpressionType, OtherDerived> SelfAdder;
48  SelfAdder tmp(m_expression);
49  typedef typename internal::nested<OtherDerived>::type OtherDerivedNested;
50  typedef typename internal::remove_all<OtherDerivedNested>::type _OtherDerivedNested;
51  internal::assign_selector<SelfAdder,_OtherDerivedNested,false>::run(tmp,OtherDerivedNested(other.derived()));
52  return m_expression;
53  }
template<typename ExpressionType, template< typename > class StorageBase>
template<typename OtherDerived >
EIGEN_STRONG_INLINE ExpressionType& Eigen::NoAlias< ExpressionType, StorageBase >::operator-= ( const StorageBase< OtherDerived > &  other)
inline
See also
MatrixBase::operator-=

Definition at line 57 of file NoAlias.h.

58  {
59  typedef SelfCwiseBinaryOp<internal::scalar_difference_op<Scalar>, ExpressionType, OtherDerived> SelfAdder;
60  SelfAdder tmp(m_expression);
61  typedef typename internal::nested<OtherDerived>::type OtherDerivedNested;
62  typedef typename internal::remove_all<OtherDerivedNested>::type _OtherDerivedNested;
63  internal::assign_selector<SelfAdder,_OtherDerivedNested,false>::run(tmp,OtherDerivedNested(other.derived()));
64  return m_expression;
65  }
template<typename ExpressionType, template< typename > class StorageBase>
template<typename OtherDerived >
EIGEN_STRONG_INLINE ExpressionType& Eigen::NoAlias< ExpressionType, StorageBase >::operator= ( const StorageBase< OtherDerived > &  other)
inline

Behaves like MatrixBase::lazyAssign(other)

See also
MatrixBase::lazyAssign()

Definition at line 40 of file NoAlias.h.

41  { return internal::assign_selector<ExpressionType,OtherDerived,false>::run(m_expression,other.derived()); }

The documentation for this class was generated from the following file: