emacs-module-0.1: src/Data/Emacs/Module/Env.hs
----------------------------------------------------------------------------
-- |
-- Module : Data.Emacs.Module.Env
-- Copyright : (c) Sergey Vinokurov 2018
-- License : BSD3-style (see LICENSE)
-- Maintainer : serg.foo@gmail.com
----------------------------------------------------------------------------
{-# LANGUAGE ForeignFunctionInterface #-}
module Data.Emacs.Module.Env
( Env
, -- * enum emacs_funcall_exit
FuncallExit(..)
, funcallExitToNum
, funcallExitFromNum
, -- * Wrappers around struct emacs_env fields
EnumFuncallExit(..)
, UserPtrFinaliserType
, UserPtrFinaliser
, isValidEnv
, makeGlobalRef
, freeGlobalRef
, nonLocalExitCheck
, nonLocalExitGet
, nonLocalExitSignal
, nonLocalExitThrow
, nonLocalExitClear
, variadicFunctionArgs
, makeFunction
, funcall
, funcallPrimitive
, intern
, typeOf
, isNotNil
, eq
, extractInteger
, makeInteger
, extractFloat
, makeFloat
, copyStringContents
, makeString
, makeUserPtr
, getUserPtr
, setUserPtr
, getUserFinaliser
, setUserFinaliser
, vecGet
, vecSet
, vecSize
, -- * Expose functions to Emacs
exportToEmacs
, RawFunctionType
, RawFunction
-- * Expose Haskell data to Emacs
, freeStablePtrFinaliser
) where
import Data.Emacs.Module.Env.Functions
import Data.Emacs.Module.Raw.Env.Internal
import Data.Emacs.Module.Raw.Env
-- | Pass to 'makeUserPtr' so that Emacs will free the Haskell's stable
-- pointer when the corresponding elisp value goes out of scope.
foreign import ccall "& hs_free_stable_ptr" freeStablePtrFinaliser :: UserPtrFinaliser a