# HG changeset patch # User Jaroslav Hajek # Date 1237754666 -3600 # Node ID f26e0f00ce010a4d07ee3101a51c40043f0aaa5c # Parent 17ba311ef110970c02c0dbdd5a532ab933ccf595 fix simple looping over structs diff -r 17ba311ef110 -r f26e0f00ce01 src/ChangeLog --- a/src/ChangeLog Sun Mar 22 15:19:22 2009 +0100 +++ b/src/ChangeLog Sun Mar 22 21:44:26 2009 +0100 @@ -1,3 +1,10 @@ +2009-03-22 Jaroslav Hajek + + * pt-eval.cc (tree_evaluator::visit_simple_for_command): + Remove struct branch, handle structs by the generic code. + (tree_evaluator::visit_complex_for_command): + Add missing const qualifiers. + 2009-03-21 Jaroslav Hajek * ov-base-diag.cc: Add missing include. diff -r 17ba311ef110 -r f26e0f00ce01 src/pt-eval.cc --- a/src/pt-eval.cc Sun Mar 22 15:19:22 2009 +0100 +++ b/src/pt-eval.cc Sun Mar 22 21:44:26 2009 +0100 @@ -339,8 +339,8 @@ DO_SIMPLE_FOR_LOOP_ONCE (rhs); } - else if (rhs.is_matrix_type () - || rhs.is_cell () || rhs.is_string ()) + else if (rhs.is_matrix_type () || rhs.is_cell () || rhs.is_string () + || rhs.is_map ()) { // A matrix or cell is reshaped to 2 dimensions and iterated by // columns. @@ -384,27 +384,6 @@ } } } - else if (rhs.is_map ()) - { - Octave_map tmp_val (rhs.map_value ()); - - bool quit = false; - - for (Octave_map::iterator p = tmp_val.begin (); - p != tmp_val.end (); - p++) - { - Cell val_lst = tmp_val.contents (p); - - octave_value val - = (val_lst.length () == 1) ? val_lst(0) : octave_value (val_lst); - - DO_SIMPLE_FOR_LOOP_ONCE (val); - - if (quit) - break; - } - } else { ::error ("invalid type in for loop expression near line %d, column %d", @@ -456,15 +435,15 @@ octave_lvalue key_ref = elt->lvalue (); - Octave_map tmp_val (rhs.map_value ()); + const Octave_map tmp_val (rhs.map_value ()); tree_statement_list *loop_body = cmd.body (); - for (Octave_map::iterator q = tmp_val.begin (); q != tmp_val.end (); q++) + for (Octave_map::const_iterator q = tmp_val.begin (); q != tmp_val.end (); q++) { octave_value key = tmp_val.key (q); - Cell val_lst = tmp_val.contents (q); + const Cell val_lst = tmp_val.contents (q); octave_idx_type n = tmp_val.numel ();