{-# 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 #include 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