(guile.info.gz) Macros guile-snarf recognizes
Info Catalog
(guile.info.gz) How guile-snarf works
(guile.info.gz) Init Snarfing with guile-snarf
(guile.info.gz) Writing your own snarfing macros
13.1.1.2 Macros guile-snarf recognizes
......................................
Here are the macros you can use in your source code from which
`guile-snarf' can construct initialization code:
/* procedures */
SCM_DEFINE (FNAME, PRIMNAME, REQ, OPT, VAR, ARGLIST, DOCSTRING)
SCM_PROC (RANAME, STR, REQ, OPT, VAR, CFN)
SCM_REGISTER_PROC (RANAME, STR, REQ, OPT, VAR, CFN)
SCM_GPROC (RANAME, STR, REQ, OPT, VAR, CFN, GF)
/* everything else */
SCM_SYMBOL (c_name, scheme_name)
SCM_GLOBAL_SYMBOL (c_name, scheme_name)
SCM_KEYWORD (c_name, scheme_name)
SCM_GLOBAL_KEYWORD (c_name, scheme_name)
SCM_VARIABLE (c_name, scheme_name)
SCM_GLOBAL_VARIABLE (c_name, scheme_name)
SCM_VARIABLE_INIT (c_name, scheme_name, init_val)
SCM_GLOBAL_VARIABLE_INIT (c_name, scheme_name, init_val)
REQ and OPT are numbers indicating required and optional argument
counts, respectively; VAR is a number that, if non-zero, means the
function will accept any remaining arguments as a list; DOCSTRING is a
string (use `\n\' at eol for multi-line); FNAME is a C-language
identifier, CFN and GF and C_NAME likewise; PRIMNAME is a string
denoting the name available to Scheme code, STR and SCHEME_NAME
likewise; RANAME is the name of the static string (must match that
declared by the associated definition of cpp macro FUNC_NAME); ARGLIST
is an argument list (in parentheses); and lastly, INIT_VAL is a
expression suitable for initializing a new variable.
For procedures, you can use `SCM_DEFINE' for most purposes. Use
`SCM_PROC' along with `SCM_REGISTER_PROC' when you don't want to be
bothered with docstrings. Use `SCM_GPROC' for generic functions (
GOOPS (goops)GOOPS.). All procedures are declared with return type
`SCM'.
For everything else, use the appropriate macro (`SCM_SYMBOL' for
symbols, and so on). Without "_GLOBAL_", the declarations are `static'.
All these macros should be used at top-level, outside function
bodies. Also, it's a good idea to define FUNC_NAME immediately after
using `SCM_DEFINE' (and similar), and then the function body, and then
`#undef FUNC_NAME'.
How guile-snarf works, and also libguile source, for
examples. Subrs, for details on argument passing and how to
write C functions.
Info Catalog
(guile.info.gz) How guile-snarf works
(guile.info.gz) Init Snarfing with guile-snarf
(guile.info.gz) Writing your own snarfing macros
automatically generated byinfo2html