Mercurial > hg > octave-nkf
comparison src/ov-struct.cc @ 7046:fbf8576cf399
[project @ 2007-10-22 12:12:20 by dbateman]
author | dbateman |
---|---|
date | Mon, 22 Oct 2007 12:12:20 +0000 |
parents | 1f16da18d85d |
children | 745a8299c2b5 eaaa74f38140 |
comparison
equal
deleted
inserted
replaced
7045:271fa61d8fae | 7046:fbf8576cf399 |
---|---|
397 panic_impossible (); | 397 panic_impossible (); |
398 } | 398 } |
399 } | 399 } |
400 else | 400 else |
401 gripe_failed_assignment (); | 401 gripe_failed_assignment (); |
402 | |
403 return retval; | |
404 } | |
405 | |
406 octave_value | |
407 octave_struct::do_index_op (const octave_value_list& idx, bool resize_ok) | |
408 { | |
409 octave_value retval; | |
410 | |
411 octave_idx_type n_idx = idx.length (); | |
412 | |
413 int nd = map.ndims (); | |
414 | |
415 switch (n_idx) | |
416 { | |
417 case 0: | |
418 retval = map; | |
419 break; | |
420 | |
421 case 1: | |
422 { | |
423 idx_vector i = idx (0).index_vector (); | |
424 | |
425 if (! error_state) | |
426 retval = map.index (i, resize_ok, Cell::resize_fill_value ()); | |
427 } | |
428 break; | |
429 | |
430 default: | |
431 { | |
432 if (n_idx == 2 && nd == 2) | |
433 { | |
434 idx_vector i = idx (0).index_vector (); | |
435 | |
436 if (! error_state) | |
437 { | |
438 idx_vector j = idx (1).index_vector (); | |
439 | |
440 if (! error_state) | |
441 retval = map.index (i, j, resize_ok, | |
442 Cell::resize_fill_value ()); | |
443 } | |
444 } | |
445 else | |
446 { | |
447 Array<idx_vector> idx_vec (n_idx); | |
448 | |
449 for (octave_idx_type i = 0; i < n_idx; i++) | |
450 { | |
451 idx_vec(i) = idx(i).index_vector (); | |
452 | |
453 if (error_state) | |
454 break; | |
455 } | |
456 | |
457 if (! error_state) | |
458 retval = map.index (idx_vec, resize_ok, | |
459 Cell::resize_fill_value ()); | |
460 } | |
461 } | |
462 break; | |
463 } | |
402 | 464 |
403 return retval; | 465 return retval; |
404 } | 466 } |
405 | 467 |
406 size_t | 468 size_t |