summaryrefslogtreecommitdiff
path: root/doc/ref/api-control.texi
diff options
context:
space:
mode:
Diffstat (limited to 'doc/ref/api-control.texi')
-rw-r--r--doc/ref/api-control.texi55
1 files changed, 33 insertions, 22 deletions
diff --git a/doc/ref/api-control.texi b/doc/ref/api-control.texi
index 429dcaa1e..66fb99ef2 100644
--- a/doc/ref/api-control.texi
+++ b/doc/ref/api-control.texi
@@ -1276,7 +1276,21 @@ a-cont
@end lisp
@end deffn
-@deftypefn {C Function} void scm_dynwind_begin (int flags)
+@deftp {C Type} scm_t_dynwind_flags
+This is an enumeration of several flags that modify the behavior of
+@code{scm_dynwind_begin}. The flags are listed in the following
+table.
+
+@table @code
+@item SCM_F_DYNWIND_REWINDABLE
+The dynamic context is @dfn{rewindable}. This means that it can be
+reentered non-locally (via the invokation of a continuation). The
+default is that a dynwind context can not be reentered non-locally.
+@end table
+
+@end deftp
+
+@deftypefn {C Function} void scm_dynwind_begin (scm_t_dynwind_flags flags)
The function @code{scm_dynwind_begin} starts a new dynamic context and
makes it the `current' one.
@@ -1301,14 +1315,6 @@ or explicitly with @code{scm_dynwind_end}. You must make sure that a
dynwind context is indeed ended properly. If you fail to call
@code{scm_dynwind_end} for each @code{scm_dynwind_begin}, the behavior
is undefined.
-
-Possible flags are:
-@table @code
-@item SCM_F_DYNWIND_REWINDABLE
-The dynamic context is @dfn{rewindable}. This means that it can be
-reentered non-locally (via the invokation of a continuation). The
-default is that a dynwind context can not be reentered non-locally.
-@end table
@end deftypefn
@deftypefn {C Function} void scm_dynwind_end ()
@@ -1316,8 +1322,22 @@ End the current dynamic context explicitly and make the previous one
current.
@end deftypefn
-@deftypefn {C Function} void scm_dynwind_unwind_handler (void (*func)(void *), void *data, int flags)
-@deftypefnx {C Function} void scm_dynwind_unwind_handler_with_scm (void (*func)(SCM), SCM data, int flags)
+@deftp {C Type} scm_t_wind_flags
+This is an enumeration of several flags that modify the behavior of
+@code{scm_dynwind_unwind_handler} and
+@code{scm_dynwind_rewind_handler}. The flags are listed in the
+following table.
+
+@table @code
+@item SCM_F_WIND_EXPLICITLY
+@vindex SCM_F_WIND_EXPLICITLY
+The registered action is also carried out when the dynwind context is
+entered or left locally.
+@end table
+@end deftp
+
+@deftypefn {C Function} void scm_dynwind_unwind_handler (void (*func)(void *), void *data, scm_t_wind_flags flags)
+@deftypefnx {C Function} void scm_dynwind_unwind_handler_with_scm (void (*func)(SCM), SCM data, scm_t_wind_flags flags)
Arranges for @var{func} to be called with @var{data} as its arguments
when the current context ends implicitly. If @var{flags} contains
@code{SCM_F_WIND_EXPLICITLY}, @var{func} is also called when the
@@ -1327,8 +1347,8 @@ The function @code{scm_dynwind_unwind_handler_with_scm} takes care that
@var{data} is protected from garbage collection.
@end deftypefn
-@deftypefn {C Function} void scm_dynwind_rewind_handler (void (*func)(void *), void *data, int flags)
-@deftypefnx {C Function} void scm_dynwind_rewind_handler_with_scm (void (*func)(SCM), SCM data, int flags)
+@deftypefn {C Function} void scm_dynwind_rewind_handler (void (*func)(void *), void *data, scm_t_wind_flags flags)
+@deftypefnx {C Function} void scm_dynwind_rewind_handler_with_scm (void (*func)(SCM), SCM data, scm_t_wind_flags flags)
Arrange for @var{func} to be called with @var{data} as its argument when
the current context is restarted by rewinding the stack. When @var{flags}
contains @code{SCM_F_WIND_EXPLICITLY}, @var{func} is called immediately
@@ -1338,15 +1358,6 @@ The function @code{scm_dynwind_rewind_handler_with_scm} takes care that
@var{data} is protected from garbage collection.
@end deftypefn
-The possible flags for the preceding four functions are as follows.
-
-@table @code
-@item SCM_F_WIND_EXPLICITLY
-@vindex SCM_F_WIND_EXPLICITLY
-The registered action is also carried out when the dynwind context is
-entered or left locally.
-@end table
-
@deftypefn {C Function} void scm_dynwind_free (void *mem)
Arrange for @var{mem} to be freed automatically whenever the current
context is exited, whether normally or non-locally.