From: Kevin Ryde <user42@zip.com.au>
Subject: doco C error handling
Date: Sun, 04 May 2003 11:29:23 +1000 [thread overview]
Message-ID: <87ptmzjy8c.fsf@zip.com.au> (raw)
[-- Attachment #1: Type: text/plain, Size: 1834 bytes --]
* scheme-control.texi (Handling Errors): Revise C support section to
get index entries and clarify parameters. Remove scm_regex_error, no
longer exists and wasn't available to applications.
I hope I'm right that scm_regex_error is gone, it doesn't show up in a
grep.
Incidentally, is the regex-error error key described in the scheme
section of this node be regular-expression-syntax, as per the
`make-regexp' doco?
Revised text:
C Support
---------
In the following C functions, SUBR and MESSAGE parameters can be `NULL'
to give the `#f' described above.
- Function: SCM scm_error (SCM key, char *subr, char *message, SCM
args, SCM rest)
Throw an error, as per `scm-error' above.
- Function: void scm_syserror (char *subr)
- Function: void scm_syserror_msg (char *subr, char *message, SCM args)
Throw an error with key `system-error' and supply `errno' in the
REST argument. For `scm_syserror' the message is generated using
`strerror'.
Of course care should be taken that any code in between the failing
operation and the call to these routines doesn't change `errno'.
- Function: void scm_num_overflow (char *subr)
- Function: void scm_out_of_range (char *subr, SCM bad_value)
- Function: void scm_wrong_num_args (SCM proc)
- Function: void scm_wrong_type_arg (char *subr, int pos, SCM
bad_value)
- Function: void scm_memory_error (char *subr)
Throw an error with the various keys described above.
For `scm_wrong_num_args', PROC should be a Scheme symbol which is
the name of the procedure incorrectly invoked.
Exception handlers can also be installed from C, using
`scm_internal_catch', `scm_lazy_catch', or `scm_stack_catch' from
`libguile/throw.c'. These have not yet been documented, but the source
contains some useful comments.
[-- Attachment #2: scheme-control.texi.c-errors.diff --]
[-- Type: text/plain, Size: 2918 bytes --]
--- scheme-control.texi.~1.6.~ 2003-05-04 11:02:44.000000000 +1000
+++ scheme-control.texi 2003-05-04 11:24:15.000000000 +1000
@@ -934,41 +934,38 @@
@subsection C Support
-SCM scm_error (SCM key, char *subr, char *message, SCM args, SCM rest)
+In the following C functions, @var{SUBR} and @var{MESSAGE} parameters
+can be @code{NULL} to give the @code{#f} described above.
-Throws an error, after converting the char * arguments to Scheme strings.
-subr is the Scheme name of the procedure, NULL is converted to #f.
-Likewise a NULL message is converted to #f.
-
-The following procedures invoke scm_error with various error keys and
-arguments. The first three call scm_error with the system-error key
-and automatically supply errno in the "rest" argument: scm_syserror
-generates messages using strerror. Care should be taken that the errno
-value is not reset (e.g. due to an interrupt).
-
-@itemize @bullet
-@item
-void scm_syserror (char *subr);
-@item
-void scm_syserror_msg (char *subr, char *message, SCM args);
-@item
-void scm_num_overflow (char *subr);
-@item
-void scm_out_of_range (char *subr, SCM bad_value);
-@item
-void scm_wrong_num_args (SCM proc);
-@item
-void scm_wrong_type_arg (char *subr, int pos, SCM bad_value);
-@item
-void scm_memory_error (char *subr);
-@item
-static void scm_regex_error (char *subr, int code); (only used in rgx.c).
-@end itemize
+@deftypefun SCM scm_error (SCM key, char *subr, char *message, SCM args, SCM rest)
+Throw an error, as per @code{scm-error} above.
+@end deftypefun
+
+@deftypefun void scm_syserror (char *subr)
+@deftypefunx void scm_syserror_msg (char *subr, char *message, SCM args)
+Throw an error with key @code{system-error} and supply @code{errno} in
+the @var{rest} argument. For @code{scm_syserror} the message is
+generated using @code{strerror}.
+
+Of course care should be taken that any code in between the failing
+operation and the call to these routines doesn't change @code{errno}.
+@end deftypefun
+
+@deftypefun void scm_num_overflow (char *subr)
+@deftypefunx void scm_out_of_range (char *subr, SCM bad_value)
+@deftypefunx void scm_wrong_num_args (SCM proc)
+@deftypefunx void scm_wrong_type_arg (char *subr, int pos, SCM bad_value)
+@deftypefunx void scm_memory_error (char *subr)
+Throw an error with the various keys described above.
+
+For @code{scm_wrong_num_args}, @var{proc} should be a Scheme symbol
+which is the name of the procedure incorrectly invoked.
+@end deftypefun
Exception handlers can also be installed from C, using
-scm_internal_catch, scm_lazy_catch, or scm_stack_catch from
-libguile/throw.c. These have not yet been documented, however the
-source contains some useful comments.
+@code{scm_internal_catch}, @code{scm_lazy_catch}, or
+@code{scm_stack_catch} from @file{libguile/throw.c}. These have not
+yet been documented, but the source contains some useful comments.
@c Local Variables:
[-- Attachment #3: Type: text/plain, Size: 142 bytes --]
_______________________________________________
Guile-devel mailing list
Guile-devel@gnu.org
http://mail.gnu.org/mailman/listinfo/guile-devel
next reply other threads:[~2003-05-04 1:29 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-05-04 1:29 Kevin Ryde [this message]
2003-05-09 23:07 ` doco C error handling Kevin Ryde
2003-05-10 1:21 ` doco regexp error key (was: doco C error handling) Kevin Ryde
2003-05-11 22:36 ` doco regexp error key Kevin Ryde
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/guile/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87ptmzjy8c.fsf@zip.com.au \
--to=user42@zip.com.au \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).