summaryrefslogtreecommitdiff
path: root/src/emacs-module.h
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2016-01-10 21:39:55 -0800
committerPaul Eggert <eggert@cs.ucla.edu>2016-01-10 21:46:37 -0800
commit552694a2653b4f9cde515139d01793a5a0e964b7 (patch)
tree376d54729b446816a23953313d63a0d54ab1d3b7 /src/emacs-module.h
parent6ad0d39680cc82e660e3016b11c9f29d2666c79f (diff)
downloademacs-552694a2653b4f9cde515139d01793a5a0e964b7.tar.gz
Revert attempt to use 'noexcept' in typedef
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.
Diffstat (limited to 'src/emacs-module.h')
-rw-r--r--src/emacs-module.h19
1 files changed, 4 insertions, 15 deletions
diff --git a/src/emacs-module.h b/src/emacs-module.h
index 3efea349d71..575966ea7b5 100644
--- a/src/emacs-module.h
+++ b/src/emacs-module.h
@@ -26,19 +26,8 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#if defined __cplusplus && __cplusplus >= 201103L
# define EMACS_NOEXCEPT noexcept
-
-/* Function prototype for module user-pointer finalizers.
-
- NOTE: C++11 15.4: An exception-specification shall not appear in a
- typedef declaration or alias-declaration.
-
-*/
-void emacs_dummy_finalizer_function (void *) noexcept;
-typedef decltype(emacs_dummy_finalizer_function) *emacs_finalizer_function;
-
#else
# define EMACS_NOEXCEPT
-typedef void (*emacs_finalizer_function) (void *);
#endif
#ifdef __cplusplus
@@ -184,17 +173,17 @@ struct emacs_env_25
/* Embedded pointer type. */
emacs_value (*make_user_ptr) (emacs_env *env,
- emacs_finalizer_function fin,
+ void (*fin) (void *) EMACS_NOEXCEPT,
void *ptr);
void *(*get_user_ptr) (emacs_env *env, emacs_value uptr);
void (*set_user_ptr) (emacs_env *env, emacs_value uptr, void *ptr);
- emacs_finalizer_function (*get_user_finalizer) (emacs_env *env,
- emacs_value uptr);
+ void (*(*get_user_finalizer) (emacs_env *env, emacs_value uptr))
+ (void *) EMACS_NOEXCEPT;
void (*set_user_finalizer) (emacs_env *env,
emacs_value uptr,
- emacs_finalizer_function fin);
+ void (*fin) (void *) EMACS_NOEXCEPT);
/* Vector functions. */
emacs_value (*vec_get) (emacs_env *env, emacs_value vec, ptrdiff_t i);