77 |
#ifdef SCM_MAGIC_SNARF_INITS |
#ifdef SCM_MAGIC_SNARF_INITS |
78 |
# define SCM_SNARF_HERE(X) |
# define SCM_SNARF_HERE(X) |
79 |
# define SCM_SNARF_INIT(X) ^^ X |
# define SCM_SNARF_INIT(X) ^^ X |
80 |
# define SCM_SNARF_DOCS(TYPE, FNAME, ARGLIST, REQ, OPT, VAR, DOCSTRING) |
# define SCM_SNARF_DOCS(TYPE, CNAME, FNAME, ARGLIST, REQ, OPT, VAR, DOCSTRING) |
81 |
#else |
#else |
82 |
# ifdef SCM_MAGIC_SNARF_DOCS |
# ifdef SCM_MAGIC_SNARF_DOCS |
83 |
# define SCM_SNARF_HERE(X) |
# define SCM_SNARF_HERE(X) |
84 |
# define SCM_SNARF_INIT(X) |
# define SCM_SNARF_INIT(X) |
85 |
# define SCM_SNARF_DOCS(TYPE, FNAME, ARGLIST, REQ, OPT, VAR, DOCSTRING) \ |
# define SCM_SNARF_DOCS(TYPE, CNAME, FNAME, ARGLIST, REQ, OPT, VAR, DOCSTRING) \ |
86 |
^^ { \ |
^^ { \ |
87 |
|
cname CNAME ^^ \ |
88 |
fname FNAME ^^ \ |
fname FNAME ^^ \ |
89 |
type TYPE ^^ \ |
type TYPE ^^ \ |
90 |
location __FILE__ __LINE__ ^^ \ |
location __FILE__ __LINE__ ^^ \ |
94 |
# else |
# else |
95 |
# define SCM_SNARF_HERE(X) X |
# define SCM_SNARF_HERE(X) X |
96 |
# define SCM_SNARF_INIT(X) |
# define SCM_SNARF_INIT(X) |
97 |
# define SCM_SNARF_DOCS(TYPE, FNAME, ARGLIST, REQ, OPT, VAR, DOCSTRING) |
# define SCM_SNARF_DOCS(TYPE, CNAME, FNAME, ARGLIST, REQ, OPT, VAR, DOCSTRING) |
98 |
# endif |
# endif |
99 |
#endif |
#endif |
100 |
|
|
107 |
scm_c_define_gsubr (s_ ## FNAME, REQ, OPT, VAR, \ |
scm_c_define_gsubr (s_ ## FNAME, REQ, OPT, VAR, \ |
108 |
(SCM_FUNC_CAST_ARBITRARY_ARGS) FNAME); \ |
(SCM_FUNC_CAST_ARBITRARY_ARGS) FNAME); \ |
109 |
)\ |
)\ |
110 |
SCM_SNARF_DOCS(primitive, PRIMNAME, ARGLIST, REQ, OPT, VAR, DOCSTRING) |
SCM_SNARF_DOCS(primitive, FNAME, PRIMNAME, ARGLIST, REQ, OPT, VAR, DOCSTRING) |
111 |
|
|
112 |
#define SCM_DEFINE1(FNAME, PRIMNAME, TYPE, ARGLIST, DOCSTRING) \ |
#define SCM_DEFINE1(FNAME, PRIMNAME, TYPE, ARGLIST, DOCSTRING) \ |
113 |
SCM_SNARF_HERE(\ |
SCM_SNARF_HERE(\ |
115 |
SCM FNAME ARGLIST\ |
SCM FNAME ARGLIST\ |
116 |
)\ |
)\ |
117 |
SCM_SNARF_INIT(scm_c_define_subr (s_ ## FNAME, TYPE, FNAME); ) \ |
SCM_SNARF_INIT(scm_c_define_subr (s_ ## FNAME, TYPE, FNAME); ) \ |
118 |
SCM_SNARF_DOCS(1, PRIMNAME, ARGLIST, 2, 0, 0, DOCSTRING) |
SCM_SNARF_DOCS(1, FNAME, PRIMNAME, ARGLIST, 2, 0, 0, DOCSTRING) |
119 |
|
|
120 |
#define SCM_PROC(RANAME, STR, REQ, OPT, VAR, CFN) \ |
#define SCM_PROC(RANAME, STR, REQ, OPT, VAR, CFN) \ |
121 |
SCM_SNARF_HERE(static const char RANAME[]=STR) \ |
SCM_SNARF_HERE(static const char RANAME[]=STR) \ |
126 |
SCM_SNARF_HERE(static const char RANAME[]=STR) \ |
SCM_SNARF_HERE(static const char RANAME[]=STR) \ |
127 |
SCM_SNARF_INIT(scm_c_define_gsubr (RANAME, REQ, OPT, VAR, \ |
SCM_SNARF_INIT(scm_c_define_gsubr (RANAME, REQ, OPT, VAR, \ |
128 |
(SCM_FUNC_CAST_ARBITRARY_ARGS) CFN);) \ |
(SCM_FUNC_CAST_ARBITRARY_ARGS) CFN);) \ |
129 |
SCM_SNARF_DOCS(register, STR, (), REQ, OPT, VAR, \ |
SCM_SNARF_DOCS(register, CFN, STR, (), REQ, OPT, VAR, \ |
130 |
"implemented by the C function \"" #CFN "\"") |
"implemented by the C function \"" #CFN "\"") |
131 |
|
|
132 |
#define SCM_GPROC(RANAME, STR, REQ, OPT, VAR, CFN, GF) \ |
#define SCM_GPROC(RANAME, STR, REQ, OPT, VAR, CFN, GF) \ |