cinvoke-0.1: Foreign/CInvoke/Internal.hsc
{-# LANGUAGE ForeignFunctionInterface, EmptyDataDecls #-}
{- | The internals of the C library cinvoke.
Mail the maintainer if you think you need this module. -}
module Foreign.CInvoke.Internal where
#include <cinvoke.h>
#include <cinvoke-arch.h>
import Data.Int
import Data.Word
import Foreign.C.Types
import Foreign.C.String
import Foreign.Ptr
import Foreign.Storable
data CValue
data CContext
data CLibrary
data CSymbol
type C_int32 = (#type cinv_int32_t)
type C_status = (#type cinv_status_t)
type C_callconv = (#type cinv_callconv_t)
default_callconv :: C_callconv
default_callconv = #const CINV_CC_DEFAULT
success_status :: C_status
success_status = #const CINV_SUCCESS
error_status :: C_status
error_status = #const CINV_ERROR
foreign import ccall safe cinv_context_create :: IO (Ptr CContext)
foreign import ccall safe cinv_context_geterrormsg :: Ptr CContext -> IO CString
foreign import ccall safe cinv_context_geterrorcode :: Ptr CContext -> IO C_int32
foreign import ccall safe cinv_context_delete :: Ptr CContext -> IO C_status
foreign import ccall safe cinv_library_create :: Ptr CContext -> CString -> IO (Ptr CLibrary)
foreign import ccall safe cinv_library_load_entrypoint :: Ptr CContext -> Ptr CLibrary -> CString -> IO (Ptr ())
foreign import ccall safe cinv_library_delete :: Ptr CContext -> Ptr CLibrary -> IO C_status
foreign import ccall safe cinv_function_create :: Ptr CContext -> C_callconv -> CString -> CString -> IO (Ptr CSymbol)
foreign import ccall safe cinv_function_invoke :: Ptr CContext -> Ptr CSymbol -> FunPtr a -> Ptr CValue -> Ptr (Ptr CValue) -> IO C_status
foreign import ccall safe cinv_function_delete :: Ptr CContext -> Ptr CSymbol -> IO C_status