packages feed

llvm-general-3.3.0.0: src/LLVM/General/Internal/FFI/ExecutionEngine.hs

{-# LANGUAGE
  ForeignFunctionInterface,
  EmptyDataDecls
  #-}

module LLVM.General.Internal.FFI.ExecutionEngine where

import Foreign.Ptr
import Foreign.C

import LLVM.General.Internal.FFI.PtrHierarchy
import LLVM.General.Internal.FFI.Module

data ExecutionEngine

foreign import ccall unsafe "LLVMCreateExecutionEngineForModule" createExecutionEngineForModule ::
    Ptr (Ptr ExecutionEngine) -> Ptr Module -> Ptr CString -> IO CUInt

foreign import ccall unsafe "LLVMDisposeExecutionEngine" disposeExecutionEngine ::
    Ptr ExecutionEngine -> IO ()

foreign import ccall unsafe "LLVMAddModule" addModule ::
    Ptr ExecutionEngine -> Ptr Module -> IO ()

foreign import ccall unsafe "LLVMRemoveModule" removeModule ::
    Ptr ExecutionEngine -> Ptr Module -> Ptr (Ptr Module) -> Ptr CString -> IO CUInt

foreign import ccall unsafe "LLVMFindFunction" findFunction ::
    Ptr ExecutionEngine -> CString -> Ptr (Ptr Function) -> IO CUInt

foreign import ccall unsafe "LLVMGetPointerToGlobal" getPointerToGlobal ::
    Ptr ExecutionEngine -> Ptr GlobalValue -> IO (Ptr ())