mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-30 06:50:31 +02:00
* snarf.h (SCM_SNARF_HERE, SCM_SNARF_INIT, SCM_SNARF_DOCS):
Renamed from SCM_HERE, SCM_INIT, SCM_DOCS.
This commit is contained in:
parent
ffdcbb3f8d
commit
94a708591f
1 changed files with 52 additions and 47 deletions
|
@ -63,116 +63,121 @@
|
||||||
* initializes them to the result of foo (), do:
|
* initializes them to the result of foo (), do:
|
||||||
*
|
*
|
||||||
* #define SCM_FOO(NAME) \
|
* #define SCM_FOO(NAME) \
|
||||||
* SCM_HERE (int NAME) \
|
* SCM_SNARF_HERE (int NAME) \
|
||||||
* SCM_INIT (NAME = foo ())
|
* SCM_SNARF_INIT (NAME = foo ())
|
||||||
*
|
*
|
||||||
* The SCM_INIT text goes into the corresponding .x file
|
* The SCM_SNARF_INIT text goes into the corresponding .x file
|
||||||
* up through the first occurrence of SCM__D on that line, if any.
|
* up through the first occurrence of SCM__D on that line, if any.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef SCM_MAGIC_SNARFER
|
#ifndef SCM_MAGIC_SNARFER
|
||||||
# define SCM_HERE(X) X
|
# define SCM_SNARF_HERE(X) X
|
||||||
# define SCM_INIT(X)
|
# define SCM_SNARF_INIT(X)
|
||||||
# define SCM_DOCS(X)
|
# define SCM_SNARF_DOCS(X)
|
||||||
#else
|
#else
|
||||||
# define SCM_HERE(X)
|
# define SCM_SNARF_HERE(X)
|
||||||
# define SCM_INIT(X) SCM__I X
|
# define SCM_SNARF_INIT(X) SCM__I X
|
||||||
# define SCM_DOCS(X) X
|
# define SCM_SNARF_DOCS(X) X
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define SCM_DEFINE(FNAME, PRIMNAME, REQ, OPT, VAR, ARGLIST, DOCSTRING) \
|
#define SCM_DEFINE(FNAME, PRIMNAME, REQ, OPT, VAR, ARGLIST, DOCSTRING) \
|
||||||
SCM_HERE(\
|
SCM_SNARF_HERE(\
|
||||||
static const char s_ ## FNAME [] = PRIMNAME; \
|
static const char s_ ## FNAME [] = PRIMNAME; \
|
||||||
SCM FNAME ARGLIST\
|
SCM FNAME ARGLIST\
|
||||||
)\
|
)\
|
||||||
SCM_INIT(\
|
SCM_SNARF_INIT(\
|
||||||
scm_make_gsubr (s_ ## FNAME, REQ, OPT, VAR, (SCM_FUNC_CAST_ARBITRARY_ARGS) FNAME); \
|
scm_make_gsubr (s_ ## FNAME, REQ, OPT, VAR, \
|
||||||
|
(SCM_FUNC_CAST_ARBITRARY_ARGS) FNAME); \
|
||||||
)\
|
)\
|
||||||
SCM_DOCS(\
|
SCM_SNARF_DOCS(\
|
||||||
SCM__DP PRIMNAME #ARGLIST | REQ | OPT | VAR | __FILE__:__LINE__ | SCM__S DOCSTRING SCM__E \
|
SCM__DP PRIMNAME #ARGLIST | REQ | OPT | VAR | __FILE__:__LINE__ | SCM__S DOCSTRING SCM__E \
|
||||||
)
|
)
|
||||||
|
|
||||||
#define SCM_DEFINE1(FNAME, PRIMNAME, TYPE, ARGLIST, DOCSTRING) \
|
#define SCM_DEFINE1(FNAME, PRIMNAME, TYPE, ARGLIST, DOCSTRING) \
|
||||||
SCM_HERE(\
|
SCM_SNARF_HERE(\
|
||||||
static const char s_ ## FNAME [] = PRIMNAME; \
|
static const char s_ ## FNAME [] = PRIMNAME; \
|
||||||
SCM FNAME ARGLIST\
|
SCM FNAME ARGLIST\
|
||||||
)\
|
)\
|
||||||
SCM_INIT(scm_make_subr (s_ ## FNAME, TYPE, FNAME); ) \
|
SCM_SNARF_INIT(scm_make_subr (s_ ## FNAME, TYPE, FNAME); ) \
|
||||||
SCM_DOCS(\
|
SCM_SNARF_DOCS(\
|
||||||
SCM__D1 PRIMNAME #ARGLIST | 2 | 0 | 0 | __FILE__:__LINE__ | SCM__S DOCSTRING SCM__E \
|
SCM__D1 PRIMNAME #ARGLIST | 2 | 0 | 0 | __FILE__:__LINE__ | SCM__S DOCSTRING SCM__E \
|
||||||
)
|
)
|
||||||
|
|
||||||
#define SCM_PROC(RANAME, STR, REQ, OPT, VAR, CFN) \
|
#define SCM_PROC(RANAME, STR, REQ, OPT, VAR, CFN) \
|
||||||
SCM_HERE(static const char RANAME[]=STR) \
|
SCM_SNARF_HERE(static const char RANAME[]=STR) \
|
||||||
SCM_INIT(scm_make_gsubr (RANAME, REQ, OPT, VAR, (SCM_FUNC_CAST_ARBITRARY_ARGS) CFN))
|
SCM_SNARF_INIT(scm_make_gsubr (RANAME, REQ, OPT, VAR, \
|
||||||
|
(SCM_FUNC_CAST_ARBITRARY_ARGS) CFN))
|
||||||
|
|
||||||
#define SCM_REGISTER_PROC(RANAME, STR, REQ, OPT, VAR, CFN) \
|
#define SCM_REGISTER_PROC(RANAME, STR, REQ, OPT, VAR, CFN) \
|
||||||
SCM_HERE(static const char RANAME[]=STR) \
|
SCM_SNARF_HERE(static const char RANAME[]=STR) \
|
||||||
SCM_INIT(scm_make_gsubr (RANAME, REQ, OPT, VAR, (SCM_FUNC_CAST_ARBITRARY_ARGS) CFN);) \
|
SCM_SNARF_INIT(scm_make_gsubr (RANAME, REQ, OPT, VAR, \
|
||||||
SCM_DOCS(\
|
(SCM_FUNC_CAST_ARBITRARY_ARGS) CFN);) \
|
||||||
|
SCM_SNARF_DOCS(\
|
||||||
SCM__DR STR | REQ | OPT | VAR | __FILE__:__LINE__ | SCM__S CFN SCM__E \
|
SCM__DR STR | REQ | OPT | VAR | __FILE__:__LINE__ | SCM__S CFN SCM__E \
|
||||||
)
|
)
|
||||||
|
|
||||||
#define SCM_GPROC(RANAME, STR, REQ, OPT, VAR, CFN, GF) \
|
#define SCM_GPROC(RANAME, STR, REQ, OPT, VAR, CFN, GF) \
|
||||||
SCM_HERE(\
|
SCM_SNARF_HERE(\
|
||||||
static const char RANAME[]=STR;\
|
static const char RANAME[]=STR;\
|
||||||
static SCM GF \
|
static SCM GF \
|
||||||
)SCM_INIT(\
|
)SCM_SNARF_INIT(\
|
||||||
GF = SCM_PACK (0); /* Dirk:FIXME:: Can we safely use #f instead of 0? */ \
|
GF = SCM_PACK (0); /* Dirk:FIXME:: Can we safely use #f instead of 0? */ \
|
||||||
scm_make_gsubr_with_generic (RANAME, REQ, OPT, VAR, (SCM_FUNC_CAST_ARBITRARY_ARGS) CFN, &GF) \
|
scm_make_gsubr_with_generic (RANAME, REQ, OPT, VAR, \
|
||||||
|
(SCM_FUNC_CAST_ARBITRARY_ARGS) CFN, &GF) \
|
||||||
)
|
)
|
||||||
|
|
||||||
#define SCM_PROC1(RANAME, STR, TYPE, CFN) \
|
#define SCM_PROC1(RANAME, STR, TYPE, CFN) \
|
||||||
SCM_HERE(static const char RANAME[]=STR) \
|
SCM_SNARF_HERE(static const char RANAME[]=STR) \
|
||||||
SCM_INIT(\
|
SCM_SNARF_INIT(\
|
||||||
scm_make_subr (RANAME, TYPE, (SCM_FUNC_CAST_ARBITRARY_ARGS) CFN) \
|
scm_make_subr (RANAME, TYPE, (SCM_FUNC_CAST_ARBITRARY_ARGS) CFN) \
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
#define SCM_GPROC1(RANAME, STR, TYPE, CFN, GF) \
|
#define SCM_GPROC1(RANAME, STR, TYPE, CFN, GF) \
|
||||||
SCM_HERE(\
|
SCM_SNARF_HERE(\
|
||||||
static const char RANAME[]=STR; \
|
static const char RANAME[]=STR; \
|
||||||
static SCM GF \
|
static SCM GF \
|
||||||
)SCM_INIT(\
|
)SCM_SNARF_INIT(\
|
||||||
GF = SCM_PACK (0); /* Dirk:FIXME:: Can we safely use #f instead of 0? */ \
|
GF = SCM_PACK (0); /* Dirk:FIXME:: Can we safely use #f instead of 0? */ \
|
||||||
scm_make_subr_with_generic (RANAME, TYPE, (SCM_FUNC_CAST_ARBITRARY_ARGS) CFN, &GF) \
|
scm_make_subr_with_generic (RANAME, TYPE, \
|
||||||
|
(SCM_FUNC_CAST_ARBITRARY_ARGS) CFN, &GF) \
|
||||||
)
|
)
|
||||||
|
|
||||||
#define SCM_SYNTAX(RANAME, STR, TYPE, CFN) \
|
#define SCM_SYNTAX(RANAME, STR, TYPE, CFN) \
|
||||||
SCM_HERE(static const char RANAME[]=STR)\
|
SCM_SNARF_HERE(static const char RANAME[]=STR)\
|
||||||
SCM_INIT(scm_make_synt (RANAME, TYPE, CFN))
|
SCM_SNARF_INIT(scm_make_synt (RANAME, TYPE, CFN))
|
||||||
|
|
||||||
#define SCM_SYMBOL(c_name, scheme_name) \
|
#define SCM_SYMBOL(c_name, scheme_name) \
|
||||||
SCM_HERE(static SCM c_name) \
|
SCM_SNARF_HERE(static SCM c_name) \
|
||||||
SCM_INIT(c_name = scm_permanent_object (SCM_CAR (scm_intern0 (scheme_name))))
|
SCM_SNARF_INIT(c_name = scm_permanent_object (SCM_CAR (scm_intern0 (scheme_name))))
|
||||||
|
|
||||||
#define SCM_GLOBAL_SYMBOL(c_name, scheme_name) \
|
#define SCM_GLOBAL_SYMBOL(c_name, scheme_name) \
|
||||||
SCM_HERE(SCM c_name) \
|
SCM_SNARF_HERE(SCM c_name) \
|
||||||
SCM_INIT(c_name = scm_permanent_object (SCM_CAR (scm_intern0 (scheme_name))))
|
SCM_SNARF_INIT(c_name = scm_permanent_object (SCM_CAR (scm_intern0 (scheme_name))))
|
||||||
|
|
||||||
#define SCM_KEYWORD(c_name, scheme_name) \
|
#define SCM_KEYWORD(c_name, scheme_name) \
|
||||||
SCM_HERE(static SCM c_name) \
|
SCM_SNARF_HERE(static SCM c_name) \
|
||||||
SCM_INIT(c_name = scm_permanent_object (scm_c_make_keyword (scheme_name)))
|
SCM_SNARF_INIT(c_name = scm_permanent_object (scm_c_make_keyword (scheme_name)))
|
||||||
|
|
||||||
#define SCM_GLOBAL_KEYWORD(c_name, scheme_name) \
|
#define SCM_GLOBAL_KEYWORD(c_name, scheme_name) \
|
||||||
SCM_HERE(SCM c_name) \
|
SCM_SNARF_HERE(SCM c_name) \
|
||||||
SCM_INIT(c_name = scm_permanent_object (scm_c_make_keyword (scheme_name)))
|
SCM_SNARF_INIT(c_name = scm_permanent_object (scm_c_make_keyword (scheme_name)))
|
||||||
|
|
||||||
#define SCM_VCELL(c_name, scheme_name) \
|
#define SCM_VCELL(c_name, scheme_name) \
|
||||||
SCM_HERE(static SCM c_name) \
|
SCM_SNARF_HERE(static SCM c_name) \
|
||||||
SCM_INIT(c_name = scm_permanent_object (scm_intern0 (scheme_name)); SCM_SETCDR (c_name, SCM_BOOL_F))
|
SCM_SNARF_INIT(c_name = scm_permanent_object (scm_intern0 (scheme_name)); SCM_SETCDR (c_name, SCM_BOOL_F))
|
||||||
|
|
||||||
#define SCM_GLOBAL_VCELL(c_name, scheme_name) \
|
#define SCM_GLOBAL_VCELL(c_name, scheme_name) \
|
||||||
SCM_HERE(SCM c_name) \
|
SCM_SNARF_HERE(SCM c_name) \
|
||||||
SCM_INIT(c_name = scm_permanent_object (scm_intern0 (scheme_name)); SCM_SETCDR (c_name, SCM_BOOL_F))
|
SCM_SNARF_INIT(c_name = scm_permanent_object (scm_intern0 (scheme_name)); SCM_SETCDR (c_name, SCM_BOOL_F))
|
||||||
|
|
||||||
#define SCM_VCELL_INIT(c_name, scheme_name, init_val) \
|
#define SCM_VCELL_INIT(c_name, scheme_name, init_val) \
|
||||||
SCM_HERE(static SCM c_name) \
|
SCM_SNARF_HERE(static SCM c_name) \
|
||||||
SCM_INIT(c_name = scm_permanent_object (scm_intern0 (scheme_name)); SCM_SETCDR (c_name, init_val))
|
SCM_SNARF_INIT(c_name = scm_permanent_object (scm_intern0 (scheme_name)); SCM_SETCDR (c_name, init_val))
|
||||||
|
|
||||||
#define SCM_GLOBAL_VCELL_INIT(c_name, scheme_name, init_val) \
|
#define SCM_GLOBAL_VCELL_INIT(c_name, scheme_name, init_val) \
|
||||||
SCM_HERE(SCM c_name) \
|
SCM_SNARF_HERE(SCM c_name) \
|
||||||
SCM_INIT(c_name = scm_permanent_object (scm_intern0 (scheme_name)); SCM_SETCDR (c_name, init_val))
|
SCM_SNARF_INIT(c_name = scm_permanent_object (scm_intern0 (scheme_name)); SCM_SETCDR (c_name, init_val))
|
||||||
|
|
||||||
#define SCM_CONST_LONG(c_name, scheme_name,value) \
|
#define SCM_CONST_LONG(c_name, scheme_name,value) \
|
||||||
SCM_VCELL_INIT(c_name, scheme_name, scm_long2num(value))
|
SCM_VCELL_INIT(c_name, scheme_name, scm_long2num(value))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue