diff src/ov-usr-fcn.h @ 3875:09323fcea5ab

[project @ 2002-03-06 17:59:40 by jwe]
author jwe
date Wed, 06 Mar 2002 17:59:40 +0000
parents 44386b0e53da
children f9ea3dcf58ee
line wrap: on
line diff
--- a/src/ov-usr-fcn.h
+++ b/src/ov-usr-fcn.h
@@ -36,6 +36,8 @@
 #include "ov-fcn.h"
 #include "ov-typeinfo.h"
 
+#include "SLStack.h"
+
 class string_vector;
 
 class octave_value;
@@ -115,8 +117,19 @@
   std::string function_name (void)
     { return fcn_name; }
 
-  void clear_args_passed (void)
-    { args_passed = octave_value_list (); }
+  void save_args_passed (const octave_value_list& args)
+    {
+      if (call_depth > 1)
+	saved_args.push (args_passed);
+
+      args_passed = args;
+    }
+
+  void restore_args_passed (void)
+    {
+      if (! saved_args.empty ())
+	args_passed = saved_args.pop ();
+    }
 
   octave_value_list
   do_multi_index_op (int nargout, const octave_value_list& args);
@@ -187,6 +200,9 @@
   // The values that were passed as arguments.
   octave_value_list args_passed;
 
+  // A place to store the passed args for recursive calls.
+  SLStack<octave_value_list> saved_args;
+
   // The number of arguments passed in.
   int num_args_passed;