diff src/toplev.cc @ 5743:a527e0f77aa5

[project @ 2006-04-06 08:20:21 by jwe]
author jwe
date Thu, 06 Apr 2006 08:20:23 +0000
parents 34cda7d94c08
children 1c36a2e82266
line wrap: on
line diff
--- a/src/toplev.cc	Thu Apr 06 08:15:49 2006 +0000
+++ b/src/toplev.cc	Thu Apr 06 08:20:23 2006 +0000
@@ -90,15 +90,44 @@
 // Current command to execute.
 tree_statement_list *global_command = 0;
 
-// Pointer to function that is currently being evaluated.
-octave_function *curr_function = 0;
-
-// Pointer to caller of curr_function.
-octave_function *curr_caller_function = 0;
-
 // Pointer to parent function that is currently being evaluated.
 octave_function *curr_parent_function = 0;
 
+octave_call_stack *octave_call_stack::instance = 0;
+
+octave_function *
+octave_call_stack::do_caller (void)
+{
+  octave_function *retval = 0;
+
+  if (cs.size () > 1)
+    {
+      iterator p = cs.begin ();
+      retval = *++p;
+    }
+
+  return retval;
+}
+
+octave_user_function *
+octave_call_stack::do_caller_script (void)
+{
+  octave_user_function *retval = 0;
+
+  for (iterator p = cs.begin (); p != cs.end (); p++)
+    {
+      octave_function *f = *p;
+
+      if (f && f->is_user_function ())
+	{
+	  retval = dynamic_cast<octave_user_function *> (f);
+	  break;
+	}
+    }
+
+  return retval;
+}
+
 static void
 recover_from_exception (void)
 {