diff options
102 files changed, 182 insertions, 76 deletions
diff --git a/libguile/alist.c b/libguile/alist.c index a4e279d2f..3f1d014d7 100644 --- a/libguile/alist.c +++ b/libguile/alist.c @@ -24,6 +24,7 @@ #endif #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/boolean.h" #include "libguile/eq.h" #include "libguile/list.h" diff --git a/libguile/array-map.c b/libguile/array-map.c index 923dedd0d..addd048b3 100644 --- a/libguile/array-map.c +++ b/libguile/array-map.c @@ -29,6 +29,7 @@ #include <string.h> #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/pairs.h" #include "libguile/boolean.h" #include "libguile/strings.h" diff --git a/libguile/arrays.c b/libguile/arrays.c index 685231c0e..2ab5df075 100644 --- a/libguile/arrays.c +++ b/libguile/arrays.c @@ -31,6 +31,7 @@ #include "verify.h" #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/pairs.h" #include "libguile/boolean.h" #include "libguile/__scm.h" diff --git a/libguile/async.c b/libguile/async.c index 4879048d8..abe4c3207 100644 --- a/libguile/async.c +++ b/libguile/async.c @@ -24,6 +24,7 @@ #endif #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/pairs.h" #include "libguile/atomics-internal.h" #include "libguile/eval.h" diff --git a/libguile/atomic.c b/libguile/atomic.c index e5d3ee942..a82cd823f 100644 --- a/libguile/atomic.c +++ b/libguile/atomic.c @@ -23,6 +23,7 @@ #endif #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/extensions.h" #include "libguile/ports.h" #include "libguile/atomics-internal.h" diff --git a/libguile/backtrace.c b/libguile/backtrace.c index 9b4a63075..18ac33ce6 100644 --- a/libguile/backtrace.c +++ b/libguile/backtrace.c @@ -26,6 +26,7 @@ #include <ctype.h> #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/boolean.h" #include <unistd.h> diff --git a/libguile/bitvectors.c b/libguile/bitvectors.c index a7be06e15..e3af3358f 100644 --- a/libguile/bitvectors.c +++ b/libguile/bitvectors.c @@ -26,6 +26,7 @@ #include <string.h> #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/pairs.h" #include "libguile/boolean.h" #include "libguile/__scm.h" diff --git a/libguile/boolean.c b/libguile/boolean.c index b23aa32dc..749703d56 100644 --- a/libguile/boolean.c +++ b/libguile/boolean.c @@ -24,6 +24,7 @@ #endif #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/boolean.h" #include "libguile/tags.h" diff --git a/libguile/bytevectors.c b/libguile/bytevectors.c index 75d9bca0c..766907736 100644 --- a/libguile/bytevectors.c +++ b/libguile/bytevectors.c @@ -37,6 +37,7 @@ #include <gmp.h> #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/dynwind.h" #include "libguile/extensions.h" #include "libguile/bytevectors.h" diff --git a/libguile/chars.c b/libguile/chars.c index 237653606..cab87cd7e 100644 --- a/libguile/chars.c +++ b/libguile/chars.c @@ -30,6 +30,7 @@ #include <unictype.h> #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/boolean.h" #include "libguile/chars.h" #include "libguile/numbers.h" diff --git a/libguile/continuations.c b/libguile/continuations.c index 508ba88e8..779810d9a 100644 --- a/libguile/continuations.c +++ b/libguile/continuations.c @@ -31,6 +31,7 @@ #endif #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/pairs.h" #include "libguile/boolean.h" #include "libguile/async.h" diff --git a/libguile/control.c b/libguile/control.c index 6a0a19c52..fb8f49aa3 100644 --- a/libguile/control.c +++ b/libguile/control.c @@ -23,6 +23,7 @@ #include <alloca.h> #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/pairs.h" #include "libguile/control.h" #include "libguile/extensions.h" diff --git a/libguile/debug-malloc.c b/libguile/debug-malloc.c index f6dabe7b0..1ab1aea83 100644 --- a/libguile/debug-malloc.c +++ b/libguile/debug-malloc.c @@ -24,6 +24,7 @@ #include <stdio.h> #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/alist.h" #include "libguile/numbers.h" #include "libguile/strings.h" diff --git a/libguile/debug.c b/libguile/debug.c index b0b110a40..57fd808be 100644 --- a/libguile/debug.c +++ b/libguile/debug.c @@ -36,6 +36,7 @@ #endif #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/async.h" #include "libguile/eval.h" #include "libguile/list.h" diff --git a/libguile/deprecation.c b/libguile/deprecation.c index 187fef9d4..6fba31f93 100644 --- a/libguile/deprecation.c +++ b/libguile/deprecation.c @@ -28,6 +28,7 @@ #include <stdarg.h> #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/pairs.h" #include "libguile/deprecation.h" diff --git a/libguile/dynl.c b/libguile/dynl.c index 59fbd7c7e..413f2e3a6 100644 --- a/libguile/dynl.c +++ b/libguile/dynl.c @@ -51,6 +51,7 @@ maybe_drag_in_eprintf () #include <string.h> #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/libpath.h" #include "libguile/dynl.h" #include "libguile/smob.h" diff --git a/libguile/eq.c b/libguile/eq.c index e7cbb2fb9..51f656446 100644 --- a/libguile/eq.c +++ b/libguile/eq.c @@ -28,6 +28,7 @@ #endif #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/boolean.h" #include "libguile/array-map.h" #include "libguile/async.h" diff --git a/libguile/error.c b/libguile/error.c index 13019072f..907abb620 100644 --- a/libguile/error.c +++ b/libguile/error.c @@ -29,6 +29,7 @@ #include <errno.h> #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/async.h" #include "libguile/dynwind.h" #include "libguile/list.h" diff --git a/libguile/error.h b/libguile/error.h index 81b7a58c5..883c2db6a 100644 --- a/libguile/error.h +++ b/libguile/error.h @@ -36,9 +36,12 @@ SCM_API SCM scm_misc_error_key; +/* Snarfing for docs may override SCM_ASSERT; see snarf.h. */ +#ifndef SCM_ASSERT #define SCM_ASSERT(_cond, _arg, _pos, _subr) \ do { if (SCM_UNLIKELY (!(_cond))) \ scm_wrong_type_arg (_subr, _pos, _arg); } while (0) +#endif #define SCM_ASSERT_TYPE(_cond, _arg, _pos, _subr, _msg) \ do { if (SCM_UNLIKELY (!(_cond))) \ scm_wrong_type_arg_msg(_subr, _pos, _arg, _msg); } while (0) diff --git a/libguile/eval.c b/libguile/eval.c index 70b682a09..d02d93883 100644 --- a/libguile/eval.c +++ b/libguile/eval.c @@ -27,6 +27,7 @@ #include <stdarg.h> #include "libguile/__scm.h" +#include "libguile/gsubr.h" #include "libguile/pairs.h" #include "libguile/boolean.h" #include "libguile/_scm.h" diff --git a/libguile/evalext.c b/libguile/evalext.c index 84b3dde79..6f492c756 100644 --- a/libguile/evalext.c +++ b/libguile/evalext.c @@ -24,6 +24,7 @@ #endif #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/eval.h" #include "libguile/list.h" #include "libguile/fluids.h" diff --git a/libguile/expand.c b/libguile/expand.c index c28ca4e74..cc99484cc 100644 --- a/libguile/expand.c +++ b/libguile/expand.c @@ -24,6 +24,7 @@ #endif #include "libguile/__scm.h" +#include "libguile/gsubr.h" #include "libguile/pairs.h" #include "libguile/boolean.h" #include "libguile/_scm.h" diff --git a/libguile/extensions.c b/libguile/extensions.c index 5bca00871..be73c8ce4 100644 --- a/libguile/extensions.c +++ b/libguile/extensions.c @@ -1,6 +1,7 @@ /* extensions.c - registering and loading extensions. * - * Copyright (C) 2001, 2006, 2009, 2010, 2011 Free Software Foundation, Inc. + * Copyright (C) 2001,2006,2009-2011,2018 + * 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 @@ -25,6 +26,7 @@ #include <string.h> #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/dynl.h" #include "libguile/dynwind.h" #include "libguile/extensions.h" diff --git a/libguile/fdes-finalizers.c b/libguile/fdes-finalizers.c index 319560058..3143299f6 100644 --- a/libguile/fdes-finalizers.c +++ b/libguile/fdes-finalizers.c @@ -22,6 +22,7 @@ #endif #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/pairs.h" #include "libguile/boolean.h" #include "libguile/extensions.h" diff --git a/libguile/feature.c b/libguile/feature.c index 5364c1d2f..ca491f0e4 100644 --- a/libguile/feature.c +++ b/libguile/feature.c @@ -28,6 +28,7 @@ #endif #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/pairs.h" #include "libguile/strings.h" #include "libguile/fluids.h" diff --git a/libguile/filesys.c b/libguile/filesys.c index 0be0b8f9a..30bd04482 100644 --- a/libguile/filesys.c +++ b/libguile/filesys.c @@ -80,6 +80,7 @@ #endif #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/pairs.h" #include "libguile/boolean.h" #include "libguile/async.h" diff --git a/libguile/finalizers.c b/libguile/finalizers.c index ead7e8f43..eb16f9d1b 100644 --- a/libguile/finalizers.c +++ b/libguile/finalizers.c @@ -35,6 +35,7 @@ #include "libguile/bdw-gc.h" #include "libguile/finalizers.h" #include "libguile/gc.h" +#include "libguile/gsubr.h" #include "libguile/init.h" #include "libguile/threads.h" diff --git a/libguile/fluids.c b/libguile/fluids.c index 0a9df1a6d..773c3188a 100644 --- a/libguile/fluids.c +++ b/libguile/fluids.c @@ -25,6 +25,7 @@ #include <string.h> #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/pairs.h" #include "libguile/alist.h" #include "libguile/atomics-internal.h" diff --git a/libguile/foreign-object.c b/libguile/foreign-object.c index 9442cf629..7a6a5eb5a 100644 --- a/libguile/foreign-object.c +++ b/libguile/foreign-object.c @@ -28,6 +28,7 @@ #include "libguile/finalizers.h" #include "libguile/foreign-object.h" #include "libguile/goops.h" +#include "libguile/gsubr.h" #include "libguile/list.h" #include "libguile/numbers.h" #include "libguile/procs.h" diff --git a/libguile/foreign.c b/libguile/foreign.c index ba7bc2161..41be3e551 100644 --- a/libguile/foreign.c +++ b/libguile/foreign.c @@ -29,6 +29,7 @@ #include <errno.h> #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/boolean.h" #include "libguile/bytevectors.h" #include "libguile/dynwind.h" diff --git a/libguile/fports.c b/libguile/fports.c index 6121a0b80..24c2ed032 100644 --- a/libguile/fports.c +++ b/libguile/fports.c @@ -47,6 +47,7 @@ #include <full-write.h> #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/pairs.h" #include "libguile/boolean.h" #include "libguile/async.h" diff --git a/libguile/frames.c b/libguile/frames.c index 11eb54efb..c19f511c7 100644 --- a/libguile/frames.c +++ b/libguile/frames.c @@ -23,6 +23,7 @@ #include <stdlib.h> #include <string.h> #include "_scm.h" +#include "libguile/gsubr.h" #include "boolean.h" #include "eval.h" #include "extensions.h" diff --git a/libguile/gc.c b/libguile/gc.c index f52302a8b..9c7470d4a 100644 --- a/libguile/gc.c +++ b/libguile/gc.c @@ -33,6 +33,7 @@ #include <math.h> #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/eval.h" #include "libguile/stime.h" #include "libguile/stackchk.h" diff --git a/libguile/generalized-arrays.c b/libguile/generalized-arrays.c index d45d20605..b521a48b4 100644 --- a/libguile/generalized-arrays.c +++ b/libguile/generalized-arrays.c @@ -28,6 +28,7 @@ #include <string.h> #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/pairs.h" #include "libguile/__scm.h" #include "libguile/array-handle.h" diff --git a/libguile/generalized-vectors.c b/libguile/generalized-vectors.c index 68c1042ec..32077bba1 100644 --- a/libguile/generalized-vectors.c +++ b/libguile/generalized-vectors.c @@ -1,5 +1,5 @@ -/* Copyright (C) 1995, 1996, 1997, 1998, 2000, 2001, 2002, 2003, 2004, - * 2005, 2006, 2009, 2010, 2011, 2012, 2013, 2014 Free Software Foundation, Inc. +/* Copyright (C) 1995-1998,2000-2006,2009-2014,2018 + * 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 @@ -25,6 +25,7 @@ #endif #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/__scm.h" #include "libguile/generalized-vectors.h" diff --git a/libguile/gettext.c b/libguile/gettext.c index 3de3f5e89..a505c2e3c 100644 --- a/libguile/gettext.c +++ b/libguile/gettext.c @@ -22,6 +22,7 @@ #endif #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/feature.h" #include "libguile/strings.h" #include "libguile/numbers.h" diff --git a/libguile/gsubr.h b/libguile/gsubr.h index 83eebc371..51999149c 100644 --- a/libguile/gsubr.h +++ b/libguile/gsubr.h @@ -3,8 +3,8 @@ #ifndef SCM_GSUBR_H #define SCM_GSUBR_H -/* Copyright (C) 1995, 1996, 1998, 2000, 2001, 2006, 2008, 2009, - * 2010, 2011, 2013, 2015 Free Software Foundation, Inc. +/* Copyright (C) 1995-1996,1998,2000-2001,2006,2008,2009-2011,2013,2015,2018 + * 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 @@ -25,6 +25,7 @@ #include "libguile/__scm.h" +#include "libguile/snarf.h" @@ -72,6 +73,77 @@ SCM_API SCM scm_c_define_gsubr_with_generic (const char *name, int req, int opt, int rst, scm_t_subr fcn, SCM *gf); + + +/* Casting to a function that can take any number of arguments. */ +#define SCM_FUNC_CAST_ARBITRARY_ARGS scm_t_subr + +#define SCM_DEFINE_GSUBR(FNAME, PRIMNAME, REQ, OPT, VAR, ARGLIST, DOCSTRING) \ +SCM_SNARF_HERE(\ +SCM_UNUSED static const char s_ ## FNAME [] = PRIMNAME; \ +SCM FNAME ARGLIST\ +)\ +SCM_SNARF_INIT(\ +scm_c_define_gsubr (s_ ## FNAME, REQ, OPT, VAR, \ + (SCM_FUNC_CAST_ARBITRARY_ARGS) FNAME); \ +)\ +SCM_SNARF_DOCS(primitive, FNAME, PRIMNAME, ARGLIST, REQ, OPT, VAR, DOCSTRING) + +/* Always use the generic subr case. */ +#define SCM_DEFINE SCM_DEFINE_GSUBR + + +#define SCM_PRIMITIVE_GENERIC(FNAME, PRIMNAME, REQ, OPT, VAR, ARGLIST, DOCSTRING) \ +SCM_SNARF_HERE(\ +SCM_UNUSED static const char s_ ## FNAME [] = PRIMNAME; \ +static SCM g_ ## FNAME; \ +SCM FNAME ARGLIST\ +)\ +SCM_SNARF_INIT(\ +g_ ## FNAME = SCM_PACK (0); \ +scm_c_define_gsubr_with_generic (s_ ## FNAME, REQ, OPT, VAR, \ + (SCM_FUNC_CAST_ARBITRARY_ARGS) FNAME, \ + &g_ ## FNAME); \ +)\ +SCM_SNARF_DOCS(primitive, FNAME, PRIMNAME, ARGLIST, REQ, OPT, VAR, DOCSTRING) + +#define SCM_DEFINE_PUBLIC(FNAME, PRIMNAME, REQ, OPT, VAR, ARGLIST, DOCSTRING) \ +SCM_SNARF_HERE(\ +SCM_UNUSED static const char s_ ## FNAME [] = PRIMNAME; \ +SCM FNAME ARGLIST\ +)\ +SCM_SNARF_INIT(\ +scm_c_define_gsubr (s_ ## FNAME, REQ, OPT, VAR, \ + (SCM_FUNC_CAST_ARBITRARY_ARGS) FNAME); \ +scm_c_export (s_ ## FNAME, NULL); \ +)\ +SCM_SNARF_DOCS(primitive, FNAME, PRIMNAME, ARGLIST, REQ, OPT, VAR, DOCSTRING) + +#define SCM_PROC(RANAME, STR, REQ, OPT, VAR, CFN) \ +SCM_SNARF_HERE(SCM_UNUSED static const char RANAME[]=STR) \ +SCM_SNARF_INIT(scm_c_define_gsubr (RANAME, REQ, OPT, VAR, \ + (SCM_FUNC_CAST_ARBITRARY_ARGS) CFN)) + +#define SCM_REGISTER_PROC(RANAME, STR, REQ, OPT, VAR, CFN) \ +SCM_SNARF_HERE(SCM_UNUSED static const char RANAME[]=STR) \ +SCM_SNARF_INIT(scm_c_define_gsubr (RANAME, REQ, OPT, VAR, \ + (SCM_FUNC_CAST_ARBITRARY_ARGS) CFN);) \ +SCM_SNARF_DOCS(register, CFN, STR, (), REQ, OPT, VAR, \ + "implemented by the C function \"" #CFN "\"") + +#define SCM_GPROC(RANAME, STR, REQ, OPT, VAR, CFN, GF) \ +SCM_SNARF_HERE(\ +SCM_UNUSED static const char RANAME[]=STR;\ +static SCM GF \ +)SCM_SNARF_INIT(\ +GF = SCM_PACK (0); /* Dirk:FIXME:: Can we safely use #f instead of 0? */ \ +scm_c_define_gsubr_with_generic (RANAME, REQ, OPT, VAR, \ + (SCM_FUNC_CAST_ARBITRARY_ARGS) CFN, &GF) \ +) + + + + SCM_INTERNAL void scm_init_gsubr (void); #endif /* SCM_GSUBR_H */ diff --git a/libguile/guardians.c b/libguile/guardians.c index 52025b3a4..7edb39633 100644 --- a/libguile/guardians.c +++ b/libguile/guardians.c @@ -50,6 +50,7 @@ #endif #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/pairs.h" #include "libguile/boolean.h" diff --git a/libguile/hash.c b/libguile/hash.c index 21dee0df1..18a878d3b 100644 --- a/libguile/hash.c +++ b/libguile/hash.c @@ -32,6 +32,7 @@ #include <unistr.h> #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/chars.h" #include "libguile/pairs.h" #include "libguile/ports.h" diff --git a/libguile/hashtab.c b/libguile/hashtab.c index 03f71ff0f..f25543f11 100644 --- a/libguile/hashtab.c +++ b/libguile/hashtab.c @@ -28,6 +28,7 @@ #include <assert.h> #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/pairs.h" #include "libguile/alist.h" #include "libguile/boolean.h" diff --git a/libguile/hooks.c b/libguile/hooks.c index dd3766adc..338988cd2 100644 --- a/libguile/hooks.c +++ b/libguile/hooks.c @@ -25,6 +25,7 @@ #include <stdio.h> #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/pairs.h" #include "libguile/boolean.h" diff --git a/libguile/i18n.c b/libguile/i18n.c index d7c444725..9704e07d9 100644 --- a/libguile/i18n.c +++ b/libguile/i18n.c @@ -23,6 +23,7 @@ #include <alloca.h> #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/pairs.h" #include "libguile/boolean.h" #include "libguile/extensions.h" diff --git a/libguile/instructions.c b/libguile/instructions.c index 19d9dec7c..9d4826c9c 100644 --- a/libguile/instructions.c +++ b/libguile/instructions.c @@ -23,6 +23,7 @@ #include <string.h> #include "_scm.h" +#include "libguile/gsubr.h" #include "threads.h" #include "libguile/list.h" #include "libguile/numbers.h" diff --git a/libguile/intrinsics.c b/libguile/intrinsics.c index 9d2f17fb2..840747fee 100644 --- a/libguile/intrinsics.c +++ b/libguile/intrinsics.c @@ -21,6 +21,7 @@ #endif #include "_scm.h" +#include "libguile/gsubr.h" #include "boolean.h" #include "alist.h" #include "cache-internal.h" diff --git a/libguile/ioext.c b/libguile/ioext.c index 100d70830..a089e4614 100644 --- a/libguile/ioext.c +++ b/libguile/ioext.c @@ -28,6 +28,7 @@ #include <errno.h> #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/pairs.h" #include "libguile/async.h" #include "libguile/dynwind.h" diff --git a/libguile/keywords.c b/libguile/keywords.c index f987a52d9..83e3b871b 100644 --- a/libguile/keywords.c +++ b/libguile/keywords.c @@ -27,6 +27,7 @@ #include <stdarg.h> #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/async.h" #include "libguile/list.h" #include "libguile/pairs.h" diff --git a/libguile/list.c b/libguile/list.c index 7c1627ab9..08b8b51f4 100644 --- a/libguile/list.c +++ b/libguile/list.c @@ -24,6 +24,7 @@ #endif #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/pairs.h" #include "libguile/boolean.h" #include "libguile/numbers.h" diff --git a/libguile/load.c b/libguile/load.c index 97a715983..eaaa4ed15 100644 --- a/libguile/load.c +++ b/libguile/load.c @@ -28,6 +28,7 @@ #include <stdio.h> #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/boolean.h" #include "libguile/alist.h" #include "libguile/chars.h" diff --git a/libguile/loader.c b/libguile/loader.c index b7c8c9418..e7c4f98a0 100644 --- a/libguile/loader.c +++ b/libguile/loader.c @@ -40,6 +40,7 @@ #include <full-read.h> #include "_scm.h" +#include "libguile/gsubr.h" #include "bytevectors.h" #include "boolean.h" #include "elf.h" diff --git a/libguile/macros.c b/libguile/macros.c index d7d20071b..1ea8aafcb 100644 --- a/libguile/macros.c +++ b/libguile/macros.c @@ -23,6 +23,7 @@ #endif #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/boolean.h" #include "libguile/ports.h" #include "libguile/print.h" diff --git a/libguile/memoize.c b/libguile/memoize.c index 1a149c5e4..1c4f05e11 100644 --- a/libguile/memoize.c +++ b/libguile/memoize.c @@ -28,6 +28,7 @@ #include <stdio.h> #include "libguile/__scm.h" +#include "libguile/gsubr.h" #include "libguile/pairs.h" #include "libguile/boolean.h" #include "libguile/_scm.h" diff --git a/libguile/modules.c b/libguile/modules.c index 9ff1ec76f..56e34c0ef 100644 --- a/libguile/modules.c +++ b/libguile/modules.c @@ -25,6 +25,7 @@ #include <stdarg.h> #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/pairs.h" #include "libguile/boolean.h" diff --git a/libguile/net_db.c b/libguile/net_db.c index b500eb802..75d530dbf 100644 --- a/libguile/net_db.c +++ b/libguile/net_db.c @@ -46,6 +46,7 @@ #include <arpa/inet.h> #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/pairs.h" #include "libguile/boolean.h" #include "libguile/feature.h" diff --git a/libguile/numbers.c b/libguile/numbers.c index 16b5a6698..d722c4149 100644 --- a/libguile/numbers.c +++ b/libguile/numbers.c @@ -60,6 +60,7 @@ #include <stdarg.h> #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/boolean.h" #include "libguile/feature.h" #include "libguile/pairs.h" diff --git a/libguile/objprop.c b/libguile/objprop.c index 8f8b7fb85..a0fc3b70d 100644 --- a/libguile/objprop.c +++ b/libguile/objprop.c @@ -23,6 +23,7 @@ #endif #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/alist.h" #include "libguile/async.h" #include "libguile/hashtab.h" diff --git a/libguile/pairs.c b/libguile/pairs.c index 44b627f97..6b5113540 100644 --- a/libguile/pairs.c +++ b/libguile/pairs.c @@ -24,7 +24,7 @@ #endif #include "libguile/_scm.h" - +#include "libguile/gsubr.h" #include "libguile/pairs.h" #include "verify.h" diff --git a/libguile/poll.c b/libguile/poll.c index d35a9b58a..ab480201f 100644 --- a/libguile/poll.c +++ b/libguile/poll.c @@ -33,6 +33,7 @@ #include "libguile/bytevectors.h" #include "libguile/error.h" #include "libguile/extensions.h" +#include "libguile/gsubr.h" #include "libguile/numbers.h" #include "libguile/ports-internal.h" #include "libguile/syscalls.h" diff --git a/libguile/ports.c b/libguile/ports.c index 5a51360fc..fd68329af 100644 --- a/libguile/ports.c +++ b/libguile/ports.c @@ -39,6 +39,7 @@ #include <striconveh.h> #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/pairs.h" #include "libguile/boolean.h" #include "libguile/async.h" diff --git a/libguile/posix.c b/libguile/posix.c index edf03b01c..718a9d93c 100644 --- a/libguile/posix.c +++ b/libguile/posix.c @@ -63,6 +63,7 @@ #endif #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/pairs.h" #include "libguile/async.h" #include "libguile/dynwind.h" diff --git a/libguile/print.c b/libguile/print.c index b801884de..dbca06bd0 100644 --- a/libguile/print.c +++ b/libguile/print.c @@ -31,6 +31,7 @@ #include <unictype.h> #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/pairs.h" #include "libguile/boolean.h" #include "libguile/chars.h" diff --git a/libguile/procs.c b/libguile/procs.c index 7092748f0..c168fe4a6 100644 --- a/libguile/procs.c +++ b/libguile/procs.c @@ -24,6 +24,7 @@ #endif #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/goops.h" #include "libguile/strings.h" diff --git a/libguile/programs.c b/libguile/programs.c index 697338419..e502ece6b 100644 --- a/libguile/programs.c +++ b/libguile/programs.c @@ -22,6 +22,7 @@ #include <string.h> #include "_scm.h" +#include "libguile/gsubr.h" #include "boolean.h" #include "instructions.h" #include "alist.h" diff --git a/libguile/promises.c b/libguile/promises.c index 20274b2eb..378028d2c 100644 --- a/libguile/promises.c +++ b/libguile/promises.c @@ -26,6 +26,7 @@ #include <alloca.h> #include "libguile/__scm.h" +#include "libguile/gsubr.h" #include "libguile/_scm.h" #include "libguile/alist.h" diff --git a/libguile/r6rs-ports.c b/libguile/r6rs-ports.c index 3db8bd54b..cfad4e04f 100644 --- a/libguile/r6rs-ports.c +++ b/libguile/r6rs-ports.c @@ -27,6 +27,7 @@ #include <assert.h> #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/boolean.h" #include "libguile/bytevectors.h" #include "libguile/chars.h" diff --git a/libguile/random.c b/libguile/random.c index 66626f76c..60279e84e 100644 --- a/libguile/random.c +++ b/libguile/random.c @@ -25,8 +25,6 @@ # include <config.h> #endif -#include "libguile/_scm.h" - #include <gmp.h> #include <stdio.h> #include <math.h> @@ -34,6 +32,8 @@ #include <sys/types.h> #include <unistd.h> +#include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/smob.h" #include "libguile/generalized-arrays.h" #include "libguile/list.h" diff --git a/libguile/rdelim.c b/libguile/rdelim.c index 40d0073da..53990f48a 100644 --- a/libguile/rdelim.c +++ b/libguile/rdelim.c @@ -21,6 +21,7 @@ #endif #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/pairs.h" #include <stdio.h> diff --git a/libguile/read.c b/libguile/read.c index 7b9854183..d1eba6246 100644 --- a/libguile/read.c +++ b/libguile/read.c @@ -34,6 +34,7 @@ #include <alloca.h> #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/pairs.h" #include "libguile/boolean.h" #include "libguile/bytevectors.h" diff --git a/libguile/regex-posix.c b/libguile/regex-posix.c index 8f47912de..3b797b1fb 100644 --- a/libguile/regex-posix.c +++ b/libguile/regex-posix.c @@ -36,6 +36,7 @@ #include <sys/types.h> #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/pairs.h" #include <regex.h> diff --git a/libguile/rw.c b/libguile/rw.c index b13da1c89..fb8a36f59 100644 --- a/libguile/rw.c +++ b/libguile/rw.c @@ -28,6 +28,7 @@ #include <string.h> #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/async.h" #include "libguile/fports.h" #include "libguile/numbers.h" diff --git a/libguile/scmsigs.c b/libguile/scmsigs.c index a2797344d..b502c8739 100644 --- a/libguile/scmsigs.c +++ b/libguile/scmsigs.c @@ -42,6 +42,7 @@ #include <full-write.h> #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/pairs.h" #include "libguile/boolean.h" diff --git a/libguile/simpos.c b/libguile/simpos.c index 3701f791e..6163cc5d8 100644 --- a/libguile/simpos.c +++ b/libguile/simpos.c @@ -28,6 +28,7 @@ #include <unistd.h> /* for _exit */ #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/numbers.h" #include "libguile/strings.h" diff --git a/libguile/smob.c b/libguile/smob.c index e2ebef8f0..f710cd67c 100644 --- a/libguile/smob.c +++ b/libguile/smob.c @@ -31,6 +31,7 @@ #include "libguile/async.h" #include "libguile/goops.h" +#include "libguile/gsubr.h" #include "libguile/finalizers.h" #include "libguile/instructions.h" #include "libguile/numbers.h" diff --git a/libguile/snarf.h b/libguile/snarf.h index a81f7129f..836067b64 100644 --- a/libguile/snarf.h +++ b/libguile/snarf.h @@ -26,13 +26,9 @@ #include <libguile/gc.h> -#include <libguile/gsubr.h> -/* Macros for snarfing initialization actions from C source. */ - -/* Casting to a function that can take any number of arguments. */ -#define SCM_FUNC_CAST_ARBITRARY_ARGS scm_t_subr +/* Macros for snarfing initialization actions from C source. */ #ifdef SCM_ALIGNED /* We support static allocation of some `SCM' objects. */ @@ -89,69 +85,6 @@ DOCSTRING ^^ } # endif #endif -#define SCM_DEFINE_GSUBR(FNAME, PRIMNAME, REQ, OPT, VAR, ARGLIST, DOCSTRING) \ -SCM_SNARF_HERE(\ -SCM_UNUSED static const char s_ ## FNAME [] = PRIMNAME; \ -SCM FNAME ARGLIST\ -)\ -SCM_SNARF_INIT(\ -scm_c_define_gsubr (s_ ## FNAME, REQ, OPT, VAR, \ - (SCM_FUNC_CAST_ARBITRARY_ARGS) FNAME); \ -)\ -SCM_SNARF_DOCS(primitive, FNAME, PRIMNAME, ARGLIST, REQ, OPT, VAR, DOCSTRING) - -/* Always use the generic subr case. */ -#define SCM_DEFINE SCM_DEFINE_GSUBR - - -#define SCM_PRIMITIVE_GENERIC(FNAME, PRIMNAME, REQ, OPT, VAR, ARGLIST, DOCSTRING) \ -SCM_SNARF_HERE(\ -SCM_UNUSED static const char s_ ## FNAME [] = PRIMNAME; \ -static SCM g_ ## FNAME; \ -SCM FNAME ARGLIST\ -)\ -SCM_SNARF_INIT(\ -g_ ## FNAME = SCM_PACK (0); \ -scm_c_define_gsubr_with_generic (s_ ## FNAME, REQ, OPT, VAR, \ - (SCM_FUNC_CAST_ARBITRARY_ARGS) FNAME, \ - &g_ ## FNAME); \ -)\ -SCM_SNARF_DOCS(primitive, FNAME, PRIMNAME, ARGLIST, REQ, OPT, VAR, DOCSTRING) - -#define SCM_DEFINE_PUBLIC(FNAME, PRIMNAME, REQ, OPT, VAR, ARGLIST, DOCSTRING) \ -SCM_SNARF_HERE(\ -SCM_UNUSED static const char s_ ## FNAME [] = PRIMNAME; \ -SCM FNAME ARGLIST\ -)\ -SCM_SNARF_INIT(\ -scm_c_define_gsubr (s_ ## FNAME, REQ, OPT, VAR, \ - (SCM_FUNC_CAST_ARBITRARY_ARGS) FNAME); \ -scm_c_export (s_ ## FNAME, NULL); \ -)\ -SCM_SNARF_DOCS(primitive, FNAME, PRIMNAME, ARGLIST, REQ, OPT, VAR, DOCSTRING) - -#define SCM_PROC(RANAME, STR, REQ, OPT, VAR, CFN) \ -SCM_SNARF_HERE(SCM_UNUSED static const char RANAME[]=STR) \ -SCM_SNARF_INIT(scm_c_define_gsubr (RANAME, REQ, OPT, VAR, \ - (SCM_FUNC_CAST_ARBITRARY_ARGS) CFN)) - -#define SCM_REGISTER_PROC(RANAME, STR, REQ, OPT, VAR, CFN) \ -SCM_SNARF_HERE(SCM_UNUSED static const char RANAME[]=STR) \ -SCM_SNARF_INIT(scm_c_define_gsubr (RANAME, REQ, OPT, VAR, \ - (SCM_FUNC_CAST_ARBITRARY_ARGS) CFN);) \ -SCM_SNARF_DOCS(register, CFN, STR, (), REQ, OPT, VAR, \ - "implemented by the C function \"" #CFN "\"") - -#define SCM_GPROC(RANAME, STR, REQ, OPT, VAR, CFN, GF) \ -SCM_SNARF_HERE(\ -SCM_UNUSED static const char RANAME[]=STR;\ -static SCM GF \ -)SCM_SNARF_INIT(\ -GF = SCM_PACK (0); /* Dirk:FIXME:: Can we safely use #f instead of 0? */ \ -scm_c_define_gsubr_with_generic (RANAME, REQ, OPT, VAR, \ - (SCM_FUNC_CAST_ARBITRARY_ARGS) CFN, &GF) \ -) - #define SCM_KEYWORD(c_name, scheme_name) \ SCM_SNARF_HERE(static SCM c_name) \ SCM_SNARF_INIT(c_name = scm_from_locale_keyword (scheme_name)) diff --git a/libguile/socket.c b/libguile/socket.c index 1ab81586e..e23c6afed 100644 --- a/libguile/socket.c +++ b/libguile/socket.c @@ -47,6 +47,7 @@ #include <gmp.h> #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/pairs.h" #include "libguile/async.h" #include "libguile/arrays.h" diff --git a/libguile/sort.c b/libguile/sort.c index 17edc7b14..6bbd334a9 100644 --- a/libguile/sort.c +++ b/libguile/sort.c @@ -40,6 +40,7 @@ #endif #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/pairs.h" #include "libguile/boolean.h" #include "libguile/eval.h" diff --git a/libguile/srcprop.c b/libguile/srcprop.c index d33731bc5..ca90e4fb8 100644 --- a/libguile/srcprop.c +++ b/libguile/srcprop.c @@ -25,6 +25,7 @@ #include <errno.h> #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/pairs.h" #include "libguile/async.h" #include "libguile/smob.h" diff --git a/libguile/srfi-1.c b/libguile/srfi-1.c index d53c7a443..2f1dc4b34 100644 --- a/libguile/srfi-1.c +++ b/libguile/srfi-1.c @@ -25,6 +25,7 @@ #endif #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/pairs.h" #include "libguile/boolean.h" #include "libguile/eq.h" diff --git a/libguile/srfi-13.c b/libguile/srfi-13.c index d961c50ca..0d400e01e 100644 --- a/libguile/srfi-13.c +++ b/libguile/srfi-13.c @@ -29,6 +29,7 @@ #include <unictype.h> #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/pairs.h" #include <libguile/deprecation.h> #include "libguile/eval.h" diff --git a/libguile/srfi-14.c b/libguile/srfi-14.c index 059923b49..243da3e57 100644 --- a/libguile/srfi-14.c +++ b/libguile/srfi-14.c @@ -29,6 +29,7 @@ #include <unictype.h> #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/pairs.h" #include "libguile/boolean.h" #include "libguile/chars.h" diff --git a/libguile/srfi-4.c b/libguile/srfi-4.c index 9d78a555c..b0700e0ae 100644 --- a/libguile/srfi-4.c +++ b/libguile/srfi-4.c @@ -25,6 +25,7 @@ #include <string.h> #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/boolean.h" #include "libguile/__scm.h" #include "libguile/bdw-gc.h" diff --git a/libguile/srfi-60.c b/libguile/srfi-60.c index c155b8e57..74c819f30 100644 --- a/libguile/srfi-60.c +++ b/libguile/srfi-60.c @@ -25,6 +25,7 @@ #endif #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/pairs.h" #include "libguile/eq.h" diff --git a/libguile/stackchk.c b/libguile/stackchk.c index 28760c497..12df6e989 100644 --- a/libguile/stackchk.c +++ b/libguile/stackchk.c @@ -24,6 +24,7 @@ #endif #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/numbers.h" #include "libguile/ports.h" #include "libguile/threads.h" diff --git a/libguile/stacks.c b/libguile/stacks.c index e3842332c..23a2c266c 100644 --- a/libguile/stacks.c +++ b/libguile/stacks.c @@ -24,6 +24,7 @@ #endif #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/boolean.h" #include "libguile/control.h" #include "libguile/eval.h" diff --git a/libguile/stime.c b/libguile/stime.c index aaa159546..8cf92ba82 100644 --- a/libguile/stime.c +++ b/libguile/stime.c @@ -50,6 +50,7 @@ #include <unistr.h> #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/pairs.h" #include "libguile/boolean.h" #include "libguile/async.h" diff --git a/libguile/strings.c b/libguile/strings.c index f1a263033..3159ae39b 100644 --- a/libguile/strings.c +++ b/libguile/strings.c @@ -36,6 +36,7 @@ #include "striconveh.h" #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/pairs.h" #include "libguile/chars.h" #include "libguile/strings.h" diff --git a/libguile/strorder.c b/libguile/strorder.c index f88465740..bfb4d3f3e 100644 --- a/libguile/strorder.c +++ b/libguile/strorder.c @@ -23,6 +23,7 @@ #endif #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/boolean.h" #include "libguile/chars.h" #include "libguile/pairs.h" diff --git a/libguile/strports.c b/libguile/strports.c index 06f7654d2..d610fd0ce 100644 --- a/libguile/strports.c +++ b/libguile/strports.c @@ -25,6 +25,7 @@ #endif #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include <stdio.h> #include <unistd.h> diff --git a/libguile/struct.c b/libguile/struct.c index a7f66992d..59de787f7 100644 --- a/libguile/struct.c +++ b/libguile/struct.c @@ -29,6 +29,7 @@ #define SCM_BUILDING_DEPRECATED_CODE #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/boolean.h" #include "libguile/async.h" #include "libguile/chars.h" diff --git a/libguile/symbols.c b/libguile/symbols.c index 603502fca..a4b17bfe0 100644 --- a/libguile/symbols.c +++ b/libguile/symbols.c @@ -26,6 +26,7 @@ #include <unistr.h> #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/pairs.h" #include "libguile/boolean.h" #include "libguile/chars.h" diff --git a/libguile/syntax.c b/libguile/syntax.c index 223103609..fc84d2fb9 100644 --- a/libguile/syntax.c +++ b/libguile/syntax.c @@ -23,6 +23,7 @@ #endif #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/keywords.h" #include "libguile/eval.h" #include "libguile/ports.h" diff --git a/libguile/threads.c b/libguile/threads.c index 8e3887a9d..c0b955bae 100644 --- a/libguile/threads.c +++ b/libguile/threads.c @@ -43,6 +43,7 @@ #include <gc/gc_mark.h> #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/boolean.h" #include "libguile/deprecation.h" #include "libguile/extensions.h" diff --git a/libguile/throw.c b/libguile/throw.c index 18c0e0d08..ff6fb36a8 100644 --- a/libguile/throw.c +++ b/libguile/throw.c @@ -32,6 +32,7 @@ #include "libguile/smob.h" #include "libguile/eval.h" #include "libguile/eq.h" +#include "libguile/gsubr.h" #include "libguile/control.h" #include "libguile/deprecation.h" #include "libguile/backtrace.h" diff --git a/libguile/trees.c b/libguile/trees.c index 21bb223c2..b9da433ee 100644 --- a/libguile/trees.c +++ b/libguile/trees.c @@ -24,6 +24,7 @@ #endif #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/pairs.h" #include "libguile/eq.h" diff --git a/libguile/unicode.c b/libguile/unicode.c index 37eb57c56..2494f8831 100644 --- a/libguile/unicode.c +++ b/libguile/unicode.c @@ -28,6 +28,7 @@ #include <uniname.h> #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/extensions.h" #include "libguile/unicode.h" diff --git a/libguile/values.c b/libguile/values.c index 28cb93ddb..63531eedd 100644 --- a/libguile/values.c +++ b/libguile/values.c @@ -22,6 +22,7 @@ #endif #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/pairs.h" #include "libguile/eval.h" #include "libguile/feature.h" diff --git a/libguile/variable.c b/libguile/variable.c index f5c8ef81b..8d3bdc778 100644 --- a/libguile/variable.c +++ b/libguile/variable.c @@ -24,6 +24,7 @@ #endif #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/eq.h" #include "libguile/list.h" #include "libguile/ports.h" diff --git a/libguile/vectors.c b/libguile/vectors.c index 13024ed8f..d23706ac2 100644 --- a/libguile/vectors.c +++ b/libguile/vectors.c @@ -24,6 +24,7 @@ #endif #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/pairs.h" #include "libguile/eq.h" #include "libguile/list.h" diff --git a/libguile/version.c b/libguile/version.c index b72cd4037..144889125 100644 --- a/libguile/version.c +++ b/libguile/version.c @@ -24,6 +24,7 @@ #include <stdio.h> #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/strings.h" #include "libguile/numbers.h" diff --git a/libguile/vm.c b/libguile/vm.c index 404a98b3a..7dc412fd4 100644 --- a/libguile/vm.c +++ b/libguile/vm.c @@ -39,6 +39,7 @@ #include <gc/gc_mark.h> #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/atomic.h" #include "libguile/atomics-internal.h" #include "libguile/cache-internal.h" diff --git a/libguile/vports.c b/libguile/vports.c index 7c07f9c3c..23ec0a5eb 100644 --- a/libguile/vports.c +++ b/libguile/vports.c @@ -28,6 +28,7 @@ #include <errno.h> #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/boolean.h" #include "libguile/eval.h" #include "libguile/chars.h" diff --git a/libguile/weak-table.c b/libguile/weak-table.c index f56490106..cf3727a6e 100644 --- a/libguile/weak-table.c +++ b/libguile/weak-table.c @@ -29,6 +29,7 @@ #include <gc/gc_typed.h> #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/alist.h" #include "libguile/finalizers.h" #include "libguile/hash.h" diff --git a/libguile/weak-vector.c b/libguile/weak-vector.c index f7305c05b..3032dae41 100644 --- a/libguile/weak-vector.c +++ b/libguile/weak-vector.c @@ -27,6 +27,7 @@ #include <string.h> #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/extensions.h" #include "libguile/list.h" #include "libguile/pairs.h" |