{-# LANGUAGE ForeignFunctionInterface #-} module LLVM.Internal.FFI.RawOStream where import LLVM.Prelude import Foreign.Ptr import Foreign.C import Control.Exception (bracket) import LLVM.Internal.FFI.ByteRangeCallback import LLVM.Internal.FFI.LLVMCTypes import LLVM.Internal.FFI.PtrHierarchy type RawPWriteStreamCallback = Ptr RawPWriteStream -> IO () foreign import ccall "wrapper" wrapRawPWriteStreamCallback :: RawPWriteStreamCallback -> IO (FunPtr RawPWriteStreamCallback) foreign import ccall safe "LLVM_Hs_WithFileRawPWriteStream" withFileRawPWriteStream' :: CString -> LLVMBool -> LLVMBool -> Ptr (OwnerTransfered CString) -> FunPtr RawPWriteStreamCallback -> IO LLVMBool withFileRawPWriteStream :: CString -> LLVMBool -> LLVMBool -> Ptr (OwnerTransfered CString) -> RawPWriteStreamCallback -> IO LLVMBool withFileRawPWriteStream :: CString -> LLVMBool -> LLVMBool -> Ptr (OwnerTransfered CString) -> RawPWriteStreamCallback -> IO LLVMBool withFileRawPWriteStream p :: CString p ex :: LLVMBool ex bin :: LLVMBool bin err :: Ptr (OwnerTransfered CString) err c :: RawPWriteStreamCallback c = IO (FunPtr RawPWriteStreamCallback) -> (FunPtr RawPWriteStreamCallback -> IO ()) -> (FunPtr RawPWriteStreamCallback -> IO LLVMBool) -> IO LLVMBool forall a b c. IO a -> (a -> IO b) -> (a -> IO c) -> IO c bracket (RawPWriteStreamCallback -> IO (FunPtr RawPWriteStreamCallback) wrapRawPWriteStreamCallback RawPWriteStreamCallback c) FunPtr RawPWriteStreamCallback -> IO () forall a. FunPtr a -> IO () freeHaskellFunPtr (CString -> LLVMBool -> LLVMBool -> Ptr (OwnerTransfered CString) -> FunPtr RawPWriteStreamCallback -> IO LLVMBool withFileRawPWriteStream' CString p LLVMBool ex LLVMBool bin Ptr (OwnerTransfered CString) err) foreign import ccall safe "LLVM_Hs_WithBufferRawPWriteStream" withBufferRawPWriteStream' :: FunPtr ByteRangeCallback -> FunPtr RawPWriteStreamCallback -> IO () withBufferRawPWriteStream :: ByteRangeCallback -> RawPWriteStreamCallback -> IO () withBufferRawPWriteStream :: ByteRangeCallback -> RawPWriteStreamCallback -> IO () withBufferRawPWriteStream oc :: ByteRangeCallback oc c :: RawPWriteStreamCallback c = IO (FunPtr RawPWriteStreamCallback) -> (FunPtr RawPWriteStreamCallback -> IO ()) -> (FunPtr RawPWriteStreamCallback -> IO ()) -> IO () forall a b c. IO a -> (a -> IO b) -> (a -> IO c) -> IO c bracket (RawPWriteStreamCallback -> IO (FunPtr RawPWriteStreamCallback) wrapRawPWriteStreamCallback RawPWriteStreamCallback c) FunPtr RawPWriteStreamCallback -> IO () forall a. FunPtr a -> IO () freeHaskellFunPtr ((FunPtr RawPWriteStreamCallback -> IO ()) -> IO ()) -> (FunPtr RawPWriteStreamCallback -> IO ()) -> IO () forall a b. (a -> b) -> a -> b $ \c :: FunPtr RawPWriteStreamCallback c -> IO (FunPtr ByteRangeCallback) -> (FunPtr ByteRangeCallback -> IO ()) -> (FunPtr ByteRangeCallback -> IO ()) -> IO () forall a b c. IO a -> (a -> IO b) -> (a -> IO c) -> IO c bracket (ByteRangeCallback -> IO (FunPtr ByteRangeCallback) wrapByteRangeCallback ByteRangeCallback oc) FunPtr ByteRangeCallback -> IO () forall a. FunPtr a -> IO () freeHaskellFunPtr ((FunPtr ByteRangeCallback -> IO ()) -> IO ()) -> (FunPtr ByteRangeCallback -> IO ()) -> IO () forall a b. (a -> b) -> a -> b $ \oc :: FunPtr ByteRangeCallback oc -> FunPtr ByteRangeCallback -> FunPtr RawPWriteStreamCallback -> IO () withBufferRawPWriteStream' FunPtr ByteRangeCallback oc FunPtr RawPWriteStreamCallback c