static bool module_is_not_nil (emacs_env *env, emacs_value value) { check_main_thread (); if (module_non_local_exit_check (env) != emacs_funcall_exit_return) return false; return ! NILP (value_to_lisp (value)); }
static bool module_eq (emacs_env *env, emacs_value a, emacs_value b) { check_main_thread (); if (module_non_local_exit_check (env) != emacs_funcall_exit_return) return false; return EQ (value_to_lisp (a), value_to_lisp (b)); }
/* Like for `signal', DATA must be a list. */ static void module_non_local_exit_signal (emacs_env *env, emacs_value sym, emacs_value data) { check_main_thread (); if (module_non_local_exit_check (env) == emacs_funcall_exit_return) module_non_local_exit_signal_1 (env, value_to_lisp (sym), value_to_lisp (data)); }
static void module_non_local_exit_throw (emacs_env *env, emacs_value tag, emacs_value value) { check_main_thread (); if (module_non_local_exit_check (env) == emacs_funcall_exit_return) module_non_local_exit_throw_1 (env, value_to_lisp (tag), value_to_lisp (value)); }
static enum emacs_funcall_exit module_non_local_exit_get (emacs_env *env, emacs_value *sym, emacs_value *data) { check_main_thread (); struct emacs_env_private *p = env->private_members; if (p->pending_non_local_exit != emacs_funcall_exit_return) { /* FIXME: lisp_to_value can exit non-locally. */ *sym = lisp_to_value (p->non_local_exit_symbol); *data = lisp_to_value (p->non_local_exit_data); } return p->pending_non_local_exit; }
static void module_set_user_ptr (emacs_env *env, emacs_value uptr, void *ptr) { /* FIXME: This function should return bool because it can fail. */ MODULE_FUNCTION_BEGIN (); check_main_thread (); if (module_non_local_exit_check (env) != emacs_funcall_exit_return) return; Lisp_Object lisp = value_to_lisp (uptr); if (! USER_PTRP (lisp)) module_wrong_type (env, Quser_ptr, lisp); XUSER_PTR (lisp)->p = ptr; }
static void module_non_local_exit_clear (emacs_env *env) { check_main_thread (); env->private_members->pending_non_local_exit = emacs_funcall_exit_return; }
static enum emacs_funcall_exit module_non_local_exit_check (emacs_env *env) { check_main_thread (); return env->private_members->pending_non_local_exit; }
static emacs_env * module_get_environment (struct emacs_runtime *ert) { check_main_thread (); return &ert->private_members->pub; }