cart-elc

Source code for CART-ELC
git clone git://git.laack.co/cart-elc.git
Log | Files | Refs | README | LICENSE

Assign.h (2738B)


      1 // This file is part of Eigen, a lightweight C++ template library
      2 // for linear algebra.
      3 //
      4 // Copyright (C) 2007 Michael Olbrich <michael.olbrich@gmx.net>
      5 // Copyright (C) 2006-2010 Benoit Jacob <jacob.benoit.1@gmail.com>
      6 // Copyright (C) 2008 Gael Guennebaud <gael.guennebaud@inria.fr>
      7 //
      8 // This Source Code Form is subject to the terms of the Mozilla
      9 // Public License v. 2.0. If a copy of the MPL was not distributed
     10 // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
     11 
     12 #ifndef EIGEN_ASSIGN_H
     13 #define EIGEN_ASSIGN_H
     14 
     15 namespace Eigen {
     16 
     17 template<typename Derived>
     18 template<typename OtherDerived>
     19 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived& DenseBase<Derived>
     20   ::lazyAssign(const DenseBase<OtherDerived>& other)
     21 {
     22   enum{
     23     SameType = internal::is_same<typename Derived::Scalar,typename OtherDerived::Scalar>::value
     24   };
     25 
     26   EIGEN_STATIC_ASSERT_LVALUE(Derived)
     27   EIGEN_STATIC_ASSERT_SAME_MATRIX_SIZE(Derived,OtherDerived)
     28   EIGEN_STATIC_ASSERT(SameType,YOU_MIXED_DIFFERENT_NUMERIC_TYPES__YOU_NEED_TO_USE_THE_CAST_METHOD_OF_MATRIXBASE_TO_CAST_NUMERIC_TYPES_EXPLICITLY)
     29 
     30   eigen_assert(rows() == other.rows() && cols() == other.cols());
     31   internal::call_assignment_no_alias(derived(),other.derived());
     32   
     33   return derived();
     34 }
     35 
     36 template<typename Derived>
     37 template<typename OtherDerived>
     38 EIGEN_DEVICE_FUNC
     39 EIGEN_STRONG_INLINE Derived& DenseBase<Derived>::operator=(const DenseBase<OtherDerived>& other)
     40 {
     41   internal::call_assignment(derived(), other.derived());
     42   return derived();
     43 }
     44 
     45 template<typename Derived>
     46 EIGEN_DEVICE_FUNC
     47 EIGEN_STRONG_INLINE Derived& DenseBase<Derived>::operator=(const DenseBase& other)
     48 {
     49   internal::call_assignment(derived(), other.derived());
     50   return derived();
     51 }
     52 
     53 template<typename Derived>
     54 EIGEN_DEVICE_FUNC
     55 EIGEN_STRONG_INLINE Derived& MatrixBase<Derived>::operator=(const MatrixBase& other)
     56 {
     57   internal::call_assignment(derived(), other.derived());
     58   return derived();
     59 }
     60 
     61 template<typename Derived>
     62 template <typename OtherDerived>
     63 EIGEN_DEVICE_FUNC
     64 EIGEN_STRONG_INLINE Derived& MatrixBase<Derived>::operator=(const DenseBase<OtherDerived>& other)
     65 {
     66   internal::call_assignment(derived(), other.derived());
     67   return derived();
     68 }
     69 
     70 template<typename Derived>
     71 template <typename OtherDerived>
     72 EIGEN_DEVICE_FUNC
     73 EIGEN_STRONG_INLINE Derived& MatrixBase<Derived>::operator=(const EigenBase<OtherDerived>& other)
     74 {
     75   internal::call_assignment(derived(), other.derived());
     76   return derived();
     77 }
     78 
     79 template<typename Derived>
     80 template<typename OtherDerived>
     81 EIGEN_DEVICE_FUNC
     82 EIGEN_STRONG_INLINE Derived& MatrixBase<Derived>::operator=(const ReturnByValue<OtherDerived>& other)
     83 {
     84   other.derived().evalTo(derived());
     85   return derived();
     86 }
     87 
     88 } // end namespace Eigen
     89 
     90 #endif // EIGEN_ASSIGN_H