From bf15afa6bfa143119168bdc7a5bc7ff8b619457b Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Wed, 20 Jun 2018 09:04:55 +0200 Subject: [PATCH] Move subr snarfing macros to gsubr.h. * libguile/snarf.h: Remove gsubr include and subr snarfers. * libguile/gsubr.h (SCM_DEFINE_GSUBR, SCM_DEFINE, SCM_PRIMITIVE_GENERIC): (SCM_DEFINE_PUBLIC, SCM_PROC, SCM_REGISTER_PROC, SCM_GPROC): Move here. * libguile/alist.c: * libguile/array-map.c: * libguile/arrays.c: * libguile/async.c: * libguile/atomic.c: * libguile/backtrace.c: * libguile/bitvectors.c: * libguile/boolean.c: * libguile/bytevectors.c: * libguile/chars.c: * libguile/continuations.c: * libguile/control.c: * libguile/debug-malloc.c: * libguile/debug.c: * libguile/deprecation.c: * libguile/dynl.c: * libguile/eq.c: * libguile/error.c: * libguile/error.h: * libguile/eval.c: * libguile/evalext.c: * libguile/expand.c: * libguile/extensions.c: * libguile/fdes-finalizers.c: * libguile/feature.c: * libguile/filesys.c: * libguile/finalizers.c: * libguile/fluids.c: * libguile/foreign-object.c: * libguile/foreign.c: * libguile/fports.c: * libguile/frames.c: * libguile/gc.c: * libguile/generalized-arrays.c: * libguile/generalized-vectors.c: * libguile/gettext.c: * libguile/guardians.c: * libguile/hash.c: * libguile/hashtab.c: * libguile/hooks.c: * libguile/i18n.c: * libguile/instructions.c: * libguile/intrinsics.c: * libguile/ioext.c: * libguile/keywords.c: * libguile/list.c: * libguile/load.c: * libguile/loader.c: * libguile/macros.c: * libguile/memoize.c: * libguile/modules.c: * libguile/net_db.c: * libguile/numbers.c: * libguile/objprop.c: * libguile/pairs.c: * libguile/poll.c: * libguile/ports.c: * libguile/posix.c: * libguile/print.c: * libguile/procs.c: * libguile/programs.c: * libguile/promises.c: * libguile/r6rs-ports.c: * libguile/random.c: * libguile/rdelim.c: * libguile/read.c: * libguile/regex-posix.c: * libguile/rw.c: * libguile/scmsigs.c: * libguile/simpos.c: * libguile/smob.c: * libguile/socket.c: * libguile/sort.c: * libguile/srcprop.c: * libguile/srfi-1.c: * libguile/srfi-13.c: * libguile/srfi-14.c: * libguile/srfi-4.c: * libguile/srfi-60.c: * libguile/stackchk.c: * libguile/stacks.c: * libguile/stime.c: * libguile/strings.c: * libguile/strorder.c: * libguile/strports.c: * libguile/struct.c: * libguile/symbols.c: * libguile/syntax.c: * libguile/threads.c: * libguile/throw.c: * libguile/trees.c: * libguile/unicode.c: * libguile/values.c: * libguile/variable.c: * libguile/vectors.c: * libguile/version.c: * libguile/vm.c: * libguile/vports.c: * libguile/weak-table.c: * libguile/weak-vector.c: Add gsubr includes. --- libguile/alist.c | 1 + libguile/array-map.c | 1 + libguile/arrays.c | 1 + libguile/async.c | 1 + libguile/atomic.c | 1 + libguile/backtrace.c | 1 + libguile/bitvectors.c | 1 + libguile/boolean.c | 1 + libguile/bytevectors.c | 1 + libguile/chars.c | 1 + libguile/continuations.c | 1 + libguile/control.c | 1 + libguile/debug-malloc.c | 1 + libguile/debug.c | 1 + libguile/deprecation.c | 1 + libguile/dynl.c | 1 + libguile/eq.c | 1 + libguile/error.c | 1 + libguile/error.h | 3 ++ libguile/eval.c | 1 + libguile/evalext.c | 1 + libguile/expand.c | 1 + libguile/extensions.c | 4 +- libguile/fdes-finalizers.c | 1 + libguile/feature.c | 1 + libguile/filesys.c | 1 + libguile/finalizers.c | 1 + libguile/fluids.c | 1 + libguile/foreign-object.c | 1 + libguile/foreign.c | 1 + libguile/fports.c | 1 + libguile/frames.c | 1 + libguile/gc.c | 1 + libguile/generalized-arrays.c | 1 + libguile/generalized-vectors.c | 5 ++- libguile/gettext.c | 1 + libguile/gsubr.h | 76 +++++++++++++++++++++++++++++++++- libguile/guardians.c | 1 + libguile/hash.c | 1 + libguile/hashtab.c | 1 + libguile/hooks.c | 1 + libguile/i18n.c | 1 + libguile/instructions.c | 1 + libguile/intrinsics.c | 1 + libguile/ioext.c | 1 + libguile/keywords.c | 1 + libguile/list.c | 1 + libguile/load.c | 1 + libguile/loader.c | 1 + libguile/macros.c | 1 + libguile/memoize.c | 1 + libguile/modules.c | 1 + libguile/net_db.c | 1 + libguile/numbers.c | 1 + libguile/objprop.c | 1 + libguile/pairs.c | 2 +- libguile/poll.c | 1 + libguile/ports.c | 1 + libguile/posix.c | 1 + libguile/print.c | 1 + libguile/procs.c | 1 + libguile/programs.c | 1 + libguile/promises.c | 1 + libguile/r6rs-ports.c | 1 + libguile/random.c | 4 +- libguile/rdelim.c | 1 + libguile/read.c | 1 + libguile/regex-posix.c | 1 + libguile/rw.c | 1 + libguile/scmsigs.c | 1 + libguile/simpos.c | 1 + libguile/smob.c | 1 + libguile/snarf.h | 69 +----------------------------- libguile/socket.c | 1 + libguile/sort.c | 1 + libguile/srcprop.c | 1 + libguile/srfi-1.c | 1 + libguile/srfi-13.c | 1 + libguile/srfi-14.c | 1 + libguile/srfi-4.c | 1 + libguile/srfi-60.c | 1 + libguile/stackchk.c | 1 + libguile/stacks.c | 1 + libguile/stime.c | 1 + libguile/strings.c | 1 + libguile/strorder.c | 1 + libguile/strports.c | 1 + libguile/struct.c | 1 + libguile/symbols.c | 1 + libguile/syntax.c | 1 + libguile/threads.c | 1 + libguile/throw.c | 1 + libguile/trees.c | 1 + libguile/unicode.c | 1 + libguile/values.c | 1 + libguile/variable.c | 1 + libguile/vectors.c | 1 + libguile/version.c | 1 + libguile/vm.c | 1 + libguile/vports.c | 1 + libguile/weak-table.c | 1 + libguile/weak-vector.c | 1 + 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 #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 #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/boolean.h" #include 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 #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 #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 #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 #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 #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 #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 #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 #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 #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 #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 #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 #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 #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 #include #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 #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 #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 #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 #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 #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 #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 #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 #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 #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 #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 #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 #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 #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 #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 #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 #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 #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 #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 #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 #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 #endif -#include "libguile/_scm.h" - #include #include #include @@ -34,6 +32,8 @@ #include #include +#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 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 #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 #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/pairs.h" #include 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 #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 #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 /* 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,14 +26,10 @@ #include -#include + /* 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 - - #ifdef SCM_ALIGNED /* We support static allocation of some `SCM' objects. */ # define SCM_SUPPORT_STATIC_ALLOCATION @@ -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 #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 #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 #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/pairs.h" #include #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 #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 #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 #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 #include 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 #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 #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 #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 #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 #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 #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 #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 #include "libguile/_scm.h" +#include "libguile/gsubr.h" #include "libguile/extensions.h" #include "libguile/list.h" #include "libguile/pairs.h"