[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Guile-commits] 47/86: Move subr snarfing macros to gsubr.h.
From: |
Andy Wingo |
Subject: |
[Guile-commits] 47/86: Move subr snarfing macros to gsubr.h. |
Date: |
Wed, 20 Jun 2018 14:09:37 -0400 (EDT) |
wingo pushed a commit to branch master
in repository guile.
commit bf15afa6bfa143119168bdc7a5bc7ff8b619457b
Author: Andy Wingo <address@hidden>
Date: Wed Jun 20 09:04:55 2018 +0200
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 a4e279d..3f1d014 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 923dedd..addd048 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 685231c..2ab5df0 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 4879048..abe4c32 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 e5d3ee9..a82cd82 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 9b4a630..18ac33c 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 a7be06e..e3af335 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 b23aa32..749703d 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 75d9bca..7669077 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 2376536..cab87cd 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 508ba88..779810d 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 6a0a19c..fb8f49a 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 f6dabe7..1ab1aea 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 b0b110a..57fd808 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 187fef9..6fba31f 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 59fbd7c..413f2e3 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 e7cbb2f..51f6564 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 1301907..907abb6 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 81b7a58..883c2db 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 70b682a..d02d938 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 84b3dde..6f492c7 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 c28ca4e..cc99484 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 5bca008..be73c8c 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 3195600..3143299 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 5364c1d..ca491f0 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 0be0b8f..30bd044 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 ead7e8f..eb16f9d 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 0a9df1a..773c318 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 9442cf6..7a6a5eb 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 ba7bc21..41be3e5 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 6121a0b..24c2ed0 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 11eb54e..c19f511 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 f52302a..9c7470d 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 d45d206..b521a48 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 68c1042..32077bb 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 3de3f5e..a505c2e 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 83eebc3..5199914 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 52025b3..7edb396 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 21dee0d..18a878d 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 03f71ff..f25543f 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 dd3766a..338988c 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 d7c4447..9704e07 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 19d9dec..9d4826c 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 9d2f17f..840747f 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 100d708..a089e46 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 f987a52..83e3b87 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 7c1627a..08b8b51 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 97a7159..eaaa4ed 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 b7c8c94..e7c4f98 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 d7d2007..1ea8aaf 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 1a149c5..1c4f05e 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 9ff1ec7..56e34c0 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 b500eb8..75d530d 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 16b5a66..d722c41 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 8f8b7fb..a0fc3b7 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 44b627f..6b51135 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 d35a9b5..ab48020 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 5a51360..fd68329 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 edf03b0..718a9d9 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 b801884..dbca06b 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 7092748..c168fe4 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 6973384..e502ece 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 20274b2..378028d 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 3db8bd5..cfad4e0 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 66626f7..60279e8 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 40d0073..53990f4 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 7b98541..d1eba62 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 8f47912..3b797b1 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 b13da1c..fb8a36f 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 a279734..b502c87 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 3701f79..6163cc5 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 e2ebef8..f710cd6 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 a81f712..836067b 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 1ab8158..e23c6af 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 17edc7b..6bbd334 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 d33731b..ca90e4f 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 d53c7a4..2f1dc4b 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 d961c50..0d400e0 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 059923b..243da3e 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 9d78a55..b0700e0 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 c155b8e..74c819f 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 28760c4..12df6e9 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 e384233..23a2c26 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 aaa1595..8cf92ba 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 f1a2630..3159ae3 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 f884657..bfb4d3f 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 06f7654..d610fd0 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 a7f6699..59de787 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 603502f..a4b17bf 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 2231036..fc84d2f 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 8e3887a..c0b955b 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 18c0e0d..ff6fb36 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 21bb223..b9da433 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 37eb57c..2494f88 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 28cb93d..63531ee 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 f5c8ef8..8d3bdc7 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 13024ed..d23706a 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 b72cd40..1448891 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 404a98b..7dc412f 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 7c07f9c..23ec0a5 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 f564901..cf3727a 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 f7305c0..3032dae 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"
- [Guile-commits] 74/86: Remove crufty support for 16-bit architectures., (continued)
- [Guile-commits] 74/86: Remove crufty support for 16-bit architectures., Andy Wingo, 2018/06/20
- [Guile-commits] 73/86: Deprecate pre-stdint.h limit macros, Andy Wingo, 2018/06/20
- [Guile-commits] 80/86: Rationalize guile-readline includes, Andy Wingo, 2018/06/20
- [Guile-commits] 61/86: Devolve symbols.h from _scm.h, Andy Wingo, 2018/06/20
- [Guile-commits] 76/86: Move SCM_ARG1, etc definitions to error.h, Andy Wingo, 2018/06/20
- [Guile-commits] 59/86: Devolve threads.h from _scm.h., Andy Wingo, 2018/06/20
- [Guile-commits] 44/86: Devolve numbers.h from _scm.h., Andy Wingo, 2018/06/20
- [Guile-commits] 71/86: Use stdint.h limit macros, Andy Wingo, 2018/06/20
- [Guile-commits] 77/86: Minor __scm.h reformatting, Andy Wingo, 2018/06/20
- [Guile-commits] 85/86: libguile header files have uniform format for copyright declarations, Andy Wingo, 2018/06/20
- [Guile-commits] 47/86: Move subr snarfing macros to gsubr.h.,
Andy Wingo <=
- [Guile-commits] 83/86: Make .c copyright headers uniform, Andy Wingo, 2018/06/20
- [Guile-commits] 65/86: Remove _scm.h, Andy Wingo, 2018/06/20
- [Guile-commits] 66/86: Remove useless "classes: h_files" from Guile headers., Andy Wingo, 2018/06/20
- [Guile-commits] 79/86: Rename __scm.h to scm.h, Andy Wingo, 2018/06/20
- [Guile-commits] 78/86: Inline tags.h into __scm.h, Andy Wingo, 2018/06/20
- [Guile-commits] 67/86: Remove Emacs local variables comments in Guile source, Andy Wingo, 2018/06/20
- [Guile-commits] 82/86: Rationalize include order in C files, Andy Wingo, 2018/06/20
- [Guile-commits] 81/86: Make libguile header inclusion consistent within libguile c files, Andy Wingo, 2018/06/20
- [Guile-commits] 84/86: Remove (C) from copyright statements, Andy Wingo, 2018/06/20
- [Guile-commits] 86/86: Update license notices in all C files, Andy Wingo, 2018/06/20