3 |
#ifndef SCM_SNARF_H |
#ifndef SCM_SNARF_H |
4 |
#define SCM_SNARF_H |
#define SCM_SNARF_H |
5 |
|
|
6 |
/* Copyright (C) 1995,1996,1997,1998,1999,2000,2001, 2002 Free Software Foundation, Inc. |
/* Copyright (C) 1995,1996,1997,1998,1999,2000,2001, 2002, 2003 Free Software Foundation, Inc. |
7 |
* |
* |
8 |
* This program is free software; you can redistribute it and/or modify |
* This program is free software; you can redistribute it and/or modify |
9 |
* it under the terms of the GNU General Public License as published by |
* it under the terms of the GNU General Public License as published by |
108 |
)\ |
)\ |
109 |
SCM_SNARF_DOCS(primitive, FNAME, PRIMNAME, ARGLIST, REQ, OPT, VAR, DOCSTRING) |
SCM_SNARF_DOCS(primitive, FNAME, PRIMNAME, ARGLIST, REQ, OPT, VAR, DOCSTRING) |
110 |
|
|
111 |
|
#define SCM_PRIMITIVE_GENERIC(FNAME, PRIMNAME, REQ, OPT, VAR, ARGLIST, DOCSTRING) \ |
112 |
|
SCM_SNARF_HERE(\ |
113 |
|
static const char s_ ## FNAME [] = PRIMNAME; \ |
114 |
|
static SCM g_ ## FNAME; \ |
115 |
|
SCM FNAME ARGLIST\ |
116 |
|
)\ |
117 |
|
SCM_SNARF_INIT(\ |
118 |
|
g_ ## FNAME = SCM_PACK (0); \ |
119 |
|
scm_c_define_gsubr_with_generic (s_ ## FNAME, REQ, OPT, VAR, \ |
120 |
|
(SCM_FUNC_CAST_ARBITRARY_ARGS) FNAME, \ |
121 |
|
&g_ ## FNAME); \ |
122 |
|
)\ |
123 |
|
SCM_SNARF_DOCS(primitive, FNAME, PRIMNAME, ARGLIST, REQ, OPT, VAR, DOCSTRING) |
124 |
|
|
125 |
#define SCM_DEFINE_PUBLIC(FNAME, PRIMNAME, REQ, OPT, VAR, ARGLIST, DOCSTRING) \ |
#define SCM_DEFINE_PUBLIC(FNAME, PRIMNAME, REQ, OPT, VAR, ARGLIST, DOCSTRING) \ |
126 |
SCM_SNARF_HERE(\ |
SCM_SNARF_HERE(\ |
127 |
static const char s_ ## FNAME [] = PRIMNAME; \ |
static const char s_ ## FNAME [] = PRIMNAME; \ |
142 |
SCM_SNARF_INIT(scm_c_define_subr (s_ ## FNAME, TYPE, FNAME); ) \ |
SCM_SNARF_INIT(scm_c_define_subr (s_ ## FNAME, TYPE, FNAME); ) \ |
143 |
SCM_SNARF_DOCS(1, FNAME, PRIMNAME, ARGLIST, 2, 0, 0, DOCSTRING) |
SCM_SNARF_DOCS(1, FNAME, PRIMNAME, ARGLIST, 2, 0, 0, DOCSTRING) |
144 |
|
|
145 |
|
#define SCM_PRIMITIVE_GENERIC_1(FNAME, PRIMNAME, TYPE, ARGLIST, DOCSTRING) \ |
146 |
|
SCM_SNARF_HERE(\ |
147 |
|
static const char s_ ## FNAME [] = PRIMNAME; \ |
148 |
|
static SCM g_ ## FNAME; \ |
149 |
|
SCM FNAME ARGLIST\ |
150 |
|
)\ |
151 |
|
SCM_SNARF_INIT(\ |
152 |
|
g_ ## FNAME = SCM_PACK (0); \ |
153 |
|
scm_c_define_subr_with_generic (s_ ## FNAME, TYPE, FNAME, &g_ ## FNAME); \ |
154 |
|
)\ |
155 |
|
SCM_SNARF_DOCS(1, FNAME, PRIMNAME, ARGLIST, 2, 0, 0, DOCSTRING) |
156 |
|
|
157 |
#define SCM_PROC(RANAME, STR, REQ, OPT, VAR, CFN) \ |
#define SCM_PROC(RANAME, STR, REQ, OPT, VAR, CFN) \ |
158 |
SCM_SNARF_HERE(static const char RANAME[]=STR) \ |
SCM_SNARF_HERE(static const char RANAME[]=STR) \ |
159 |
SCM_SNARF_INIT(scm_c_define_gsubr (RANAME, REQ, OPT, VAR, \ |
SCM_SNARF_INIT(scm_c_define_gsubr (RANAME, REQ, OPT, VAR, \ |