1// This file is part of Eigen, a lightweight C++ template library 2// for linear algebra. 3// 4// Copyright (C) 2008 Benoit Jacob <jacob.benoit.1@gmail.com> 5// 6// This Source Code Form is subject to the terms of the Mozilla 7// Public License v. 2.0. If a copy of the MPL was not distributed 8// with this file, You can obtain one at http://mozilla.org/MPL/2.0/. 9 10#ifndef EIGEN_LAZY_H 11#define EIGEN_LAZY_H 12 13namespace Eigen { 14 15/** \deprecated it is only used by lazy() which is deprecated 16 * 17 * \returns an expression of *this with added flags 18 * 19 * Example: \include MatrixBase_marked.cpp 20 * Output: \verbinclude MatrixBase_marked.out 21 * 22 * \sa class Flagged, extract(), part() 23 */ 24template<typename Derived> 25template<unsigned int Added> 26inline const Flagged<Derived, Added, 0> 27MatrixBase<Derived>::marked() const 28{ 29 return derived(); 30} 31 32/** \deprecated use MatrixBase::noalias() 33 * 34 * \returns an expression of *this with the EvalBeforeAssigningBit flag removed. 35 * 36 * Example: \include MatrixBase_lazy.cpp 37 * Output: \verbinclude MatrixBase_lazy.out 38 * 39 * \sa class Flagged, marked() 40 */ 41template<typename Derived> 42inline const Flagged<Derived, 0, EvalBeforeAssigningBit> 43MatrixBase<Derived>::lazy() const 44{ 45 return derived(); 46} 47 48 49/** \internal 50 * Overloaded to perform an efficient C += (A*B).lazy() */ 51template<typename Derived> 52template<typename ProductDerived, typename Lhs, typename Rhs> 53Derived& MatrixBase<Derived>::operator+=(const Flagged<ProductBase<ProductDerived, Lhs,Rhs>, 0, 54 EvalBeforeAssigningBit>& other) 55{ 56 other._expression().derived().addTo(derived()); return derived(); 57} 58 59/** \internal 60 * Overloaded to perform an efficient C -= (A*B).lazy() */ 61template<typename Derived> 62template<typename ProductDerived, typename Lhs, typename Rhs> 63Derived& MatrixBase<Derived>::operator-=(const Flagged<ProductBase<ProductDerived, Lhs,Rhs>, 0, 64 EvalBeforeAssigningBit>& other) 65{ 66 other._expression().derived().subTo(derived()); return derived(); 67} 68 69} // end namespace Eigen 70 71#endif // EIGEN_LAZY_H 72