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)
 {