annotate armadillo-3.900.4/include/armadillo_bits/Row_bones.hpp @ 84:55a047986812 tip

Update library URI so as not to be document-local
author Chris Cannam
date Wed, 22 Apr 2020 14:21:57 +0100
parents 1ec0e2823891
children
rev   line source
Chris@49 1 // Copyright (C) 2008-2013 NICTA (www.nicta.com.au)
Chris@49 2 // Copyright (C) 2008-2013 Conrad Sanderson
Chris@49 3 //
Chris@49 4 // This Source Code Form is subject to the terms of the Mozilla Public
Chris@49 5 // License, v. 2.0. If a copy of the MPL was not distributed with this
Chris@49 6 // file, You can obtain one at http://mozilla.org/MPL/2.0/.
Chris@49 7
Chris@49 8
Chris@49 9 //! \addtogroup Row
Chris@49 10 //! @{
Chris@49 11
Chris@49 12 //! Class for row vectors (matrices with only one row)
Chris@49 13
Chris@49 14 template<typename eT>
Chris@49 15 class Row : public Mat<eT>
Chris@49 16 {
Chris@49 17 public:
Chris@49 18
Chris@49 19 typedef eT elem_type;
Chris@49 20 typedef typename get_pod_type<eT>::result pod_type;
Chris@49 21
Chris@49 22 static const bool is_col = false;
Chris@49 23 static const bool is_row = true;
Chris@49 24
Chris@49 25 inline Row();
Chris@49 26 inline Row(const Row<eT>& X);
Chris@49 27 inline explicit Row(const uword N);
Chris@49 28 inline Row(const uword in_rows, const uword in_cols);
Chris@49 29
Chris@49 30 inline Row(const char* text);
Chris@49 31 inline const Row& operator=(const char* text);
Chris@49 32
Chris@49 33 inline Row(const std::string& text);
Chris@49 34 inline const Row& operator=(const std::string& text);
Chris@49 35
Chris@49 36 inline Row(const std::vector<eT>& x);
Chris@49 37 inline const Row& operator=(const std::vector<eT>& x);
Chris@49 38
Chris@49 39 #if defined(ARMA_USE_CXX11)
Chris@49 40 inline Row(const std::initializer_list<eT>& list);
Chris@49 41 inline const Row& operator=(const std::initializer_list<eT>& list);
Chris@49 42 #endif
Chris@49 43
Chris@49 44 inline explicit Row(const SpRow<eT>& X);
Chris@49 45
Chris@49 46 inline const Row& operator=(const eT val);
Chris@49 47
Chris@49 48 template<typename T1> inline Row(const Base<eT,T1>& X);
Chris@49 49 template<typename T1> inline const Row& operator=(const Base<eT,T1>& X);
Chris@49 50
Chris@49 51 inline Row( eT* aux_mem, const uword aux_length, const bool copy_aux_mem = true, const bool strict = true);
Chris@49 52 inline Row(const eT* aux_mem, const uword aux_length);
Chris@49 53
Chris@49 54 template<typename T1, typename T2>
Chris@49 55 inline explicit Row(const Base<pod_type,T1>& A, const Base<pod_type,T2>& B);
Chris@49 56
Chris@49 57 template<typename T1> inline Row(const BaseCube<eT,T1>& X);
Chris@49 58 template<typename T1> inline const Row& operator=(const BaseCube<eT,T1>& X);
Chris@49 59
Chris@49 60 inline Row(const subview_cube<eT>& X);
Chris@49 61 inline const Row& operator=(const subview_cube<eT>& X);
Chris@49 62
Chris@49 63 inline mat_injector<Row> operator<<(const eT val);
Chris@49 64
Chris@49 65 arma_inline const Op<Row<eT>,op_htrans> t() const;
Chris@49 66 arma_inline const Op<Row<eT>,op_htrans> ht() const;
Chris@49 67 arma_inline const Op<Row<eT>,op_strans> st() const;
Chris@49 68
Chris@49 69 arma_inline eT& col(const uword col_num);
Chris@49 70 arma_inline eT col(const uword col_num) const;
Chris@49 71
Chris@49 72 arma_inline subview_row<eT> cols(const uword in_col1, const uword in_col2);
Chris@49 73 arma_inline const subview_row<eT> cols(const uword in_col1, const uword in_col2) const;
Chris@49 74
Chris@49 75 arma_inline subview_row<eT> subvec(const uword in_col1, const uword in_col2);
Chris@49 76 arma_inline const subview_row<eT> subvec(const uword in_col1, const uword in_col2) const;
Chris@49 77
Chris@49 78 arma_inline subview_row<eT> subvec(const span& col_span);
Chris@49 79 arma_inline const subview_row<eT> subvec(const span& col_span) const;
Chris@49 80
Chris@49 81 using Mat<eT>::operator();
Chris@49 82
Chris@49 83 arma_inline subview_row<eT> operator()(const span& col_span);
Chris@49 84 arma_inline const subview_row<eT> operator()(const span& col_span) const;
Chris@49 85
Chris@49 86
Chris@49 87 inline void shed_col (const uword col_num);
Chris@49 88 inline void shed_cols(const uword in_col1, const uword in_col2);
Chris@49 89
Chris@49 90 inline void insert_cols(const uword col_num, const uword N, const bool set_to_zero = true);
Chris@49 91 template<typename T1> inline void insert_cols(const uword col_num, const Base<eT,T1>& X);
Chris@49 92
Chris@49 93
Chris@49 94 arma_inline arma_warn_unused eT& at(const uword i);
Chris@49 95 arma_inline arma_warn_unused const eT& at(const uword i) const;
Chris@49 96
Chris@49 97 arma_inline arma_warn_unused eT& at(const uword in_row, const uword in_col);
Chris@49 98 arma_inline arma_warn_unused const eT& at(const uword in_row, const uword in_col) const;
Chris@49 99
Chris@49 100
Chris@49 101 typedef eT* row_iterator;
Chris@49 102 typedef const eT* const_row_iterator;
Chris@49 103
Chris@49 104 inline row_iterator begin_row(const uword row_num);
Chris@49 105 inline const_row_iterator begin_row(const uword row_num) const;
Chris@49 106
Chris@49 107 inline row_iterator end_row (const uword row_num);
Chris@49 108 inline const_row_iterator end_row (const uword row_num) const;
Chris@49 109
Chris@49 110
Chris@49 111 template<uword fixed_n_elem> class fixed;
Chris@49 112
Chris@49 113
Chris@49 114 protected:
Chris@49 115
Chris@49 116 inline Row(const arma_fixed_indicator&, const uword in_n_elem, const eT* in_mem);
Chris@49 117
Chris@49 118
Chris@49 119 public:
Chris@49 120
Chris@49 121 #ifdef ARMA_EXTRA_ROW_PROTO
Chris@49 122 #include ARMA_INCFILE_WRAP(ARMA_EXTRA_ROW_PROTO)
Chris@49 123 #endif
Chris@49 124 };
Chris@49 125
Chris@49 126
Chris@49 127
Chris@49 128 template<typename eT>
Chris@49 129 template<uword fixed_n_elem>
Chris@49 130 class Row<eT>::fixed : public Row<eT>
Chris@49 131 {
Chris@49 132 private:
Chris@49 133
Chris@49 134 static const bool use_extra = (fixed_n_elem > arma_config::mat_prealloc);
Chris@49 135
Chris@49 136 arma_align_mem eT mem_local_extra[ (use_extra) ? fixed_n_elem : 1 ];
Chris@49 137
Chris@49 138
Chris@49 139 public:
Chris@49 140
Chris@49 141 typedef fixed<fixed_n_elem> Row_fixed_type;
Chris@49 142
Chris@49 143 typedef eT elem_type;
Chris@49 144 typedef typename get_pod_type<eT>::result pod_type;
Chris@49 145
Chris@49 146 static const bool is_col = false;
Chris@49 147 static const bool is_row = true;
Chris@49 148
Chris@49 149 static const uword n_rows = 1;
Chris@49 150 static const uword n_cols = fixed_n_elem;
Chris@49 151 static const uword n_elem = fixed_n_elem;
Chris@49 152
Chris@49 153 arma_inline fixed();
Chris@49 154 arma_inline fixed(const fixed<fixed_n_elem>& X);
Chris@49 155 inline fixed(const subview_cube<eT>& X);
Chris@49 156
Chris@49 157 template<typename T1> inline fixed(const Base<eT,T1>& A);
Chris@49 158 template<typename T1, typename T2> inline fixed(const Base<pod_type,T1>& A, const Base<pod_type,T2>& B);
Chris@49 159
Chris@49 160 inline fixed(const eT* aux_mem);
Chris@49 161
Chris@49 162 inline fixed(const char* text);
Chris@49 163 inline fixed(const std::string& text);
Chris@49 164
Chris@49 165 template<typename T1> inline const Row& operator=(const Base<eT,T1>& A);
Chris@49 166
Chris@49 167 inline const Row& operator=(const eT val);
Chris@49 168 inline const Row& operator=(const char* text);
Chris@49 169 inline const Row& operator=(const std::string& text);
Chris@49 170 inline const Row& operator=(const subview_cube<eT>& X);
Chris@49 171
Chris@49 172 using Row<eT>::operator();
Chris@49 173
Chris@49 174 #if defined(ARMA_USE_CXX11)
Chris@49 175 inline fixed(const std::initializer_list<eT>& list);
Chris@49 176 inline const Row& operator=(const std::initializer_list<eT>& list);
Chris@49 177 #endif
Chris@49 178
Chris@49 179 arma_inline const Op< Row_fixed_type, op_htrans > t() const;
Chris@49 180 arma_inline const Op< Row_fixed_type, op_htrans > ht() const;
Chris@49 181 arma_inline const Op< Row_fixed_type, op_strans > st() const;
Chris@49 182
Chris@49 183 arma_inline arma_warn_unused const eT& at_alt (const uword i) const;
Chris@49 184
Chris@49 185 arma_inline arma_warn_unused eT& operator[] (const uword i);
Chris@49 186 arma_inline arma_warn_unused const eT& operator[] (const uword i) const;
Chris@49 187 arma_inline arma_warn_unused eT& at (const uword i);
Chris@49 188 arma_inline arma_warn_unused const eT& at (const uword i) const;
Chris@49 189 arma_inline arma_warn_unused eT& operator() (const uword i);
Chris@49 190 arma_inline arma_warn_unused const eT& operator() (const uword i) const;
Chris@49 191
Chris@49 192 arma_inline arma_warn_unused eT& at (const uword in_row, const uword in_col);
Chris@49 193 arma_inline arma_warn_unused const eT& at (const uword in_row, const uword in_col) const;
Chris@49 194 arma_inline arma_warn_unused eT& operator() (const uword in_row, const uword in_col);
Chris@49 195 arma_inline arma_warn_unused const eT& operator() (const uword in_row, const uword in_col) const;
Chris@49 196
Chris@49 197 arma_inline arma_warn_unused eT* memptr();
Chris@49 198 arma_inline arma_warn_unused const eT* memptr() const;
Chris@49 199
Chris@49 200 arma_hot inline const Row<eT>& fill(const eT val);
Chris@49 201 arma_hot inline const Row<eT>& zeros();
Chris@49 202 arma_hot inline const Row<eT>& ones();
Chris@49 203 };
Chris@49 204
Chris@49 205
Chris@49 206
Chris@49 207 //! @}