* guile-snarf-docs.in, guile-snarf-docs-texi.in,
filter-doc-snarfage.c: new files. * Makefile.am: add stuff to [build,] use and distribute guile-snarf-docs, guile-snarf-docs-texi, guile_filter_doc_snarfage. * guile-snarf.in: grok the new snarf output. * snarf.h: make the output both texttools- and `read'-friendly. * guile-doc-snarf.in (bindir): reimplement in terms of guile-snarf and guile-snarf-docs. (should also deprecate, I guess. maybe not).
This commit is contained in:
parent
998c3141ac
commit
c99f960518
8 changed files with 396 additions and 54 deletions
|
|
@ -76,14 +76,28 @@
|
|||
* line, if any.
|
||||
*/
|
||||
|
||||
#ifndef SCM_MAGIC_SNARFER
|
||||
#ifdef SCM_MAGIC_SNARF_INITS
|
||||
# define SCM_SNARF_HERE(X)
|
||||
# define SCM_SNARF_INIT(X) ^^ X
|
||||
# define SCM_SNARF_DOCS(TYPE, FNAME, ARGLIST, REQ, OPT, VAR, DOCSTRING)
|
||||
#else
|
||||
# ifdef SCM_MAGIC_SNARF_DOCS
|
||||
# define SCM_SNARF_HERE(X)
|
||||
# define SCM_SNARF_INIT(X)
|
||||
# define SCM_SNARF_DOCS(TYPE, FNAME, ARGLIST, REQ, OPT, VAR, DOCSTRING) \
|
||||
^^{ \
|
||||
^^ fname . FNAME \
|
||||
^^ type . TYPE \
|
||||
^^ location __FILE__ . __LINE__ \
|
||||
^^ arglist . ARGLIST \
|
||||
^^ argsig REQ OPT VAR \
|
||||
^^(DOCSTRING) \
|
||||
^^}
|
||||
# else
|
||||
# define SCM_SNARF_HERE(X) X
|
||||
# define SCM_SNARF_INIT(X)
|
||||
# define SCM_SNARF_DOCS(X)
|
||||
#else
|
||||
# define SCM_SNARF_HERE(X)
|
||||
# define SCM_SNARF_INIT(X) SCM_SNARF_INIT_START X
|
||||
# define SCM_SNARF_DOCS(X) X
|
||||
# define SCM_SNARF_DOCS(TYPE, FNAME, ARGLIST, REQ, OPT, VAR, DOCSTRING)
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#define SCM_DEFINE(FNAME, PRIMNAME, REQ, OPT, VAR, ARGLIST, DOCSTRING) \
|
||||
|
|
@ -95,10 +109,7 @@ SCM_SNARF_INIT(\
|
|||
scm_c_define_gsubr (s_ ## FNAME, REQ, OPT, VAR, \
|
||||
(SCM_FUNC_CAST_ARBITRARY_ARGS) FNAME); \
|
||||
)\
|
||||
SCM_SNARF_DOCS(\
|
||||
SCM_SNARF_DOC_STARTP PRIMNAME #ARGLIST | REQ | OPT | VAR | __FILE__:__LINE__ | \
|
||||
SCM_SNARF_DOCSTRING_START DOCSTRING SCM_SNARF_DOCSTRING_END \
|
||||
)
|
||||
SCM_SNARF_DOCS(primitive, PRIMNAME, ARGLIST, REQ, OPT, VAR, DOCSTRING)
|
||||
|
||||
#define SCM_DEFINE1(FNAME, PRIMNAME, TYPE, ARGLIST, DOCSTRING) \
|
||||
SCM_SNARF_HERE(\
|
||||
|
|
@ -106,10 +117,7 @@ static const char s_ ## FNAME [] = PRIMNAME; \
|
|||
SCM FNAME ARGLIST\
|
||||
)\
|
||||
SCM_SNARF_INIT(scm_c_define_subr (s_ ## FNAME, TYPE, FNAME); ) \
|
||||
SCM_SNARF_DOCS(\
|
||||
SCM_SNARF_DOC_START1 PRIMNAME #ARGLIST | 2 | 0 | 0 | __FILE__:__LINE__ | \
|
||||
SCM_SNARF_DOCSTRING_START DOCSTRING SCM_SNARF_DOCSTRING_END \
|
||||
)
|
||||
SCM_SNARF_DOCS(1, PRIMNAME, ARGLIST, 2, 0, 0, DOCSTRING)
|
||||
|
||||
#define SCM_PROC(RANAME, STR, REQ, OPT, VAR, CFN) \
|
||||
SCM_SNARF_HERE(static const char RANAME[]=STR) \
|
||||
|
|
@ -120,10 +128,8 @@ SCM_SNARF_INIT(scm_c_define_gsubr (RANAME, REQ, OPT, VAR, \
|
|||
SCM_SNARF_HERE(static const char RANAME[]=STR) \
|
||||
SCM_SNARF_INIT(scm_c_define_gsubr (RANAME, REQ, OPT, VAR, \
|
||||
(SCM_FUNC_CAST_ARBITRARY_ARGS) CFN);) \
|
||||
SCM_SNARF_DOCS(\
|
||||
SCM_SNARF_DOC_STARTR STR | REQ | OPT | VAR | __FILE__:__LINE__ | \
|
||||
SCM_SNARF_DOCSTRING_START CFN SCM_SNARF_DOCSTRING_END \
|
||||
)
|
||||
SCM_SNARF_DOCS(register, STR, (), REQ, OPT, VAR, \
|
||||
"implemented by the C function \"" #CFN "\"")
|
||||
|
||||
#define SCM_GPROC(RANAME, STR, REQ, OPT, VAR, CFN, GF) \
|
||||
SCM_SNARF_HERE(\
|
||||
|
|
@ -211,10 +217,10 @@ SCM_SNARF_INIT(c_name = scm_permanent_object (scm_sysintern (scheme_name, init_v
|
|||
|
||||
#endif /* (SCM_DEBUG_DEPRECATED == 0) */
|
||||
|
||||
#ifdef SCM_MAGIC_SNARFER
|
||||
#ifdef SCM_MAGIC_SNARF_DOCS
|
||||
#undef SCM_ASSERT
|
||||
#define SCM_ASSERT(_cond, _arg, _pos, _subr) *&*&*&*SCM_ARG_BETTER_BE_IN_POSITION(_arg,_pos,__LINE__)
|
||||
#endif /* SCM_MAGIC_SNARFER */
|
||||
#define SCM_ASSERT(_cond, _arg, _pos, _subr) ^^[ argpos _arg _pos __LINE__ ]
|
||||
#endif /* SCM_MAGIC_SNARF_DOCS */
|
||||
|
||||
#endif /* LIBGUILE_SNARF_H */
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue