aboutsummaryrefslogtreecommitdiffstats
path: root/src/emacs-module.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/emacs-module.h')
-rw-r--r--src/emacs-module.h21
1 files changed, 5 insertions, 16 deletions
diff --git a/src/emacs-module.h b/src/emacs-module.h
index a3aa5017a4e..575966ea7b5 100644
--- a/src/emacs-module.h
+++ b/src/emacs-module.h
@@ -1,6 +1,6 @@
1/* emacs-module.h - GNU Emacs module API. 1/* emacs-module.h - GNU Emacs module API.
2 2
3Copyright (C) 2015 Free Software Foundation, Inc. 3Copyright (C) 2015-2016 Free Software Foundation, Inc.
4 4
5This file is part of GNU Emacs. 5This file is part of GNU Emacs.
6 6
@@ -26,19 +26,8 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
26 26
27#if defined __cplusplus && __cplusplus >= 201103L 27#if defined __cplusplus && __cplusplus >= 201103L
28# define EMACS_NOEXCEPT noexcept 28# define EMACS_NOEXCEPT noexcept
29
30/* Function prototype for module user-pointer finalizers.
31
32 NOTE: C++11 15.4: An exception-specification shall not appear in a
33 typedef declaration or alias-declaration.
34
35*/
36void emacs_dummy_finalizer_function (void *) noexcept;
37typedef decltype(emacs_dummy_finalizer_function) *emacs_finalizer_function;
38
39#else 29#else
40# define EMACS_NOEXCEPT 30# define EMACS_NOEXCEPT
41typedef void (*emacs_finalizer_function) (void *);
42#endif 31#endif
43 32
44#ifdef __cplusplus 33#ifdef __cplusplus
@@ -184,17 +173,17 @@ struct emacs_env_25
184 173
185 /* Embedded pointer type. */ 174 /* Embedded pointer type. */
186 emacs_value (*make_user_ptr) (emacs_env *env, 175 emacs_value (*make_user_ptr) (emacs_env *env,
187 emacs_finalizer_function fin, 176 void (*fin) (void *) EMACS_NOEXCEPT,
188 void *ptr); 177 void *ptr);
189 178
190 void *(*get_user_ptr) (emacs_env *env, emacs_value uptr); 179 void *(*get_user_ptr) (emacs_env *env, emacs_value uptr);
191 void (*set_user_ptr) (emacs_env *env, emacs_value uptr, void *ptr); 180 void (*set_user_ptr) (emacs_env *env, emacs_value uptr, void *ptr);
192 181
193 emacs_finalizer_function (*get_user_finalizer) (emacs_env *env, 182 void (*(*get_user_finalizer) (emacs_env *env, emacs_value uptr))
194 emacs_value uptr); 183 (void *) EMACS_NOEXCEPT;
195 void (*set_user_finalizer) (emacs_env *env, 184 void (*set_user_finalizer) (emacs_env *env,
196 emacs_value uptr, 185 emacs_value uptr,
197 emacs_finalizer_function fin); 186 void (*fin) (void *) EMACS_NOEXCEPT);
198 187
199 /* Vector functions. */ 188 /* Vector functions. */
200 emacs_value (*vec_get) (emacs_env *env, emacs_value vec, ptrdiff_t i); 189 emacs_value (*vec_get) (emacs_env *env, emacs_value vec, ptrdiff_t i);