Ejemplo n.º 1
0
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));
}
Ejemplo n.º 2
0
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));
}
Ejemplo n.º 3
0
/* 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));
}
Ejemplo n.º 4
0
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));
}
Ejemplo n.º 5
0
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;
}
Ejemplo n.º 6
0
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;
}
Ejemplo n.º 7
0
static void
module_non_local_exit_clear (emacs_env *env)
{
  check_main_thread ();
  env->private_members->pending_non_local_exit = emacs_funcall_exit_return;
}
Ejemplo n.º 8
0
static enum emacs_funcall_exit
module_non_local_exit_check (emacs_env *env)
{
  check_main_thread ();
  return env->private_members->pending_non_local_exit;
}
Ejemplo n.º 9
0
static emacs_env *
module_get_environment (struct emacs_runtime *ert)
{
  check_main_thread ();
  return &ert->private_members->pub;
}