aboutsummaryrefslogtreecommitdiffstats
path: root/src/emacs-module.h (follow)
Commit message (Collapse)AuthorAgeFilesLines
* emacs-module.h: Create emacs_env_26Philipp Stephani2017-06-171-242/+0
| | | | | | | | | | | | This was part of the original design of the module API (https://lists.gnu.org/archive/html/emacs-devel/2015-02/msg00960.html), but I didn't take it into account when adding the should_quit function. Instead of duplicating the environment fields or using the C preprocessor, use configure to build emacs-module.h. * configure.ac: Expand emacs-module.h template.
* Don’t worry about __STDC_VERSION__ in emacs-modulePaul Eggert2017-06-151-5/+0
| | | | | | | * src/emacs-module.h: Remove __STDC_VERSION__ check. In the past we’ve found that some compilers do not define this symbol even when they work well enough. If necessary features like stdbool.h are missing the compiler will complain eventually anyway.
* Fix version checks for emacs-module.hPhilipp Stephani2017-06-131-4/+7
| | | | | We don't need C11 or C++11 because stdbool.h is in C99, and for C++ we don't need it at all.
* Small portability fix for emacs-module.h (bug#27346)Glenn Morris2017-06-121-2/+5
| | | | | * src/emacs-module.h (EMACS_ATTRIBUTE_NONNULL) [!__has_attribute]: Avoid 'error: missing binary operator before token "("'.
* emacs-module: Use __attribute__((nonnull))Philipp Stephani2017-06-121-31/+67
| | | | | Annotate all parameters with __attribute__((nonnull)) that may not be NULL.
* Explicitly require C11 or C++11 in emacs-module.hPhilipp Stephani2017-06-121-1/+6
| | | | | | We already implicitly require them by including stdbool.h. Just make the error message a bit clearer, and remove an unnecessary version comparison.
* Support quitting in modulesPhilipp Stephani2017-06-041-0/+3
| | | | | | | | | | | The idea is that modules should call env->should_quit from time to time and return as quickly as possible if it returns true. * src/emacs-module.c (module_should_quit): New module function. (initialize_environment): Use it. (funcall_module): Process potential pending quit. * src/eval.c (maybe_quit): Add reference to module_should_quit.
* Merge from origin/emacs-25Paul Eggert2017-01-011-1/+1
|\ | | | | | | | | 2e2a806 Fix copyright years by hand 5badc81 Update copyright year to 2017
| * Update copyright year to 2017Paul Eggert2016-12-311-1/+1
| | | | | | | | Run admin/update-copyright.
* | Merge from origin/emacs-25John Wiegley2016-03-111-2/+2
|\ \ | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | facb5e2 Update Emacs manual section related to character folding 4efea8e ; * etc/DEBUG: Fix a typo. (Bug#22984) f8df21b Update admin/notes/unicode 950be68 Add symref-filepattern entries for c?perl-mode 8b8a6ad Don't use XRANDR 1.3 extensions if the server doesn't support them. 985dacf ; NEWS update for the last change in etags 741a6f8 Sync with gnulib 7352c6c Rework C source files to avoid ^( a589e9a By default, etags produces unqualified Perl tag names 72c7438 Indent methods with keyword names correctly 28532a9 Propertize character literals and special global variables differently a7d6f39 ; Fix last change in NEWS 83b2a20 Change how /etc/NEWS presents character folding b417c5a Revert "Revert "Backport: * lisp/isearch.el: Turn char-folding off by default"" 711ca36 Properly handle lambda as read function (bug 22961) 1b9d616 Propertize operator symbol names with symbol syntax class 9b16bc2 Stop recognizing :#{} as symbol in ruby-mode 366ec77 Allow using the left shift operator without spaces on both sides 02bf7cc Properly handle unquoting in wdired (bug 22938) 16cf469 ; Spelling fix and tighten up comment f50bc04 Allow splat operator before percent literal 991c801 Don't apply the return value of goto-char as syntax class 6e63b3e Guard against nested percent literals 066f3bc Recognize iuwu-mod after an escaped newline 6f7a57c Fix symbolic mode string conversion for s and t 50b9826 Update 'ucs-names' database 993b2fb Improve doc string of 'shell-command' b71c717 Make the code in movemail_strftime more general cc057e4 Speed up redisplay of binary files with long series of nulls e51b27e Remove the highlighting support for quoting 'like this' inside Lisp docstrings b1abce1 Restore leading space in movemail pop output 98b8d44 Fix bidi-paragraph-direction in Rmail view buffer dc9d837 Don't misindent computed property generator methods 7923112 Fix mbox files produced by movemail on MS-Windows c45a1ca doc string file descriptor exhaustion fix 265141b Fix Bug#22814
| * Rework C source files to avoid ^(Paul Eggert2016-03-101-2/+2
| | | | | | | | | | | | | | | | Work around Bug#22884 by rewording comments and strings to avoid ‘(’ at the start of a line unless it starts a function. This change is a short-term hack; in the longer run we plan to fix cc-mode’s performance for C files that have ‘(’ at the start of a line in a comment or string.
* | emacs-module.h slight simplificationPaul Eggert2016-03-021-8/+1
|/ | | | | | | | | * src/emacs-module.c (emacs_init_function, emacs_subr): Move here ... * src/emacs-module.h: ... from here, as they don’t need to be public. (enum emacs_arity): Remove useless enum tag. The enum value is used in ptrdiff_t contexts. * src/emacs-module.c (CHECK_USER_PTR): Fix typo in previous change.
* Revert attempt to use 'noexcept' in typedefPaul Eggert2016-01-101-15/+4
| | | | | | | | | | | | | | This use of 'noexcept' runs afoul of the C++11 standard. Problem reported by Philipp Stephani in: http://lists.gnu.org/archive/html/emacs-devel/2016-01/msg00706.html * src/emacs-module.c (emacs_finalizer_function): Move this typedef here ... * src/emacs-module.h: ... from here, and use only the C version of the typedef. The typedef is now private since it is never used in the .h file now and anyway it seemed to be causing more confusion than it cured. (make_user_ptr, get_user_finalizer, set_user_finalizer): Open-code the type instead.
* Update copyright year to 2016Paul Eggert2016-01-011-1/+1
| | | | Run admin/update-copyright.
* * src/emacs-module.h: Fix finalizer typedef for C++11Aurélien Aptel2015-11-301-3/+11
| | | | | | C++11 standard doesn't allow exception-specification in typedef. The workaround is to declare a dummy function prototype and use decltype on it.
* Rely on conservative stack scanning to find "emacs_value"sStefan Monnier2015-11-301-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * src/emacs-module.c (struct emacs_value_tag) (struct emacs_value_frame, struct emacs_value_storage): Remove. (value_frame_size): Remove constant. (struct emacs_env_private): Use Lisp_Object for non_local_exit info. (lisp_to_value): Remove first arg. (module_nil): New constant. Use it instead of NULL when returning an emacs_value. (module_make_function): Adjust to new calling convention of Qinternal_module_call. (DEFUN): Receive args in an array rather than a list. Use SAFE_ALLOCA rather than xnmalloc. Skip the lisp_to_value loop when we don't have WIDE_EMACS_INT. Adjust to new type of non_local_exit info. (module_non_local_exit_signal_1, module_non_local_exit_throw_1): Adjust to new type of non_local_exit info. (ltv_mark) [WIDE_EMACS_INT]: New constant. (value_to_lisp, lisp_to_value): Rewrite. (initialize_frame, initialize_storage, finalize_storage): Remove functions. (allocate_emacs_value): Remove function. (mark_modules): Gut it. (initialize_environment): Don't initialize storage any more. Keep the actual env object on Vmodule_environments. (finalize_environment): Don't finalize storage any more. (syms_of_module): Initialize ltv_mark and module_nil. * src/emacs-module.h (emacs_value): Make it more clear that this type is really opaque, including the fact that NULL may not be valid. * modules/mod-test/mod-test.c (Fmod_test_signal, Fmod_test_throw): Don't assume that NULL is a valid emacs_value.
* Simplify use of emacs_finalizer_function typePaul Eggert2015-11-231-5/+5
| | | | | | * src/emacs-module.h (emacs_finalizer_function): Now EMACS_NOEXCEPT. All users simplified to omit EMACS_NOEXCEPT. (struct emacs_env_25): Use emacs_finalizer_function where applicable.
* Declare emacs_module_init in the module APIPaul Eggert2015-11-201-0/+3
| | | | | | | * src/emacs-module.h (emacs_module_init): New decl. Without it, GCC might complain about a module that defines emacs_module_init without using it. This also checks the API better.
* Module function arg counts are ptrdiff_t, not intPaul Eggert2015-11-201-7/+9
| | | | | | | | | | | | | | | | | | | | | | * src/emacs-module.c (struct module_fun_env) (module_make_function, module_funcall, Fmodule_call): * src/emacs-module.h (struct emacs_runtime, struct emacs_env_25): Use ptrdiff_t, not int, for arg counts. * src/emacs-module.c (module_make_function): Don’t bother checking arity against MOST_POSITIVE_FIXNUM, as that’s unnecessary here. Make the checking clearer by negating it. (module_make_function, Fmodule_call): No need to use xzalloc since the storage doesn’t need to be cleared. (module_funcall): Don’t use VLA, since C11 doesn’t guarantee support for it, and many implementations are buggy with large VLAs anyway. Use SAFE_ALLOCA_LISP instead. (module_vec_set): Don’t crash if i < 0. (module_vec_get): Don’t crash if i < MOST_NEGATIVE_FIXNUM. (module_vec_set, module_vec_get): Do fixnum checks only when i is out of array bounds, for efficiency in the usual case. (Fmodule_load): Simplify fixnum range check. (Fmodule_call): Simplify arity check. Use xnmalloc to detect integer overflow in array allocation size.
* * src/emacs-module.h: Include stddef.h, not stdlib.h.Paul Eggert2015-11-191-1/+1
|
* Prefer signed integer types in module codePaul Eggert2015-11-191-7/+7
| | | | | | | | | | | | | | | | | | Generally speaking, at the C level the Emacs source code prefers signed types like ‘ptrdiff_t’ to unsigned types like ‘size_t’, partly to avoid the usual signedness confusion when comparing values. Change the module API to follow this convention. Use ‘int’ for small values that can’t exceed INT_MAX. * modules/mod-test/mod-test.c (Fmod_test_globref_make) (Fmod_test_string_a_to_b, Fmod_test_vector_fill) (Fmod_test_vector_eq): * src/emacs-module.c (struct emacs_value_frame) (module_make_global_ref, module_free_global_ref) (module_copy_string_contents, module_make_string) (module_vec_set, module_vec_get, module_vec_size): * src/emacs-module.h (struct emacs_runtime, struct emacs_env_25): * src/lread.c (suffix_p): Prefer signed to unsigned integer types.
* Prefer intmax_t to int64_t in module codePaul Eggert2015-11-191-3/+2
| | | | | | | | | | | * modules/mod-test/mod-test.c (sum, Fmod_test_sum): * src/emacs-module.c (module_extract_integer) (module_make_integer): * src/emacs-module.h (struct emacs_env_25): Prefer intmax_t to int64_t. This doesn’t change the generated code on any of the machines Emacs currently ports to, but it’s at least in theory more future-proof as C99 doesn’t guarantee that int64_t exists.
* Rename module.c to emacs-module.c, etc.Paul Eggert2015-11-191-0/+202
* src/emacs-module.c: Rename from src/module.c. * src/emacs-module.h: Rename from src/module.h. All uses changed.