llvm-general-3.3.14.3: src/LLVM/General/Internal/FFI/RawOStream.hs
{-# LANGUAGE
ForeignFunctionInterface
#-}
module LLVM.General.Internal.FFI.RawOStream where
import LLVM.General.Prelude
import Foreign.Ptr
import Foreign.C
import Control.Exception (bracket)
import LLVM.General.Internal.FFI.ByteRangeCallback
import LLVM.General.Internal.FFI.LLVMCTypes
data RawOStream
type RawOStreamCallback = Ptr RawOStream -> IO ()
foreign import ccall "wrapper" wrapRawOStreamCallback ::
RawOStreamCallback -> IO (FunPtr RawOStreamCallback)
foreign import ccall safe "LLVM_General_WithFileRawOStream" withFileRawOStream' ::
CString -> LLVMBool -> LLVMBool -> Ptr (OwnerTransfered CString) -> FunPtr RawOStreamCallback -> IO LLVMBool
withFileRawOStream :: CString -> LLVMBool -> LLVMBool -> Ptr (OwnerTransfered CString) -> RawOStreamCallback -> IO LLVMBool
withFileRawOStream p ex bin err c =
bracket (wrapRawOStreamCallback c) freeHaskellFunPtr (withFileRawOStream' p ex bin err)
foreign import ccall safe "LLVM_General_WithBufferRawOStream" withBufferRawOStream' ::
FunPtr ByteRangeCallback -> FunPtr RawOStreamCallback -> IO ()
withBufferRawOStream :: ByteRangeCallback -> RawOStreamCallback -> IO ()
withBufferRawOStream oc c =
bracket (wrapRawOStreamCallback c) freeHaskellFunPtr $ \c ->
bracket (wrapByteRangeCallback oc) freeHaskellFunPtr $ \oc ->
withBufferRawOStream' oc c