Mercurial > hg > octave-lyh
comparison liboctave/Array.h @ 9840:c0b54271904b
improve safe numel() calculation for arrays
author | Jaroslav Hajek <highegg@gmail.com> |
---|---|
date | Thu, 19 Nov 2009 15:48:33 +0100 |
parents | f80c566bc751 |
children | ead4f9c82a9a |
comparison
equal
deleted
inserted
replaced
9839:3e8b4c80ae63 | 9840:c0b54271904b |
---|---|
136 slice_data = rep->data; | 136 slice_data = rep->data; |
137 slice_len = rep->len; | 137 slice_len = rep->len; |
138 } | 138 } |
139 | 139 |
140 Array (T *d, const dim_vector& dv) | 140 Array (T *d, const dim_vector& dv) |
141 : rep (new typename Array<T>::ArrayRep (d, get_size (dv))), | 141 : rep (new typename Array<T>::ArrayRep (d, dv.numel ())), |
142 dimensions (dv) | 142 dimensions (dv) |
143 { | 143 { |
144 slice_data = rep->data; | 144 slice_data = rep->data; |
145 slice_len = rep->len; | 145 slice_len = rep->len; |
146 } | 146 } |
222 } | 222 } |
223 | 223 |
224 public: | 224 public: |
225 | 225 |
226 Array (const dim_vector& dv) | 226 Array (const dim_vector& dv) |
227 : rep (new typename Array<T>::ArrayRep (get_size (dv))), | 227 : rep (new typename Array<T>::ArrayRep (dv.safe_numel ())), |
228 dimensions (dv) | 228 dimensions (dv) |
229 { | 229 { |
230 slice_data = rep->data; | 230 slice_data = rep->data; |
231 slice_len = rep->len; | 231 slice_len = rep->len; |
232 } | 232 } |
233 | 233 |
234 Array (const dim_vector& dv, const T& val) | 234 Array (const dim_vector& dv, const T& val) |
235 : rep (new typename Array<T>::ArrayRep (get_size (dv))), | 235 : rep (new typename Array<T>::ArrayRep (dv.safe_numel ())), |
236 dimensions (dv) | 236 dimensions (dv) |
237 { | 237 { |
238 slice_data = rep->data; | 238 slice_data = rep->data; |
239 slice_len = rep->len; | 239 slice_len = rep->len; |
240 fill (val); | 240 fill (val); |
299 Array<T> squeeze (void) const; | 299 Array<T> squeeze (void) const; |
300 | 300 |
301 void chop_trailing_singletons (void) | 301 void chop_trailing_singletons (void) |
302 { dimensions.chop_trailing_singletons (); } | 302 { dimensions.chop_trailing_singletons (); } |
303 | 303 |
304 static octave_idx_type get_size (octave_idx_type r, octave_idx_type c); | |
305 static octave_idx_type get_size (octave_idx_type r, octave_idx_type c, octave_idx_type p); | |
306 static octave_idx_type get_size (const dim_vector& dv); | |
307 | |
308 octave_idx_type compute_index (const Array<octave_idx_type>& ra_idx) const; | 304 octave_idx_type compute_index (const Array<octave_idx_type>& ra_idx) const; |
309 | 305 |
310 T range_error (const char *fcn, octave_idx_type n) const; | 306 T range_error (const char *fcn, octave_idx_type n) const; |
311 T& range_error (const char *fcn, octave_idx_type n); | 307 T& range_error (const char *fcn, octave_idx_type n); |
312 | 308 |