Mercurial > hg > octave-nkf
comparison liboctave/idx-vector.cc @ 11586:12df7854fa7c
strip trailing whitespace from source files
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Thu, 20 Jan 2011 17:24:59 -0500 |
parents | 57632dea2446 |
children | 4ced6b90fffb |
comparison
equal
deleted
inserted
replaced
11585:1473d0cf86d2 | 11586:12df7854fa7c |
---|---|
96 | 96 |
97 count++; | 97 count++; |
98 return this; | 98 return this; |
99 } | 99 } |
100 | 100 |
101 std::ostream& | 101 std::ostream& |
102 idx_vector::idx_colon_rep::print (std::ostream& os) const | 102 idx_vector::idx_colon_rep::print (std::ostream& os) const |
103 { | 103 { |
104 return os << ":"; | 104 return os << ":"; |
105 } | 105 } |
106 | 106 |
132 err = true; | 132 err = true; |
133 } | 133 } |
134 else if (len > 0) | 134 else if (len > 0) |
135 { | 135 { |
136 if (r.all_elements_are_ints ()) | 136 if (r.all_elements_are_ints ()) |
137 { | 137 { |
138 start = static_cast<octave_idx_type> (r.base ()) - 1; | 138 start = static_cast<octave_idx_type> (r.base ()) - 1; |
139 step = static_cast<octave_idx_type> (r.inc ()); | 139 step = static_cast<octave_idx_type> (r.inc ()); |
140 if (start < 0 || (step < 0 && start + (len-1)*step < 0)) | 140 if (start < 0 || (step < 0 && start + (len-1)*step < 0)) |
141 { | 141 { |
142 gripe_invalid_index (); | 142 gripe_invalid_index (); |
193 count++; | 193 count++; |
194 return this; | 194 return this; |
195 } | 195 } |
196 } | 196 } |
197 | 197 |
198 std::ostream& | 198 std::ostream& |
199 idx_vector::idx_range_rep::print (std::ostream& os) const | 199 idx_vector::idx_range_rep::print (std::ostream& os) const |
200 { | 200 { |
201 os << start << ':' << step << ':' << start + len*step; | 201 os << start << ':' << step << ':' << start + len*step; |
202 return os; | 202 return os; |
203 } | 203 } |
204 | 204 |
205 Range | 205 Range |
206 idx_vector::idx_range_rep::unconvert (void) const | 206 idx_vector::idx_range_rep::unconvert (void) const |
207 { | 207 { |
208 return Range (static_cast<double> (start+1), | 208 return Range (static_cast<double> (start+1), |
209 static_cast<double> (step), len); | 209 static_cast<double> (step), len); |
210 } | 210 } |
211 | 211 |
212 Array<octave_idx_type> | 212 Array<octave_idx_type> |
213 idx_vector::idx_range_rep::as_array (void) | 213 idx_vector::idx_range_rep::as_array (void) |
218 | 218 |
219 return retval; | 219 return retval; |
220 } | 220 } |
221 | 221 |
222 inline octave_idx_type | 222 inline octave_idx_type |
223 convert_index (octave_idx_type i, bool& conv_error, | 223 convert_index (octave_idx_type i, bool& conv_error, |
224 octave_idx_type& ext) | 224 octave_idx_type& ext) |
225 { | 225 { |
226 if (i <= 0) | 226 if (i <= 0) |
227 conv_error = true; | 227 conv_error = true; |
228 | 228 |
229 if (ext < i) | 229 if (ext < i) |
230 ext = i; | 230 ext = i; |
231 | 231 |
249 return convert_index (static_cast<double> (x), conv_error, ext); | 249 return convert_index (static_cast<double> (x), conv_error, ext); |
250 } | 250 } |
251 | 251 |
252 template <class T> | 252 template <class T> |
253 inline octave_idx_type | 253 inline octave_idx_type |
254 convert_index (octave_int<T> x, bool& conv_error, | 254 convert_index (octave_int<T> x, bool& conv_error, |
255 octave_idx_type& ext) | 255 octave_idx_type& ext) |
256 { | 256 { |
257 octave_idx_type i = octave_int<octave_idx_type> (x).value (); | 257 octave_idx_type i = octave_int<octave_idx_type> (x).value (); |
258 | 258 |
259 return convert_index (i, conv_error, ext); | 259 return convert_index (i, conv_error, ext); |
271 | 271 |
272 if (err) | 272 if (err) |
273 gripe_invalid_index (); | 273 gripe_invalid_index (); |
274 } | 274 } |
275 | 275 |
276 idx_vector::idx_scalar_rep::idx_scalar_rep (octave_idx_type i) | 276 idx_vector::idx_scalar_rep::idx_scalar_rep (octave_idx_type i) |
277 : data (i) | 277 : data (i) |
278 { | 278 { |
279 if (data < 0) | 279 if (data < 0) |
280 { | 280 { |
281 gripe_invalid_index (); | 281 gripe_invalid_index (); |
282 err = true; | 282 err = true; |
283 } | 283 } |
284 } | 284 } |
337 } | 337 } |
338 | 338 |
339 // Note that this makes a shallow copy of the index array. | 339 // Note that this makes a shallow copy of the index array. |
340 | 340 |
341 idx_vector::idx_vector_rep::idx_vector_rep (const Array<octave_idx_type>& inda) | 341 idx_vector::idx_vector_rep::idx_vector_rep (const Array<octave_idx_type>& inda) |
342 : data (inda.data ()), len (inda.numel ()), ext (0), | 342 : data (inda.data ()), len (inda.numel ()), ext (0), |
343 aowner (new Array<octave_idx_type> (inda)), orig_dims (inda.dims ()) | 343 aowner (new Array<octave_idx_type> (inda)), orig_dims (inda.dims ()) |
344 { | 344 { |
345 if (len != 0) | 345 if (len != 0) |
346 { | 346 { |
347 octave_idx_type max = -1; | 347 octave_idx_type max = -1; |
348 for (octave_idx_type i = 0; i < len; i++) | 348 for (octave_idx_type i = 0; i < len; i++) |
349 { | 349 { |
350 octave_idx_type k = inda.xelem (i); | 350 octave_idx_type k = inda.xelem (i); |
351 if (k < 0) | 351 if (k < 0) |
352 err = true; | 352 err = true; |
353 else if (k > max) | 353 else if (k > max) |
354 max = k; | 354 max = k; |
355 } | 355 } |
356 | 356 |
357 ext = max + 1; | 357 ext = max + 1; |
358 | 358 |
361 } | 361 } |
362 } | 362 } |
363 | 363 |
364 idx_vector::idx_vector_rep::idx_vector_rep (const Array<octave_idx_type>& inda, | 364 idx_vector::idx_vector_rep::idx_vector_rep (const Array<octave_idx_type>& inda, |
365 octave_idx_type _ext, direct) | 365 octave_idx_type _ext, direct) |
366 : data (inda.data ()), len (inda.numel ()), ext (_ext), | 366 : data (inda.data ()), len (inda.numel ()), ext (_ext), |
367 aowner (new Array<octave_idx_type> (inda)), orig_dims (inda.dims ()) | 367 aowner (new Array<octave_idx_type> (inda)), orig_dims (inda.dims ()) |
368 { | 368 { |
369 // No checking. | 369 // No checking. |
370 if (ext < 0) | 370 if (ext < 0) |
371 { | 371 { |
398 len = bnda.nnz (); | 398 len = bnda.nnz (); |
399 | 399 |
400 const dim_vector dv = bnda.dims (); | 400 const dim_vector dv = bnda.dims (); |
401 | 401 |
402 if (! dv.all_zero ()) | 402 if (! dv.all_zero ()) |
403 orig_dims = ((dv.length () == 2 && dv(0) == 1) | 403 orig_dims = ((dv.length () == 2 && dv(0) == 1) |
404 ? dim_vector (1, len) : dim_vector (len, 1)); | 404 ? dim_vector (1, len) : dim_vector (len, 1)); |
405 | 405 |
406 if (len != 0) | 406 if (len != 0) |
407 { | 407 { |
408 octave_idx_type *d = new octave_idx_type [len]; | 408 octave_idx_type *d = new octave_idx_type [len]; |
439 | 439 |
440 octave_idx_type k = 0; | 440 octave_idx_type k = 0; |
441 // FIXME: I hope this is OK, i.e. the element iterated this way are correctly ordered. | 441 // FIXME: I hope this is OK, i.e. the element iterated this way are correctly ordered. |
442 for (octave_idx_type i = 0; i < nnz; i++) | 442 for (octave_idx_type i = 0; i < nnz; i++) |
443 { | 443 { |
444 if (bnda.data (i)) | 444 if (bnda.data (i)) |
445 d[k++] = bnda.cidx (i) + bnda.rows () * bnda.ridx (i); | 445 d[k++] = bnda.cidx (i) + bnda.rows () * bnda.ridx (i); |
446 } | 446 } |
447 | 447 |
448 data = d; | 448 data = d; |
449 | 449 |
450 ext = d[k-1] + 1; | 450 ext = d[k-1] + 1; |
451 } | 451 } |
452 } | 452 } |
453 | 453 |
454 idx_vector::idx_vector_rep::~idx_vector_rep (void) | 454 idx_vector::idx_vector_rep::~idx_vector_rep (void) |
455 { | 455 { |
456 if (aowner) | 456 if (aowner) |
457 delete aowner; | 457 delete aowner; |
458 else | 458 else |
459 delete [] data; | 459 delete [] data; |
460 } | 460 } |
461 | 461 |
462 octave_idx_type | 462 octave_idx_type |
463 idx_vector::idx_vector_rep::checkelem (octave_idx_type n) const | 463 idx_vector::idx_vector_rep::checkelem (octave_idx_type n) const |
464 { | 464 { |
479 count++; | 479 count++; |
480 return this; | 480 return this; |
481 } | 481 } |
482 | 482 |
483 // This is wrapped in auto_ptr so that we don't leak on out-of-memory. | 483 // This is wrapped in auto_ptr so that we don't leak on out-of-memory. |
484 std::auto_ptr<idx_vector_rep> new_rep ( | 484 std::auto_ptr<idx_vector_rep> new_rep ( |
485 new idx_vector_rep (0, len, ext, orig_dims, DIRECT)); | 485 new idx_vector_rep (0, len, ext, orig_dims, DIRECT)); |
486 | 486 |
487 if (ext > len*xlog2 (1.0 + len)) | 487 if (ext > len*xlog2 (1.0 + len)) |
488 { | 488 { |
489 // Use standard sort via octave_sort. | 489 // Use standard sort via octave_sort. |
602 } | 602 } |
603 | 603 |
604 return new_rep.release (); | 604 return new_rep.release (); |
605 } | 605 } |
606 | 606 |
607 std::ostream& | 607 std::ostream& |
608 idx_vector::idx_vector_rep::print (std::ostream& os) const | 608 idx_vector::idx_vector_rep::print (std::ostream& os) const |
609 { | 609 { |
610 os << '['; | 610 os << '['; |
611 | 611 |
612 for (octave_idx_type ii = 0; ii < len - 1; ii++) | 612 for (octave_idx_type ii = 0; ii < len - 1; ii++) |
673 ext--; | 673 ext--; |
674 | 674 |
675 const dim_vector dv = bnda.dims (); | 675 const dim_vector dv = bnda.dims (); |
676 | 676 |
677 if (! dv.all_zero ()) | 677 if (! dv.all_zero ()) |
678 orig_dims = ((dv.length () == 2 && dv(0) == 1) | 678 orig_dims = ((dv.length () == 2 && dv(0) == 1) |
679 ? dim_vector (1, len) : dim_vector (len, 1)); | 679 ? dim_vector (1, len) : dim_vector (len, 1)); |
680 | 680 |
681 aowner = new Array<bool> (bnda); | 681 aowner = new Array<bool> (bnda); |
682 data = bnda.data (); | 682 data = bnda.data (); |
683 } | 683 } |
684 | 684 |
685 idx_vector::idx_mask_rep::~idx_mask_rep (void) | 685 idx_vector::idx_mask_rep::~idx_mask_rep (void) |
686 { | 686 { |
687 if (aowner) | 687 if (aowner) |
688 delete aowner; | 688 delete aowner; |
689 else | 689 else |
690 delete [] data; | 690 delete [] data; |
691 } | 691 } |
692 | 692 |
693 octave_idx_type | 693 octave_idx_type |
694 idx_vector::idx_mask_rep::xelem (octave_idx_type n) const | 694 idx_vector::idx_mask_rep::xelem (octave_idx_type n) const |
695 { | 695 { |
718 } | 718 } |
719 | 719 |
720 return xelem (n); | 720 return xelem (n); |
721 } | 721 } |
722 | 722 |
723 std::ostream& | 723 std::ostream& |
724 idx_vector::idx_mask_rep::print (std::ostream& os) const | 724 idx_vector::idx_mask_rep::print (std::ostream& os) const |
725 { | 725 { |
726 os << '['; | 726 os << '['; |
727 | 727 |
728 for (octave_idx_type ii = 0; ii < ext - 1; ii++) | 728 for (octave_idx_type ii = 0; ii < ext - 1; ii++) |
1148 OCTAVE_LOCAL_BUFFER_INIT (bool, left, n, true); | 1148 OCTAVE_LOCAL_BUFFER_INIT (bool, left, n, true); |
1149 | 1149 |
1150 retval = true; | 1150 retval = true; |
1151 | 1151 |
1152 for (octave_idx_type i = 0, len = length (); i < len; i++) | 1152 for (octave_idx_type i = 0, len = length (); i < len; i++) |
1153 { | 1153 { |
1154 octave_idx_type k = xelem (i); | 1154 octave_idx_type k = xelem (i); |
1155 if (left[k]) | 1155 if (left[k]) |
1156 left[k] = false; | 1156 left[k] = false; |
1157 else | 1157 else |
1158 { | 1158 { |
1209 const bool *data = r->get_data (); | 1209 const bool *data = r->get_data (); |
1210 octave_idx_type ext = r->extent (0), len = r->length (0); | 1210 octave_idx_type ext = r->extent (0), len = r->length (0); |
1211 octave_idx_type *idata = new octave_idx_type [len]; | 1211 octave_idx_type *idata = new octave_idx_type [len]; |
1212 | 1212 |
1213 for (octave_idx_type i = 0, j = 0; i < ext; i++) | 1213 for (octave_idx_type i = 0, j = 0; i < ext; i++) |
1214 if (data[i]) | 1214 if (data[i]) |
1215 idata[j++] = i; | 1215 idata[j++] = i; |
1216 | 1216 |
1217 ext = len > 0 ? idata[len - 1] + 1 : 0; | 1217 ext = len > 0 ? idata[len - 1] + 1 : 0; |
1218 | 1218 |
1219 return new idx_vector_rep (idata, len, ext, r->orig_dimensions (), | 1219 return new idx_vector_rep (idata, len, ext, r->orig_dimensions (), |
1222 else | 1222 else |
1223 return *this; | 1223 return *this; |
1224 } | 1224 } |
1225 | 1225 |
1226 void idx_vector::unconvert (idx_class_type& iclass, | 1226 void idx_vector::unconvert (idx_class_type& iclass, |
1227 double& scalar, Range& range, | 1227 double& scalar, Range& range, |
1228 Array<double>& array, Array<bool>& mask) const | 1228 Array<double>& array, Array<bool>& mask) const |
1229 { | 1229 { |
1230 iclass = idx_class (); | 1230 iclass = idx_class (); |
1231 switch (iclass) | 1231 switch (iclass) |
1232 { | 1232 { |
1265 assert (false); | 1265 assert (false); |
1266 break; | 1266 break; |
1267 } | 1267 } |
1268 } | 1268 } |
1269 | 1269 |
1270 Array<octave_idx_type> | 1270 Array<octave_idx_type> |
1271 idx_vector::as_array (void) const | 1271 idx_vector::as_array (void) const |
1272 { | 1272 { |
1273 return rep->as_array (); | 1273 return rep->as_array (); |
1274 } | 1274 } |
1275 | 1275 |
1276 bool | 1276 bool |
1277 idx_vector::is_vector (void) const | 1277 idx_vector::is_vector (void) const |
1278 { | 1278 { |
1279 return idx_class () != class_vector || orig_dimensions ().is_vector (); | 1279 return idx_class () != class_vector || orig_dimensions ().is_vector (); |
1280 } | 1280 } |
1281 | 1281 |
1282 octave_idx_type | 1282 octave_idx_type |
1283 idx_vector::freeze (octave_idx_type z_len, const char *, bool resize_ok) | 1283 idx_vector::freeze (octave_idx_type z_len, const char *, bool resize_ok) |
1284 { | 1284 { |
1285 if (! resize_ok && extent (z_len) > z_len) | 1285 if (! resize_ok && extent (z_len) > z_len) |
1286 { | 1286 { |
1287 (*current_liboctave_error_handler) | 1287 (*current_liboctave_error_handler) |
1291 } | 1291 } |
1292 | 1292 |
1293 return length (z_len); | 1293 return length (z_len); |
1294 } | 1294 } |
1295 | 1295 |
1296 octave_idx_type | 1296 octave_idx_type |
1297 idx_vector::ones_count () const | 1297 idx_vector::ones_count () const |
1298 { | 1298 { |
1299 octave_idx_type n = 0; | 1299 octave_idx_type n = 0; |
1300 | 1300 |
1301 if (is_colon ()) | 1301 if (is_colon ()) |