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