*** empty log message ***
[bpt/guile.git] / libguile / gh_eval.c
index 55d4cdc..9931dbe 100644 (file)
@@ -1,4 +1,4 @@
-/*      Copyright (C) 1995,1996,1997 Free Software Foundation, Inc.
+/*      Copyright (C) 1995,1996,1997,1998 Free Software Foundation, Inc.
 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
 
 typedef SCM (*gh_eval_t) (void *data, SCM jmpbuf);
 
-struct cwss_data
-  {
-    SCM tag;
-    scm_catch_body_t body;
-    void *data;
-  };
-
 /* Evaluate the string; toss the value.  */
-#if 0
-void
-gh_eval_str (char *scheme_code)
-{
-  /* Create a port that reads characters from SCHEME_CODE.  */
-  SCM port = scm_mkstrport (SCM_MAKINUM (0),
-                           scm_makfrom0str (scheme_code),
-                           SCM_OPN | SCM_RDNG,
-                           "guile_main");
-  SCM form;
-
-  /* Read expressions from that port; ignore the values.  */
-  while ((form = scm_read (port, SCM_BOOL_F, SCM_BOOL_F)) != SCM_EOF_VAL)
-    scm_eval_x (form);
-
-  /* Dispose of the port when done.  (Oh icky.)  */
-  scm_close_port (port);
-}
-#endif /* 0 */
-
 SCM
 gh_eval_str (char *scheme_code)
 {
@@ -90,7 +63,7 @@ gh_eval_file (char *fname)
 }
 
 static SCM
-eval_str_wrapper (void *data, SCM jmpbuf)
+eval_str_wrapper (void *data)
 {
 /*   gh_eval_t real_eval_proc = (gh_eval_t) (* ((gh_eval_t *) data)); */
 
@@ -103,7 +76,7 @@ gh_eval_str_with_catch (char *scheme_code, scm_catch_handler_t handler)
 {
   /* FIXME: not there yet */
   return gh_catch (SCM_BOOL_T, (scm_catch_body_t) eval_str_wrapper, scheme_code,
-                  (scm_catch_handler_t) gh_standard_handler, scheme_code);
+                  (scm_catch_handler_t) handler, scheme_code);
 }
 
 SCM
@@ -112,51 +85,19 @@ gh_eval_str_with_standard_handler (char *scheme_code)
   return gh_eval_str_with_catch (scheme_code, gh_standard_handler);
 }
 
-
-SCM
-ss_handler (void *data, SCM tag, SCM throw_args)
-{
-  /* Save the stack */
-  SCM_SETCDR (scm_the_last_stack_var,
-             scm_make_stack (scm_cons (SCM_BOOL_T, SCM_EOL)));
-  /* Throw the error */
-  return scm_throw (tag, throw_args);
-}
-
-static SCM
-cwss_body (void *data, SCM jmpbuf)
-{
-  struct cwss_data *d = data;
-  return scm_internal_lazy_catch (d->tag, d->body, d->data, ss_handler, NULL);
-}
-/* FIXME: should catch_with_saved_stack() be in the gh_ API? */
-static SCM
-catch_with_saved_stack (SCM tag,
-                       scm_catch_body_t body,
-                       void *body_data,
-                       scm_catch_handler_t handler,
-                       void *handler_data)
-{
-  struct cwss_data d;
-  d.tag = tag;
-  d.body = body;
-  d.data = body_data;
-  return scm_internal_catch (tag, cwss_body, &d, handler, handler_data);
-}
-
 SCM
 gh_eval_str_with_stack_saving_handler (char *scheme_code)
 {
-  return catch_with_saved_stack (SCM_BOOL_T,
-                                (scm_catch_body_t) eval_str_wrapper,
-                                scheme_code,
-                                (scm_catch_handler_t)
-                                gh_standard_handler,
-                                scheme_code);
+  return scm_internal_stack_catch (SCM_BOOL_T,
+                                  (scm_catch_body_t) eval_str_wrapper,
+                                  scheme_code,
+                                  (scm_catch_handler_t)
+                                  gh_standard_handler,
+                                  scheme_code);
 }
 
 static SCM
-eval_file_wrapper (void *data, SCM jmpbuf)
+eval_file_wrapper (void *data)
 {
 /*   gh_eval_t real_eval_proc = (gh_eval_t) (* ((gh_eval_t *) data)); */
 
@@ -169,7 +110,7 @@ gh_eval_file_with_catch (char *scheme_code, scm_catch_handler_t handler)
 {
   /* FIXME: not there yet */
   return gh_catch (SCM_BOOL_T, (scm_catch_body_t) eval_file_wrapper,
-                  scheme_code, (scm_catch_handler_t) gh_standard_handler,
+                  scheme_code, (scm_catch_handler_t) handler,
                   scheme_code);
 }