DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH
 

(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