diff options
Diffstat (limited to 'doc/ref')
-rw-r--r-- | doc/ref/api-control.texi | 55 |
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. |