00001 // Copyright (C) 2010-2011 NICTA (www.nicta.com.au) 00002 // Copyright (C) 2010-2011 Conrad Sanderson 00003 // 00004 // This file is part of the Armadillo C++ library. 00005 // It is provided without any warranty of fitness 00006 // for any purpose. You can redistribute this file 00007 // and/or modify it under the terms of the GNU 00008 // Lesser General Public License (LGPL) as published 00009 // by the Free Software Foundation, either version 3 00010 // of the License or (at your option) any later version. 00011 // (see http://www.opensource.org/licenses for more info) 00012 00013 00016 00017 00018 00019 template<typename T1> 00020 struct strip_diagmat 00021 { 00022 typedef T1 stored_type; 00023 00024 inline strip_diagmat(const Base<typename T1::elem_type, T1>& X) 00025 : M(X.get_ref()) 00026 { 00027 arma_extra_debug_sigprint(); 00028 } 00029 00030 static const bool do_diagmat = false; 00031 00032 const T1& M; 00033 }; 00034 00035 00036 00037 template<typename T1> 00038 struct strip_diagmat< Op<T1, op_diagmat> > 00039 { 00040 typedef T1 stored_type; 00041 00042 inline strip_diagmat(const Op<T1, op_diagmat>& X) 00043 : M(X.m) 00044 { 00045 arma_extra_debug_sigprint(); 00046 } 00047 00048 static const bool do_diagmat = true; 00049 00050 const T1& M; 00051 }; 00052 00053 00054 00055 template<typename T1> 00056 struct strip_inv 00057 { 00058 typedef T1 stored_type; 00059 00060 inline strip_inv(const T1& X) 00061 : M(X) 00062 { 00063 arma_extra_debug_sigprint(); 00064 } 00065 00066 static const bool do_inv = false; 00067 00068 const T1& M; 00069 }; 00070 00071 00072 00073 template<typename T1> 00074 struct strip_inv< Op<T1, op_inv> > 00075 { 00076 typedef T1 stored_type; 00077 00078 inline strip_inv(const Op<T1, op_inv>& X) 00079 : M(X.m) 00080 { 00081 arma_extra_debug_sigprint(); 00082 } 00083 00084 static const bool do_inv = true; 00085 00086 const T1& M; 00087 }; 00088 00089 00090