Col_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 Col
00017 //! @{
00018 
00019 //! Class for column vectors (matrices with only column)
00020 
00021 template<typename eT>
00022 class Col : public Mat<eT>, public BaseVec< eT, Col<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                     Col();
00031   inline explicit            Col(const u32 n_elem);
00032   inline                     Col(const u32 in_rows, const u32 in_cols);
00033   
00034   inline                     Col(const char*        text);
00035   inline const Col&    operator=(const char*        text);
00036   inline                     Col(const std::string& text);
00037   inline const Col&    operator=(const std::string& text);
00038   
00039   inline                     Col(const Col& X);
00040   inline const Col&    operator=(const Col& X);
00041   
00042   //inline explicit            Col(const Mat<eT>& X);
00043   inline                     Col(const Mat<eT>& X);
00044   inline const Col&    operator=(const Mat<eT>& X);
00045   inline const Col&   operator*=(const Mat<eT>& X);
00046   
00047   inline Col(      eT* aux_mem, const u32 aux_n_rows, const u32 aux_n_cols, const bool copy_aux_mem = true);
00048   inline Col(const eT* aux_mem, const u32 aux_n_rows, const u32 aux_n_cols);
00049   
00050   inline Col(      eT* aux_mem, const u32 aux_length, const bool copy_aux_mem = true);
00051   inline Col(const eT* aux_mem, const u32 aux_length);
00052   
00053   template<typename T1, typename T2>
00054   inline explicit Col(const Base<pod_type,T1>& A, const Base<pod_type,T2>& B);
00055   
00056   inline                     Col(const subview<eT>& X);
00057   inline const Col&    operator=(const subview<eT>& X);
00058   inline const Col&   operator*=(const subview<eT>& X);
00059   
00060   inline                     Col(const subview_cube<eT>& X);
00061   inline const Col&    operator=(const subview_cube<eT>& X);
00062   inline const Col&   operator*=(const subview_cube<eT>& X);
00063   
00064   inline                     Col(const diagview<eT>& X);
00065   inline const Col&    operator=(const diagview<eT>& X);
00066   inline const Col&   operator*=(const diagview<eT>& X);
00067   
00068   arma_inline eT& row(const u32 row_num);
00069   arma_inline eT  row(const u32 row_num) const;
00070   
00071   arma_inline       subview_col<eT> rows(const u32 in_row1, const u32 in_row2);
00072   arma_inline const subview_col<eT> rows(const u32 in_row1, const u32 in_row2) const;
00073   
00074   template<typename T1, typename op_type> inline                   Col(const Op<T1, op_type>& X);
00075   template<typename T1, typename op_type> inline const Col&  operator=(const Op<T1, op_type>& X);
00076   template<typename T1, typename op_type> inline const Col& operator*=(const Op<T1, op_type>& X);
00077   
00078   template<typename T1, typename T2, typename glue_type> inline                   Col(const Glue<T1, T2, glue_type>& X);
00079   template<typename T1, typename T2, typename glue_type> inline const Col&  operator=(const Glue<T1, T2, glue_type>& X);
00080   template<typename T1, typename T2, typename glue_type> inline const Col& operator*=(const Glue<T1, T2, glue_type>& X);
00081     
00082   inline void  set_size(const u32 n_elem);
00083   inline void  set_size(const u32 n_rows, const u32 n_cols);
00084   
00085   template<typename eT2>
00086   inline void copy_size(const Mat<eT2>& m);
00087   
00088   inline void zeros();
00089   inline void zeros(const u32 n_elem);
00090   inline void zeros(const u32 n_rows, const u32 n_cols);
00091   
00092   inline void ones();
00093   inline void ones(const u32 n_elem);
00094   inline void ones(const u32 n_rows, const u32 n_cols);
00095   
00096   inline void load(const std::string name, const file_type type = auto_detect);
00097   };
00098 
00099 
00100 //! @}