mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-03-04 21:12:23 -08:00
* src/module-env-28.h: Add new module environment functions to module environment for Emacs 28. * src/emacs-module.h.in: Document that 'emacs_finalizer' also works for function finalizers. * src/emacs-module.c (CHECK_MODULE_FUNCTION): New function. (struct Lisp_Module_Function): Add finalizer data member. (module_make_function): Initialize finalizer. (module_get_function_finalizer) (module_set_function_finalizer): New module environment functions. (module_finalize_function): New function. (initialize_environment): Initialize new environment functions. * src/alloc.c (cleanup_vector): Call potential module function finalizer during garbage collection. * test/data/emacs-module/mod-test.c (signal_error): New helper function. (memory_full): Use it. (finalizer): New example function finalizer. (Fmod_test_make_function_with_finalizer) (Fmod_test_function_finalizer_calls): New test module functions. (emacs_module_init): Define them. * test/src/emacs-module-tests.el (module/function-finalizer): New unit test. * doc/lispref/internals.texi (Module Functions): Document new functionality. (Module Misc): Move description of 'emacs_finalizer' type to 'Module Functions' node, and add a reference to it. * etc/NEWS: Mention new functionality.
11 lines
524 B
C
11 lines
524 B
C
/* Add module environment functions newly added in Emacs 28 here.
|
|
Before Emacs 28 is released, remove this comment and start
|
|
module-env-29.h on the master branch. */
|
|
|
|
void (*(*EMACS_ATTRIBUTE_NONNULL (1)
|
|
get_function_finalizer) (emacs_env *env,
|
|
emacs_value arg)) (void *) EMACS_NOEXCEPT;
|
|
|
|
void (*set_function_finalizer) (emacs_env *env, emacs_value arg,
|
|
void (*fin) (void *) EMACS_NOEXCEPT)
|
|
EMACS_ATTRIBUTE_NONNULL (1);
|