diff options
author | Philipp Stephani <phst@google.com> | 2019-04-24 23:12:35 +0200 |
---|---|---|
committer | Philipp Stephani <phst@google.com> | 2019-04-24 23:12:35 +0200 |
commit | d2e1bac47816fa1f48482faeebf7fa562a5b0e40 (patch) | |
tree | 85eda43e37e3df0b74a2d82cf313c28bbfefa27c /src/emacs-module.c | |
parent | 4c90369d77d3db1cbd37df7857e4706176fd7ba2 (diff) | |
download | emacs-d2e1bac47816fa1f48482faeebf7fa562a5b0e40.tar.gz |
Move definition of Lisp_Module_Function to emacs-module.c.
* src/lisp.h: Remove include of emacs-module.h. Remove definition
of Lisp_Module_Function structure.
* src/emacs-module.c (module_function_documentation)
(module_function_address): New accessor functions for module function
fields.
(emacs_subr, struct Lisp_Module_Function): Move from lisp.h.
* src/print.c (print_vectorlike):
* src/doc.c (Fdocumentation): Use the new accessor functions.
Diffstat (limited to 'src/emacs-module.c')
-rw-r--r-- | src/emacs-module.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/emacs-module.c b/src/emacs-module.c index 41ce9ef03e4..b6a12386267 100644 --- a/src/emacs-module.c +++ b/src/emacs-module.c @@ -471,6 +471,30 @@ module_non_local_exit_throw (emacs_env *env, emacs_value tag, emacs_value value) value_to_lisp (value)); } +/* Function prototype for the module Lisp functions. */ +typedef emacs_value (*emacs_subr) (emacs_env *, ptrdiff_t, + emacs_value [], void *); + +/* Module function. */ + +/* A function environment is an auxiliary structure returned by + `module_make_function' to store information about a module + function. It is stored in a pseudovector. Its members correspond + to the arguments given to `module_make_function'. */ + +struct Lisp_Module_Function +{ + union vectorlike_header header; + + /* Fields traced by GC; these must come first. */ + Lisp_Object documentation; + + /* Fields ignored by GC. */ + ptrdiff_t min_arity, max_arity; + emacs_subr subr; + void *data; +} GCALIGNED_STRUCT; + static struct Lisp_Module_Function * allocate_module_function (void) { @@ -901,6 +925,18 @@ module_function_arity (const struct Lisp_Module_Function *const function) maxargs == MANY ? Qmany : make_fixnum (maxargs)); } +Lisp_Object +module_function_documentation (const struct Lisp_Module_Function *function) +{ + return function->documentation; +} + +void * +module_function_address (const struct Lisp_Module_Function *function) +{ + return function->subr; +} + /* Helper functions. */ |