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
13 namespace 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 */
24 template<typename Derived>
25 template<unsigned int Added>
26 inline const Flagged<Derived, Added, 0>
marked()27 MatrixBase<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 */
41 template<typename Derived>
42 inline const Flagged<Derived, 0, EvalBeforeAssigningBit>
lazy()43 MatrixBase<Derived>::lazy() const
44 {
45 return derived();
46 }
47
48
49 /** \internal
50 * Overloaded to perform an efficient C += (A*B).lazy() */
51 template<typename Derived>
52 template<typename ProductDerived, typename Lhs, typename Rhs>
53 Derived& 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() */
61 template<typename Derived>
62 template<typename ProductDerived, typename Lhs, typename Rhs>
63 Derived& 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