X-Git-Url: http://git.hcoop.net/bpt/guile.git/blobdiff_plain/92205699d01f918a0f8808d8cbbe55ba2568f058..53befeb700c31dec58cec2c8f6f34535541a2f39:/libguile/throw.h diff --git a/libguile/throw.h b/libguile/throw.h index b449e17d3..1ed6ba6b1 100644 --- a/libguile/throw.h +++ b/libguile/throw.h @@ -3,21 +3,22 @@ #ifndef SCM_THROW_H #define SCM_THROW_H -/* Copyright (C) 1995,1996,1998,2000 Free Software Foundation, Inc. +/* Copyright (C) 1995,1996,1998,2000, 2006, 2008 Free Software Foundation, Inc. * * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 3 of + * the License, or (at your option) any later version. * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of + * This library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301 USA */ @@ -30,6 +31,21 @@ typedef SCM (*scm_t_catch_body) (void *data); typedef SCM (*scm_t_catch_handler) (void *data, SCM tag, SCM throw_args); +SCM_API SCM scm_c_catch (SCM tag, + scm_t_catch_body body, + void *body_data, + scm_t_catch_handler handler, + void *handler_data, + scm_t_catch_handler pre_unwind_handler, + void *pre_unwind_handler_data); + +SCM_API SCM scm_c_with_throw_handler (SCM tag, + scm_t_catch_body body, + void *body_data, + scm_t_catch_handler handler, + void *handler_data, + int lazy_catch_p); + SCM_API SCM scm_internal_catch (SCM tag, scm_t_catch_body body, void *body_data, @@ -72,12 +88,14 @@ SCM_API SCM scm_handle_by_message_noexit (void *, SCM, SCM); SCM_API SCM scm_handle_by_throw (void *, SCM, SCM); SCM_API int scm_exit_status (SCM args); +SCM_API SCM scm_catch_with_pre_unwind_handler (SCM tag, SCM thunk, SCM handler, SCM lazy_handler); SCM_API SCM scm_catch (SCM tag, SCM thunk, SCM handler); +SCM_API SCM scm_with_throw_handler (SCM tag, SCM thunk, SCM handler); SCM_API SCM scm_lazy_catch (SCM tag, SCM thunk, SCM handler); SCM_API SCM scm_ithrow (SCM key, SCM args, int noreturn); SCM_API SCM scm_throw (SCM key, SCM args); -SCM_API void scm_init_throw (void); +SCM_INTERNAL void scm_init_throw (void); #endif /* SCM_THROW_H */