Mercurial > hg > octave-nkf
comparison liboctave/DiagArray2.cc @ 10350:12884915a8e4
merge MArray classes & improve Array interface
author | Jaroslav Hajek <highegg@gmail.com> |
---|---|
date | Sat, 23 Jan 2010 21:41:03 +0100 |
parents | 4c0cdbe0acca |
children | a3635bc1ea19 |
comparison
equal
deleted
inserted
replaced
10349:d4d13389c957 | 10350:12884915a8e4 |
---|---|
72 | 72 |
73 if (k == 0) | 73 if (k == 0) |
74 // The main diagonal is shallow-copied. | 74 // The main diagonal is shallow-copied. |
75 d = *this; | 75 d = *this; |
76 else if (k > 0 && k < cols ()) | 76 else if (k > 0 && k < cols ()) |
77 d = Array<T> (std::min (cols () - k, rows ()), T ()); | 77 d = Array<T> (std::min (cols () - k, rows ()), 1, T ()); |
78 else if (k < 0 && -k < rows ()) | 78 else if (k < 0 && -k < rows ()) |
79 d = Array<T> (std::min (rows () + k, cols ()), T ()); | 79 d = Array<T> (std::min (rows () + k, cols ()), 1, T ()); |
80 else | 80 else |
81 (*current_liboctave_error_handler) | 81 (*current_liboctave_error_handler) |
82 ("diag: requested diagonal out of range"); | 82 ("diag: requested diagonal out of range"); |
83 | 83 |
84 return d; | 84 return d; |
133 return Proxy (this, r, c); | 133 return Proxy (this, r, c); |
134 } | 134 } |
135 | 135 |
136 template <class T> | 136 template <class T> |
137 void | 137 void |
138 DiagArray2<T>::resize (octave_idx_type r, octave_idx_type c) | 138 DiagArray2<T>::resize (octave_idx_type r, octave_idx_type c, |
139 const T& rfv) | |
139 { | 140 { |
140 if (r < 0 || c < 0) | 141 if (r < 0 || c < 0) |
141 { | 142 { |
142 (*current_liboctave_error_handler) ("can't resize to negative dimensions"); | 143 (*current_liboctave_error_handler) ("can't resize to negative dimensions"); |
143 return; | 144 return; |
144 } | 145 } |
145 | 146 |
146 if (r != dim1 () || c != dim2 ()) | 147 if (r != dim1 () || c != dim2 ()) |
147 { | 148 { |
148 Array<T>::resize (std::min (r, c)); | 149 Array<T>::resize (std::min (r, c), 1, rfv); |
149 d1 = r; d2 = c; | |
150 } | |
151 } | |
152 | |
153 template <class T> | |
154 void | |
155 DiagArray2<T>::resize_fill (octave_idx_type r, octave_idx_type c, const T& val) | |
156 { | |
157 if (r < 0 || c < 0) | |
158 { | |
159 (*current_liboctave_error_handler) ("can't resize to negative dimensions"); | |
160 return; | |
161 } | |
162 | |
163 if (r != dim1 () || c != dim2 ()) | |
164 { | |
165 Array<T>::resize_fill (std::min (r, c), val); | |
166 d1 = r; d2 = c; | 150 d1 = r; d2 = c; |
167 } | 151 } |
168 } | 152 } |
169 | 153 |
170 template <class T> | 154 template <class T> |