Mercurial > hg > segmenter-vamp-plugin
annotate armadillo-2.4.4/include/armadillo_bits/unwrap_cube.hpp @ 0:8b6102e2a9b0
Armadillo Library
author | maxzanoni76 <max.zanoni@eecs.qmul.ac.uk> |
---|---|
date | Wed, 11 Apr 2012 09:27:06 +0100 |
parents | |
children |
rev | line source |
---|---|
max@0 | 1 // Copyright (C) 2008-2010 NICTA (www.nicta.com.au) |
max@0 | 2 // Copyright (C) 2008-2010 Conrad Sanderson |
max@0 | 3 // |
max@0 | 4 // This file is part of the Armadillo C++ library. |
max@0 | 5 // It is provided without any warranty of fitness |
max@0 | 6 // for any purpose. You can redistribute this file |
max@0 | 7 // and/or modify it under the terms of the GNU |
max@0 | 8 // Lesser General Public License (LGPL) as published |
max@0 | 9 // by the Free Software Foundation, either version 3 |
max@0 | 10 // of the License or (at your option) any later version. |
max@0 | 11 // (see http://www.opensource.org/licenses for more info) |
max@0 | 12 |
max@0 | 13 |
max@0 | 14 //! \addtogroup unwrap_cube |
max@0 | 15 //! @{ |
max@0 | 16 |
max@0 | 17 |
max@0 | 18 |
max@0 | 19 template<typename T1> |
max@0 | 20 class unwrap_cube |
max@0 | 21 { |
max@0 | 22 public: |
max@0 | 23 |
max@0 | 24 typedef typename T1::elem_type eT; |
max@0 | 25 |
max@0 | 26 inline |
max@0 | 27 unwrap_cube(const T1& A) |
max@0 | 28 : M(A) |
max@0 | 29 { |
max@0 | 30 arma_extra_debug_sigprint(); |
max@0 | 31 } |
max@0 | 32 |
max@0 | 33 const Cube<eT> M; |
max@0 | 34 }; |
max@0 | 35 |
max@0 | 36 |
max@0 | 37 |
max@0 | 38 template<typename eT> |
max@0 | 39 class unwrap_cube< Cube<eT> > |
max@0 | 40 { |
max@0 | 41 public: |
max@0 | 42 |
max@0 | 43 inline |
max@0 | 44 unwrap_cube(const Cube<eT>& A) |
max@0 | 45 : M(A) |
max@0 | 46 { |
max@0 | 47 arma_extra_debug_sigprint(); |
max@0 | 48 } |
max@0 | 49 |
max@0 | 50 const Cube<eT>& M; |
max@0 | 51 }; |
max@0 | 52 |
max@0 | 53 |
max@0 | 54 |
max@0 | 55 // |
max@0 | 56 // |
max@0 | 57 // |
max@0 | 58 |
max@0 | 59 |
max@0 | 60 |
max@0 | 61 template<typename T1> |
max@0 | 62 class unwrap_cube_check |
max@0 | 63 { |
max@0 | 64 typedef typename T1::elem_type eT; |
max@0 | 65 |
max@0 | 66 inline |
max@0 | 67 unwrap_cube_check(const T1& A, const Cube<eT>& B) |
max@0 | 68 : M(A) |
max@0 | 69 { |
max@0 | 70 arma_extra_debug_sigprint(); |
max@0 | 71 |
max@0 | 72 arma_type_check(( is_arma_cube_type<T1>::value == false )); |
max@0 | 73 } |
max@0 | 74 |
max@0 | 75 const Cube<eT> M; |
max@0 | 76 }; |
max@0 | 77 |
max@0 | 78 |
max@0 | 79 |
max@0 | 80 template<typename eT> |
max@0 | 81 class unwrap_cube_check< Cube<eT> > |
max@0 | 82 { |
max@0 | 83 public: |
max@0 | 84 |
max@0 | 85 inline |
max@0 | 86 unwrap_cube_check(const Cube<eT>& A, const Cube<eT>& B) |
max@0 | 87 : M_local( (&A == &B) ? new Cube<eT>(A) : 0 ) |
max@0 | 88 , M ( (&A == &B) ? (*M_local) : A ) |
max@0 | 89 { |
max@0 | 90 arma_extra_debug_sigprint(); |
max@0 | 91 } |
max@0 | 92 |
max@0 | 93 |
max@0 | 94 inline |
max@0 | 95 ~unwrap_cube_check() |
max@0 | 96 { |
max@0 | 97 arma_extra_debug_sigprint(); |
max@0 | 98 |
max@0 | 99 if(M_local) |
max@0 | 100 { |
max@0 | 101 delete M_local; |
max@0 | 102 } |
max@0 | 103 } |
max@0 | 104 |
max@0 | 105 |
max@0 | 106 // the order below is important |
max@0 | 107 const Cube<eT>* M_local; |
max@0 | 108 const Cube<eT>& M; |
max@0 | 109 |
max@0 | 110 }; |
max@0 | 111 |
max@0 | 112 |
max@0 | 113 |
max@0 | 114 //! @} |