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>
|
---|
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>
|
---|
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
|
---|