Row_proto.hpp

Go to the documentation of this file.
00001 // Copyright (C) 2010 NICTA and the authors listed below
00002 // http://nicta.com.au
00003 // 
00004 // Authors:
00005 // - Conrad Sanderson (conradsand at ieee dot org)
00006 // 
00007 // This file is part of the Armadillo C++ library.
00008 // It is provided without any warranty of fitness
00009 // for any purpose. You can redistribute this file
00010 // and/or modify it under the terms of the GNU
00011 // Lesser General Public License (LGPL) as published
00012 // by the Free Software Foundation, either version 3
00013 // of the License or (at your option) any later version.
00014 // (see http://www.opensource.org/licenses for more info)
00015 
00016 
00017 //! \addtogroup Row
00018 //! @{
00019 
00020 //! Class for row vectors (matrices with only one row)
00021 
00022 template<typename eT>
00023 class Row : public Mat<eT>, public BaseVec< eT, Row<eT> >
00024   {
00025   public:
00026   
00027   typedef eT                                       elem_type;
00028   typedef typename get_pod_type<elem_type>::result pod_type;
00029   
00030   
00031   inline                     Row();
00032   inline explicit            Row(const u32 N);
00033   inline                     Row(const u32 in_rows, const u32 in_cols);
00034   
00035   inline                     Row(const char*        text);
00036   inline const Row&    operator=(const char*        text);
00037   inline                     Row(const std::string& text);
00038   inline const Row&    operator=(const std::string& text);
00039   
00040   inline                     Row(const Row& X);
00041   inline const Row&    operator=(const Row& X);
00042   inline const Row&   operator*=(const Row& X);
00043   
00044   //inline explicit            Row(const Mat<eT>& X);
00045   inline                     Row(const Mat<eT>& X);
00046   inline const Row&    operator=(const Mat<eT>& X);
00047   inline const Row&   operator*=(const Mat<eT>& X);
00048 
00049   inline Row(      eT* aux_mem, const u32 aux_n_rows, const u32 aux_n_cols, const bool copy_aux_mem = true);
00050   inline Row(const eT* aux_mem, const u32 aux_n_rows, const u32 aux_n_cols);
00051   
00052   inline Row(      eT* aux_mem, const u32 aux_length, const bool copy_aux_mem = true);
00053   inline Row(const eT* aux_mem, const u32 aux_length);
00054 
00055   template<typename T1, typename T2>
00056   inline explicit Row(const Base<pod_type,T1>& A, const Base<pod_type,T2>& B);
00057 
00058   inline                     Row(const subview<eT>& X);
00059   inline const Row&    operator=(const subview<eT>& X);
00060   inline const Row&   operator*=(const subview<eT>& X);
00061 
00062   inline                     Row(const subview_cube<eT>& X);
00063   inline const Row&    operator=(const subview_cube<eT>& X);
00064   inline const Row&   operator*=(const subview_cube<eT>& X);
00065   
00066   inline explicit            Row(const diagview<eT>& X);
00067   inline const Row&    operator=(const diagview<eT>& X);
00068   inline const Row&   operator*=(const diagview<eT>& X);
00069   
00070   arma_inline eT& col(const u32 col_num);
00071   arma_inline eT  col(const u32 col_num) const;
00072   
00073   arma_inline       subview_row<eT> cols(const u32 in_col1, const u32 in_col2);
00074   arma_inline const subview_row<eT> cols(const u32 in_col1, const u32 in_col2) const;
00075   
00076   template<typename T1, typename op_type> inline                   Row(const Op<T1, op_type>& X);
00077   template<typename T1, typename op_type> inline const Row&  operator=(const Op<T1, op_type>& X);
00078   template<typename T1, typename op_type> inline const Row& operator*=(const Op<T1, op_type>& X);
00079   
00080   template<typename T1, typename eop_type> inline                   Row(const eOp<T1, eop_type>& X);
00081   template<typename T1, typename eop_type> inline const Row&  operator=(const eOp<T1, eop_type>& X);
00082   template<typename T1, typename eop_type> inline const Row& operator*=(const eOp<T1, eop_type>& X);
00083   
00084   template<typename T1, typename op_type> inline                   Row(const mtOp<eT, T1, op_type>& X);
00085   template<typename T1, typename op_type> inline const Row&  operator=(const mtOp<eT, T1, op_type>& X);
00086   template<typename T1, typename op_type> inline const Row& operator*=(const mtOp<eT, T1, op_type>& X);
00087   
00088   template<typename T1, typename T2, typename glue_type> inline                   Row(const Glue<T1, T2, glue_type>& X);
00089   template<typename T1, typename T2, typename glue_type> inline const Row&  operator=(const Glue<T1, T2, glue_type>& X);
00090   template<typename T1, typename T2, typename glue_type> inline const Row& operator*=(const Glue<T1, T2, glue_type>& X);
00091   
00092   template<typename T1, typename T2, typename eglue_type> inline                   Row(const eGlue<T1, T2, eglue_type>& X);
00093   template<typename T1, typename T2, typename eglue_type> inline const Row&  operator=(const eGlue<T1, T2, eglue_type>& X);
00094   template<typename T1, typename T2, typename eglue_type> inline const Row& operator*=(const eGlue<T1, T2, eglue_type>& X);
00095   
00096   template<typename T1, typename T2, typename glue_type> inline                   Row(const mtGlue<eT, T1, T2, glue_type>& X);
00097   template<typename T1, typename T2, typename glue_type> inline const Row&  operator=(const mtGlue<eT, T1, T2, glue_type>& X);
00098   template<typename T1, typename T2, typename glue_type> inline const Row& operator*=(const mtGlue<eT, T1, T2, glue_type>& X);
00099   
00100   inline void  set_size(const u32 N);
00101   inline void  set_size(const u32 n_rows, const u32 n_cols);
00102   
00103   template<typename eT2>
00104   inline void copy_size(const Mat<eT2>& m);
00105   
00106   inline void zeros();
00107   inline void zeros(const u32 N);
00108   inline void zeros(const u32 n_rows, const u32 n_cols);
00109   
00110   inline void ones();
00111   inline void ones(const u32 N);
00112   inline void ones(const u32 n_rows, const u32 n_cols);
00113   
00114   
00115   inline void load(const std::string   name, const file_type type = auto_detect, const bool print_status = true);
00116   inline void load(      std::istream& is,   const file_type type = auto_detect, const bool print_status = true);
00117   
00118   inline void quiet_load(const std::string   name, const file_type type = auto_detect);
00119   inline void quiet_load(      std::istream& is,   const file_type type = auto_detect);
00120   
00121   
00122   typedef       eT*       row_iterator;
00123   typedef const eT* const_row_iterator;
00124   
00125   inline       row_iterator begin_row(const u32 row_num);
00126   inline const_row_iterator begin_row(const u32 row_num) const;
00127   
00128   inline       row_iterator end_row  (const u32 row_num);
00129   inline const_row_iterator end_row  (const u32 row_num) const;
00130   };
00131 
00132 
00133 //! @}