wingo pushed a commit to branch wip-whippet in repository guile. commit cce7a04e555c06bcb15278210de0f9508756d6e9 Author: Andy Wingo <wi...@pobox.com> AuthorDate: Mon Jun 30 15:35:30 2025 +0200
Add macros-internal.h * libguile/macros-internal.h: New file. * libguile/Makefile.am (noinst_HEADERS): Add file. * libguile/macros.h: Remove internal definitions. * libguile/init.c: * libguile/macros.c: * libguile/print.c: Use internal file. --- libguile/Makefile.am | 1 + libguile/expand.c | 2 +- libguile/init.c | 2 +- libguile/{macros.h => macros-internal.h} | 48 ++++++++++++++++++++++++-------- libguile/macros.c | 35 +---------------------- libguile/macros.h | 10 ------- libguile/print.c | 2 +- 7 files changed, 41 insertions(+), 59 deletions(-) diff --git a/libguile/Makefile.am b/libguile/Makefile.am index 407586db1..d14d1e9e4 100644 --- a/libguile/Makefile.am +++ b/libguile/Makefile.am @@ -525,6 +525,7 @@ noinst_HEADERS = atomic.h \ gc-internal.h \ gsubr-internal.h \ keywords-internal.h \ + macros-internal.h \ posix-w32.h \ private-options.h \ programs.h \ diff --git a/libguile/expand.c b/libguile/expand.c index 6eae9947f..4b7ac71b7 100644 --- a/libguile/expand.c +++ b/libguile/expand.c @@ -31,7 +31,7 @@ #include "hashtab.h" #include "keywords.h" #include "list.h" -#include "macros.h" +#include "macros-internal.h" #include "memoize.h" /* for the SCM_API declarations of 'scm_sym_' */ #include "modules.h" #include "pairs.h" diff --git a/libguile/init.c b/libguile/init.c index 5b79ad01b..d3b4dd240 100644 --- a/libguile/init.c +++ b/libguile/init.c @@ -91,7 +91,7 @@ #include "list.h" #include "load.h" #include "loader.h" -#include "macros.h" +#include "macros-internal.h" #include "memoize.h" #include "modules.h" #include "net_db.h" diff --git a/libguile/macros.h b/libguile/macros-internal.h similarity index 60% copy from libguile/macros.h copy to libguile/macros-internal.h index 3227d0680..8c02508a2 100644 --- a/libguile/macros.h +++ b/libguile/macros-internal.h @@ -1,5 +1,5 @@ -#ifndef SCM_MACROS_H -#define SCM_MACROS_H +#ifndef SCM_MACROS_INTERNAL_H +#define SCM_MACROS_INTERNAL_H /* Copyright 1998,2000-2003,2006,2008-2010,2018,2025 Free Software Foundation, Inc. @@ -22,19 +22,43 @@ -#include "libguile/scm.h" +#include "libguile/macros.h" -typedef SCM (*scm_t_macro_primitive) (SCM, SCM); +struct scm_syntax_transformer +{ + scm_t_bits tag; + scm_t_macro_primitive primitive; + SCM name; + SCM type; + SCM binding; +}; + +static inline int +scm_is_syntax_transformer (SCM x) +{ + return SCM_HAS_TYP16 (x, scm_tc16_syntax_transformer); +} + +static inline struct scm_syntax_transformer* +scm_to_syntax_transformer (SCM x) +{ + if (!scm_is_syntax_transformer (x)) + abort (); + return (struct scm_syntax_transformer *)SCM_UNPACK_POINTER (x); +} -SCM_API SCM scm_make_syntax_transformer (SCM name_or_existing_definition, - SCM type, SCM binding); -SCM_API SCM scm_macro_p (SCM obj); -SCM_API SCM scm_macro_type (SCM m); -SCM_API SCM scm_macro_name (SCM m); -SCM_API SCM scm_macro_binding (SCM m); -SCM_API SCM scm_macro_transformer (SCM m); +static inline SCM +scm_from_syntax_transformer (struct scm_syntax_transformer *m) +{ + return SCM_PACK_POINTER (m); +} + +#define SCM_MACROP(x) scm_is_syntax_transformer (x) +#define SCM_VALIDATE_MACRO(p,v) SCM_MAKE_VALIDATE ((p), (v), MACROP) + +typedef SCM (*scm_t_macro_primitive) (SCM, SCM); SCM_INTERNAL int scm_i_print_syntax_transformer (SCM macro, SCM port, scm_print_state *pstate); @@ -46,4 +70,4 @@ SCM_INTERNAL scm_t_macro_primitive scm_i_primitive_syntax_transformer (SCM m); SCM_INTERNAL void scm_init_macros (void); -#endif /* SCM_MACROS_H */ +#endif /* SCM_MACROS_INTERNAL_H */ diff --git a/libguile/macros.c b/libguile/macros.c index 32a23ee04..cb162c4b8 100644 --- a/libguile/macros.c +++ b/libguile/macros.c @@ -35,40 +35,7 @@ #include "threads-internal.h" #include "variable.h" -#include "macros.h" - - -struct scm_syntax_transformer -{ - scm_t_bits tag; - scm_t_macro_primitive primitive; - SCM name; - SCM type; - SCM binding; -}; - -static inline int -scm_is_syntax_transformer (SCM x) -{ - return SCM_HAS_TYP16 (x, scm_tc16_syntax_transformer); -} - -static inline struct scm_syntax_transformer* -scm_to_syntax_transformer (SCM x) -{ - if (!scm_is_syntax_transformer (x)) - abort (); - return (struct scm_syntax_transformer *)SCM_UNPACK_POINTER (x); -} - -static inline SCM -scm_from_syntax_transformer (struct scm_syntax_transformer *m) -{ - return SCM_PACK_POINTER (m); -} - -#define SCM_MACROP(x) scm_is_syntax_transformer (x) -#define SCM_VALIDATE_MACRO(p,v) SCM_MAKE_VALIDATE ((p), (v), MACROP) +#include "macros-internal.h" int diff --git a/libguile/macros.h b/libguile/macros.h index 3227d0680..6037068fe 100644 --- a/libguile/macros.h +++ b/libguile/macros.h @@ -36,14 +36,4 @@ SCM_API SCM scm_macro_name (SCM m); SCM_API SCM scm_macro_binding (SCM m); SCM_API SCM scm_macro_transformer (SCM m); -SCM_INTERNAL int scm_i_print_syntax_transformer (SCM macro, SCM port, - scm_print_state *pstate); -SCM_INTERNAL -SCM scm_i_make_primitive_syntax_transformer (const char *name, - scm_t_macro_primitive fn); -SCM_INTERNAL scm_t_macro_primitive scm_i_primitive_syntax_transformer (SCM m); - -SCM_INTERNAL void scm_init_macros (void); - - #endif /* SCM_MACROS_H */ diff --git a/libguile/print.c b/libguile/print.c index 4ca1abbbf..2a7822d15 100644 --- a/libguile/print.c +++ b/libguile/print.c @@ -52,7 +52,7 @@ #include "gsubr.h" #include "hashtab.h" #include "keywords.h" -#include "macros.h" +#include "macros-internal.h" #include "numbers.h" #include "pairs.h" #include "ports-internal.h"