* find the proper way of nesting the expression in Flagged:

finally that's more subtle than just using ei_nested, because when
  flagging with NestByValueBit we want to store the expression by value
  already, regardless of whether it already had the NestByValueBit set.
* rename temporary() ----> nestByValue()
* move the old Product.h to disabled/, replace by what was ProductWIP.h
* tweak -O and -g flags for tests and examples
* reorder the tests -- basic things go first
* simplifications, e.g. in many methoeds return derived() and count on
  implicit casting to the actual return type.
* strip some not-really-useful stuff from the heaviest tests
This commit is contained in:
Benoit Jacob
2008-05-28 04:38:16 +00:00
parent 559233c73e
commit aebecae510
15 changed files with 394 additions and 399 deletions

View File

@@ -33,7 +33,7 @@
* \param Added the flags added to the expression
* \param Removed the flags removed from the expression (has priority over Added).
*
* This class represents an expression whose flags have been modified
* This class represents an expression whose flags have been modified.
* It is the return type of MatrixBase::flagged()
* and most of the time this is the only way it is used.
*
@@ -94,7 +94,11 @@ template<typename ExpressionType, unsigned int Added, unsigned int Removed> clas
}
protected:
const ExpressionType m_matrix;
const typename ei_meta_if<
Added & ~Removed & NestByValueBit,
ExpressionType,
typename ExpressionType::Nested
>::ret m_matrix;
};
/** \returns an expression of *this with added flags
@@ -121,7 +125,7 @@ MatrixBase<Derived>::lazy() const
*/
template<typename Derived>
inline const Flagged<Derived, NestByValueBit, 0>
MatrixBase<Derived>::temporary() const
MatrixBase<Derived>::nestByValue() const
{
return derived();
}