Mercurial > octave
diff src/pt-misc.cc @ 672:066e1551639c
[project @ 1994-09-07 21:10:32 by jwe]
author | jwe |
---|---|
date | Wed, 07 Sep 1994 21:11:36 +0000 |
parents | 8e4e7e5f307e |
children | 36ba0576bd1b |
line wrap: on
line diff
--- a/src/pt-misc.cc Wed Sep 07 19:32:26 1994 +0000 +++ b/src/pt-misc.cc Wed Sep 07 21:11:36 1994 +0000 @@ -130,6 +130,66 @@ return retval; } +Octave_object +tree_statement_list::eval (int print, int nargout) +{ + Octave_object retval; + + if (nargout > 1) + { + int pf; + + if (error_state) + return retval; + + for (Pix p = first (); p != 0; next (p)) + { + tree_statement *elt = this->operator () (p); + + if (print == 0) + pf = 0; + else + pf = elt->print_flag; + + tree_command *cmd = elt->command; + tree_expression *expr = elt->expression; + + if (cmd || expr) + { + if (cmd) + cmd->eval (); + else + { + if (expr->is_multi_val_ret_expression ()) + { + Octave_object args; + tree_multi_val_ret *t = (tree_multi_val_ret *) expr; + retval = t->eval (pf, nargout, args); + } + else + retval = expr->eval (pf); + } + + if (error_state) + return tree_constant (); + + if (breaking || continuing) + break; + + if (returning) + break; + } + else + retval = Octave_object (); + } + return retval; + } + else + retval = eval (print); + + return retval; +} + void tree_statement_list::print_code (ostream& os) {