{-# LANGUAGE ForeignFunctionInterface #-}
module Data.Emacs.Module.Env
  ( Env
  , 
    FuncallExit(..)
  , funcallExitToNum
  , funcallExitFromNum
  , 
    EnumFuncallExit(..)
  , 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
  , 
    exportToEmacs
  , RawFunctionType
  , RawFunction
    
  , freeStablePtrFinaliser
  ) where
import Foreign.ForeignPtr (FinalizerPtr)
import Data.Emacs.Module.Env.Functions
import Data.Emacs.Module.Raw.Env.Internal
import Data.Emacs.Module.Raw.Env
foreign import ccall "& hs_free_stable_ptr" freeStablePtrFinaliser :: FinalizerPtr a