diff src/toplev.cc @ 5744:1c36a2e82266

[project @ 2006-04-06 19:38:34 by jwe]
author jwe
date Thu, 06 Apr 2006 19:38:35 +0000
parents a527e0f77aa5
children 7ba9ad1fec11
line wrap: on
line diff
--- a/src/toplev.cc	Thu Apr 06 08:20:23 2006 +0000
+++ b/src/toplev.cc	Thu Apr 06 19:38:35 2006 +0000
@@ -109,8 +109,27 @@
   return retval;
 }
 
+octave_user_script *
+octave_call_stack::do_caller_user_script (void)
+{
+  octave_user_script *retval = 0;
+
+  for (iterator p = cs.begin (); p != cs.end (); p++)
+    {
+      octave_function *f = *p;
+
+      if (f && f->is_user_script ())
+	{
+	  retval = dynamic_cast<octave_user_script *> (f);
+	  break;
+	}
+    }
+
+  return retval;
+}
+
 octave_user_function *
-octave_call_stack::do_caller_script (void)
+octave_call_stack::do_caller_user_function (void)
 {
   octave_user_function *retval = 0;
 
@@ -128,6 +147,34 @@
   return retval;
 }
 
+octave_function *
+octave_call_stack::do_caller_user_script_or_function (void)
+{
+  octave_function *retval = 0;
+
+  for (iterator p = cs.begin (); p != cs.end (); p++)
+    {
+      octave_function *f = *p;
+
+      if (f && (f->is_user_script () || f->is_user_function ()))
+	{
+	  retval = f;
+	  break;
+	}
+    }
+
+  return retval;
+}
+
+void
+octave_call_stack::unwind_pop_script (void *)
+{
+  octave_function *f = top ();
+  pop ();
+  assert (f && f->is_user_script ());
+  delete f;
+}
+
 static void
 recover_from_exception (void)
 {