Row_proto.hpp

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