llvm-hs-5.0.0: src/LLVM/Internal/FFI/OrcJIT/CompileLayer.hs
{-# LANGUAGE ForeignFunctionInterface #-}
module LLVM.Internal.FFI.OrcJIT.CompileLayer where
import LLVM.Prelude
import LLVM.Internal.FFI.DataLayout
import LLVM.Internal.FFI.LLVMCTypes
import LLVM.Internal.FFI.Module
import LLVM.Internal.FFI.OrcJIT
import Foreign.C
import Foreign.Ptr
data CompileLayer
-- | Abstract type representing a module in a 'LLVM.OrcJIT.CompileLayer'.
newtype ModuleHandle = ModuleHandle Word
foreign import ccall safe "LLVM_Hs_CompileLayer_dispose" disposeCompileLayer ::
Ptr CompileLayer -> IO ()
foreign import ccall safe "LLVM_Hs_CompileLayer_addModule" addModule ::
Ptr CompileLayer ->
Ptr DataLayout ->
Ptr Module ->
Ptr LambdaResolver ->
Ptr (OwnerTransfered CString) ->
IO ModuleHandle
foreign import ccall safe "LLVM_Hs_CompileLayer_removeModule" removeModule ::
Ptr CompileLayer -> ModuleHandle -> IO ()
foreign import ccall safe "LLVM_Hs_CompileLayer_findSymbol" findSymbol ::
Ptr CompileLayer -> CString -> LLVMBool -> IO (Ptr JITSymbol)
foreign import ccall safe "LLVM_Hs_CompileLayer_findSymbolIn" findSymbolIn ::
Ptr CompileLayer -> ModuleHandle -> CString -> LLVMBool -> IO (Ptr JITSymbol)