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