{-# LANGUAGE TypeApplications #-}
#if (MIN_VERSION_haskell_gi_overloading(1,0,0) && !defined(__HADDOCK_VERSION__))
#define ENABLE_OVERLOADING
#endif
module GI.Gio.Objects.OutputStream
(
OutputStream(..) ,
IsOutputStream ,
toOutputStream ,
#if defined(ENABLE_OVERLOADING)
ResolveOutputStreamMethod ,
#endif
#if defined(ENABLE_OVERLOADING)
OutputStreamClearPendingMethodInfo ,
#endif
outputStreamClearPending ,
#if defined(ENABLE_OVERLOADING)
OutputStreamCloseMethodInfo ,
#endif
outputStreamClose ,
#if defined(ENABLE_OVERLOADING)
OutputStreamCloseAsyncMethodInfo ,
#endif
outputStreamCloseAsync ,
#if defined(ENABLE_OVERLOADING)
OutputStreamCloseFinishMethodInfo ,
#endif
outputStreamCloseFinish ,
#if defined(ENABLE_OVERLOADING)
OutputStreamFlushMethodInfo ,
#endif
outputStreamFlush ,
#if defined(ENABLE_OVERLOADING)
OutputStreamFlushAsyncMethodInfo ,
#endif
outputStreamFlushAsync ,
#if defined(ENABLE_OVERLOADING)
OutputStreamFlushFinishMethodInfo ,
#endif
outputStreamFlushFinish ,
#if defined(ENABLE_OVERLOADING)
OutputStreamHasPendingMethodInfo ,
#endif
outputStreamHasPending ,
#if defined(ENABLE_OVERLOADING)
OutputStreamIsClosedMethodInfo ,
#endif
outputStreamIsClosed ,
#if defined(ENABLE_OVERLOADING)
OutputStreamIsClosingMethodInfo ,
#endif
outputStreamIsClosing ,
#if defined(ENABLE_OVERLOADING)
OutputStreamSetPendingMethodInfo ,
#endif
outputStreamSetPending ,
#if defined(ENABLE_OVERLOADING)
OutputStreamSpliceMethodInfo ,
#endif
outputStreamSplice ,
#if defined(ENABLE_OVERLOADING)
OutputStreamSpliceAsyncMethodInfo ,
#endif
outputStreamSpliceAsync ,
#if defined(ENABLE_OVERLOADING)
OutputStreamSpliceFinishMethodInfo ,
#endif
outputStreamSpliceFinish ,
#if defined(ENABLE_OVERLOADING)
OutputStreamWriteMethodInfo ,
#endif
outputStreamWrite ,
#if defined(ENABLE_OVERLOADING)
OutputStreamWriteAllMethodInfo ,
#endif
outputStreamWriteAll ,
#if defined(ENABLE_OVERLOADING)
OutputStreamWriteAllAsyncMethodInfo ,
#endif
outputStreamWriteAllAsync ,
#if defined(ENABLE_OVERLOADING)
OutputStreamWriteAllFinishMethodInfo ,
#endif
outputStreamWriteAllFinish ,
#if defined(ENABLE_OVERLOADING)
OutputStreamWriteAsyncMethodInfo ,
#endif
outputStreamWriteAsync ,
#if defined(ENABLE_OVERLOADING)
OutputStreamWriteBytesMethodInfo ,
#endif
outputStreamWriteBytes ,
#if defined(ENABLE_OVERLOADING)
OutputStreamWriteBytesAsyncMethodInfo ,
#endif
outputStreamWriteBytesAsync ,
#if defined(ENABLE_OVERLOADING)
OutputStreamWriteBytesFinishMethodInfo ,
#endif
outputStreamWriteBytesFinish ,
#if defined(ENABLE_OVERLOADING)
OutputStreamWriteFinishMethodInfo ,
#endif
outputStreamWriteFinish ,
#if defined(ENABLE_OVERLOADING)
OutputStreamWritevMethodInfo ,
#endif
outputStreamWritev ,
#if defined(ENABLE_OVERLOADING)
OutputStreamWritevAllMethodInfo ,
#endif
outputStreamWritevAll ,
#if defined(ENABLE_OVERLOADING)
OutputStreamWritevAllAsyncMethodInfo ,
#endif
outputStreamWritevAllAsync ,
#if defined(ENABLE_OVERLOADING)
OutputStreamWritevAllFinishMethodInfo ,
#endif
outputStreamWritevAllFinish ,
#if defined(ENABLE_OVERLOADING)
OutputStreamWritevAsyncMethodInfo ,
#endif
outputStreamWritevAsync ,
#if defined(ENABLE_OVERLOADING)
OutputStreamWritevFinishMethodInfo ,
#endif
outputStreamWritevFinish ,
) where
import Data.GI.Base.ShortPrelude
import qualified Data.GI.Base.ShortPrelude as SP
import qualified Data.GI.Base.Overloading as O
import qualified Prelude as P
import qualified Data.GI.Base.Attributes as GI.Attributes
import qualified Data.GI.Base.BasicTypes as B.Types
import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GArray as B.GArray
import qualified Data.GI.Base.GClosure as B.GClosure
import qualified Data.GI.Base.GError as B.GError
import qualified Data.GI.Base.GHashTable as B.GHT
import qualified Data.GI.Base.GVariant as B.GVariant
import qualified Data.GI.Base.GValue as B.GValue
import qualified Data.GI.Base.GParamSpec as B.GParamSpec
import qualified Data.GI.Base.CallStack as B.CallStack
import qualified Data.GI.Base.Properties as B.Properties
import qualified Data.GI.Base.Signals as B.Signals
import qualified Control.Monad.IO.Class as MIO
import qualified Data.Coerce as Coerce
import qualified Data.Text as T
import qualified Data.Kind as DK
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map
import qualified Foreign.Ptr as FP
import qualified GHC.OverloadedLabels as OL
import qualified GHC.Records as R
import qualified Data.Word as DW
import qualified Data.Int as DI
import qualified System.Posix.Types as SPT
import qualified Foreign.C.Types as FCT
#if MIN_VERSION_base(4,18,0)
import qualified GI.GLib.Callbacks as GLib.Callbacks
import qualified GI.GLib.Structs.Bytes as GLib.Bytes
import qualified GI.GLib.Structs.PollFD as GLib.PollFD
import qualified GI.GLib.Structs.Source as GLib.Source
import qualified GI.GObject.Callbacks as GObject.Callbacks
import qualified GI.GObject.Objects.Object as GObject.Object
import qualified GI.Gio.Callbacks as Gio.Callbacks
import {-# SOURCE #-} qualified GI.Gio.Flags as Gio.Flags
import {-# SOURCE #-} qualified GI.Gio.Interfaces.AsyncResult as Gio.AsyncResult
import {-# SOURCE #-} qualified GI.Gio.Objects.Cancellable as Gio.Cancellable
import {-# SOURCE #-} qualified GI.Gio.Objects.InputStream as Gio.InputStream
import {-# SOURCE #-} qualified GI.Gio.Structs.OutputVector as Gio.OutputVector
#else
import qualified GI.GLib.Structs.Bytes as GLib.Bytes
import qualified GI.GObject.Objects.Object as GObject.Object
import qualified GI.Gio.Callbacks as Gio.Callbacks
import {-# SOURCE #-} qualified GI.Gio.Flags as Gio.Flags
import {-# SOURCE #-} qualified GI.Gio.Interfaces.AsyncResult as Gio.AsyncResult
import {-# SOURCE #-} qualified GI.Gio.Objects.Cancellable as Gio.Cancellable
import {-# SOURCE #-} qualified GI.Gio.Objects.InputStream as Gio.InputStream
import {-# SOURCE #-} qualified GI.Gio.Structs.OutputVector as Gio.OutputVector
#endif
newtype OutputStream = OutputStream (SP.ManagedPtr OutputStream)
deriving (OutputStream -> OutputStream -> Bool
(OutputStream -> OutputStream -> Bool)
-> (OutputStream -> OutputStream -> Bool) -> Eq OutputStream
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: OutputStream -> OutputStream -> Bool
== :: OutputStream -> OutputStream -> Bool
$c/= :: OutputStream -> OutputStream -> Bool
/= :: OutputStream -> OutputStream -> Bool
Eq)
instance SP.ManagedPtrNewtype OutputStream where
toManagedPtr :: OutputStream -> ManagedPtr OutputStream
toManagedPtr (OutputStream ManagedPtr OutputStream
p) = ManagedPtr OutputStream
p
foreign import ccall "g_output_stream_get_type"
c_g_output_stream_get_type :: IO B.Types.GType
instance B.Types.TypedObject OutputStream where
glibType :: IO GType
glibType = IO GType
c_g_output_stream_get_type
instance B.Types.GObject OutputStream
class (SP.GObject o, O.IsDescendantOf OutputStream o) => IsOutputStream o
instance (SP.GObject o, O.IsDescendantOf OutputStream o) => IsOutputStream o
instance O.HasParentTypes OutputStream
type instance O.ParentTypes OutputStream = '[GObject.Object.Object]
toOutputStream :: (MIO.MonadIO m, IsOutputStream o) => o -> m OutputStream
toOutputStream :: forall (m :: * -> *) o.
(MonadIO m, IsOutputStream o) =>
o -> m OutputStream
toOutputStream = IO OutputStream -> m OutputStream
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO OutputStream -> m OutputStream)
-> (o -> IO OutputStream) -> o -> m OutputStream
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ManagedPtr OutputStream -> OutputStream) -> o -> IO OutputStream
forall o o'.
(HasCallStack, ManagedPtrNewtype o, TypedObject o,
ManagedPtrNewtype o', TypedObject o') =>
(ManagedPtr o' -> o') -> o -> IO o'
B.ManagedPtr.unsafeCastTo ManagedPtr OutputStream -> OutputStream
OutputStream
instance B.GValue.IsGValue (Maybe OutputStream) where
gvalueGType_ :: IO GType
gvalueGType_ = IO GType
c_g_output_stream_get_type
gvalueSet_ :: Ptr GValue -> Maybe OutputStream -> IO ()
gvalueSet_ Ptr GValue
gv Maybe OutputStream
P.Nothing = Ptr GValue -> Ptr OutputStream -> IO ()
forall a. GObject a => Ptr GValue -> Ptr a -> IO ()
B.GValue.set_object Ptr GValue
gv (Ptr OutputStream
forall a. Ptr a
FP.nullPtr :: FP.Ptr OutputStream)
gvalueSet_ Ptr GValue
gv (P.Just OutputStream
obj) = OutputStream -> (Ptr OutputStream -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
B.ManagedPtr.withManagedPtr OutputStream
obj (Ptr GValue -> Ptr OutputStream -> IO ()
forall a. GObject a => Ptr GValue -> Ptr a -> IO ()
B.GValue.set_object Ptr GValue
gv)
gvalueGet_ :: Ptr GValue -> IO (Maybe OutputStream)
gvalueGet_ Ptr GValue
gv = do
ptr <- Ptr GValue -> IO (Ptr OutputStream)
forall a. GObject a => Ptr GValue -> IO (Ptr a)
B.GValue.get_object Ptr GValue
gv :: IO (FP.Ptr OutputStream)
if ptr /= FP.nullPtr
then P.Just <$> B.ManagedPtr.newObject OutputStream ptr
else return P.Nothing
#if defined(ENABLE_OVERLOADING)
type family ResolveOutputStreamMethod (t :: Symbol) (o :: DK.Type) :: DK.Type where
ResolveOutputStreamMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
ResolveOutputStreamMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
ResolveOutputStreamMethod "clearPending" o = OutputStreamClearPendingMethodInfo
ResolveOutputStreamMethod "close" o = OutputStreamCloseMethodInfo
ResolveOutputStreamMethod "closeAsync" o = OutputStreamCloseAsyncMethodInfo
ResolveOutputStreamMethod "closeFinish" o = OutputStreamCloseFinishMethodInfo
ResolveOutputStreamMethod "flush" o = OutputStreamFlushMethodInfo
ResolveOutputStreamMethod "flushAsync" o = OutputStreamFlushAsyncMethodInfo
ResolveOutputStreamMethod "flushFinish" o = OutputStreamFlushFinishMethodInfo
ResolveOutputStreamMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
ResolveOutputStreamMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
ResolveOutputStreamMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
ResolveOutputStreamMethod "hasPending" o = OutputStreamHasPendingMethodInfo
ResolveOutputStreamMethod "isClosed" o = OutputStreamIsClosedMethodInfo
ResolveOutputStreamMethod "isClosing" o = OutputStreamIsClosingMethodInfo
ResolveOutputStreamMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
ResolveOutputStreamMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
ResolveOutputStreamMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
ResolveOutputStreamMethod "ref" o = GObject.Object.ObjectRefMethodInfo
ResolveOutputStreamMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
ResolveOutputStreamMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
ResolveOutputStreamMethod "splice" o = OutputStreamSpliceMethodInfo
ResolveOutputStreamMethod "spliceAsync" o = OutputStreamSpliceAsyncMethodInfo
ResolveOutputStreamMethod "spliceFinish" o = OutputStreamSpliceFinishMethodInfo
ResolveOutputStreamMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
ResolveOutputStreamMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
ResolveOutputStreamMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
ResolveOutputStreamMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
ResolveOutputStreamMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
ResolveOutputStreamMethod "write" o = OutputStreamWriteMethodInfo
ResolveOutputStreamMethod "writeAll" o = OutputStreamWriteAllMethodInfo
ResolveOutputStreamMethod "writeAllAsync" o = OutputStreamWriteAllAsyncMethodInfo
ResolveOutputStreamMethod "writeAllFinish" o = OutputStreamWriteAllFinishMethodInfo
ResolveOutputStreamMethod "writeAsync" o = OutputStreamWriteAsyncMethodInfo
ResolveOutputStreamMethod "writeBytes" o = OutputStreamWriteBytesMethodInfo
ResolveOutputStreamMethod "writeBytesAsync" o = OutputStreamWriteBytesAsyncMethodInfo
ResolveOutputStreamMethod "writeBytesFinish" o = OutputStreamWriteBytesFinishMethodInfo
ResolveOutputStreamMethod "writeFinish" o = OutputStreamWriteFinishMethodInfo
ResolveOutputStreamMethod "writev" o = OutputStreamWritevMethodInfo
ResolveOutputStreamMethod "writevAll" o = OutputStreamWritevAllMethodInfo
ResolveOutputStreamMethod "writevAllAsync" o = OutputStreamWritevAllAsyncMethodInfo
ResolveOutputStreamMethod "writevAllFinish" o = OutputStreamWritevAllFinishMethodInfo
ResolveOutputStreamMethod "writevAsync" o = OutputStreamWritevAsyncMethodInfo
ResolveOutputStreamMethod "writevFinish" o = OutputStreamWritevFinishMethodInfo
ResolveOutputStreamMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
ResolveOutputStreamMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
ResolveOutputStreamMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
ResolveOutputStreamMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
ResolveOutputStreamMethod "setDataFull" o = GObject.Object.ObjectSetDataFullMethodInfo
ResolveOutputStreamMethod "setPending" o = OutputStreamSetPendingMethodInfo
ResolveOutputStreamMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
ResolveOutputStreamMethod l o = O.MethodResolutionFailed l o
instance (info ~ ResolveOutputStreamMethod t OutputStream, O.OverloadedMethod info OutputStream p) => OL.IsLabel t (OutputStream -> p) where
#if MIN_VERSION_base(4,10,0)
fromLabel :: OutputStream -> p
fromLabel = forall {k} (i :: k) o s. OverloadedMethod i o s => o -> s
forall i o s. OverloadedMethod i o s => o -> s
O.overloadedMethod @info
#else
fromLabel _ = O.overloadedMethod @info
#endif
#if MIN_VERSION_base(4,13,0)
instance (info ~ ResolveOutputStreamMethod t OutputStream, O.OverloadedMethod info OutputStream p, R.HasField t OutputStream p) => R.HasField t OutputStream p where
getField :: OutputStream -> p
getField = forall {k} (i :: k) o s. OverloadedMethod i o s => o -> s
forall i o s. OverloadedMethod i o s => o -> s
O.overloadedMethod @info
#endif
instance (info ~ ResolveOutputStreamMethod t OutputStream, O.OverloadedMethodInfo info OutputStream) => OL.IsLabel t (O.MethodProxy info OutputStream) where
#if MIN_VERSION_base(4,10,0)
fromLabel :: MethodProxy info OutputStream
fromLabel = MethodProxy info OutputStream
forall info obj. MethodProxy info obj
O.MethodProxy
#else
fromLabel _ = O.MethodProxy
#endif
#endif
#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList OutputStream
type instance O.AttributeList OutputStream = OutputStreamAttributeList
type OutputStreamAttributeList = ('[ ] :: [(Symbol, DK.Type)])
#endif
#if defined(ENABLE_OVERLOADING)
#endif
#if defined(ENABLE_OVERLOADING)
type instance O.SignalList OutputStream = OutputStreamSignalList
type OutputStreamSignalList = ('[ '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, DK.Type)])
#endif
foreign import ccall "g_output_stream_clear_pending" g_output_stream_clear_pending ::
Ptr OutputStream ->
IO ()
outputStreamClearPending ::
(B.CallStack.HasCallStack, MonadIO m, IsOutputStream a) =>
a
-> m ()
outputStreamClearPending :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsOutputStream a) =>
a -> m ()
outputStreamClearPending a
stream = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
stream' <- a -> IO (Ptr OutputStream)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
stream
g_output_stream_clear_pending stream'
touchManagedPtr stream
return ()
#if defined(ENABLE_OVERLOADING)
data OutputStreamClearPendingMethodInfo
instance (signature ~ (m ()), MonadIO m, IsOutputStream a) => O.OverloadedMethod OutputStreamClearPendingMethodInfo a signature where
overloadedMethod :: a -> signature
overloadedMethod = a -> signature
a -> m ()
forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsOutputStream a) =>
a -> m ()
outputStreamClearPending
instance O.OverloadedMethodInfo OutputStreamClearPendingMethodInfo a where
overloadedMethodInfo :: Maybe ResolvedSymbolInfo
overloadedMethodInfo = ResolvedSymbolInfo -> Maybe ResolvedSymbolInfo
forall a. a -> Maybe a
P.Just (O.ResolvedSymbolInfo {
resolvedSymbolName :: Text
O.resolvedSymbolName = Text
"GI.Gio.Objects.OutputStream.outputStreamClearPending",
resolvedSymbolURL :: Text
O.resolvedSymbolURL = Text
"https://hackage.haskell.org/package/gi-gio-2.0.38/docs/GI-Gio-Objects-OutputStream.html#v:outputStreamClearPending"
})
#endif
foreign import ccall "g_output_stream_close" g_output_stream_close ::
Ptr OutputStream ->
Ptr Gio.Cancellable.Cancellable ->
Ptr (Ptr GError) ->
IO CInt
outputStreamClose ::
(B.CallStack.HasCallStack, MonadIO m, IsOutputStream a, Gio.Cancellable.IsCancellable b) =>
a
-> Maybe (b)
-> m ()
outputStreamClose :: forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsOutputStream a, IsCancellable b) =>
a -> Maybe b -> m ()
outputStreamClose a
stream Maybe b
cancellable = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
stream' <- a -> IO (Ptr OutputStream)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
stream
maybeCancellable <- case cancellable of
Maybe b
Nothing -> Ptr Cancellable -> IO (Ptr Cancellable)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr Cancellable
forall a. Ptr a
FP.nullPtr
Just b
jCancellable -> do
jCancellable' <- b -> IO (Ptr Cancellable)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr b
jCancellable
return jCancellable'
onException (do
_ <- propagateGError $ g_output_stream_close stream' maybeCancellable
touchManagedPtr stream
whenJust cancellable touchManagedPtr
return ()
) (do
return ()
)
#if defined(ENABLE_OVERLOADING)
data OutputStreamCloseMethodInfo
instance (signature ~ (Maybe (b) -> m ()), MonadIO m, IsOutputStream a, Gio.Cancellable.IsCancellable b) => O.OverloadedMethod OutputStreamCloseMethodInfo a signature where
overloadedMethod :: a -> signature
overloadedMethod = a -> signature
a -> Maybe b -> m ()
forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsOutputStream a, IsCancellable b) =>
a -> Maybe b -> m ()
outputStreamClose
instance O.OverloadedMethodInfo OutputStreamCloseMethodInfo a where
overloadedMethodInfo :: Maybe ResolvedSymbolInfo
overloadedMethodInfo = ResolvedSymbolInfo -> Maybe ResolvedSymbolInfo
forall a. a -> Maybe a
P.Just (O.ResolvedSymbolInfo {
resolvedSymbolName :: Text
O.resolvedSymbolName = Text
"GI.Gio.Objects.OutputStream.outputStreamClose",
resolvedSymbolURL :: Text
O.resolvedSymbolURL = Text
"https://hackage.haskell.org/package/gi-gio-2.0.38/docs/GI-Gio-Objects-OutputStream.html#v:outputStreamClose"
})
#endif
foreign import ccall "g_output_stream_close_async" g_output_stream_close_async ::
Ptr OutputStream ->
Int32 ->
Ptr Gio.Cancellable.Cancellable ->
FunPtr Gio.Callbacks.C_AsyncReadyCallback ->
Ptr () ->
IO ()
outputStreamCloseAsync ::
(B.CallStack.HasCallStack, MonadIO m, IsOutputStream a, Gio.Cancellable.IsCancellable b) =>
a
-> Int32
-> Maybe (b)
-> Maybe (Gio.Callbacks.AsyncReadyCallback)
-> m ()
outputStreamCloseAsync :: forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsOutputStream a, IsCancellable b) =>
a -> Int32 -> Maybe b -> Maybe AsyncReadyCallback -> m ()
outputStreamCloseAsync a
stream Int32
ioPriority Maybe b
cancellable Maybe AsyncReadyCallback
callback = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
stream' <- a -> IO (Ptr OutputStream)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
stream
maybeCancellable <- case cancellable of
Maybe b
Nothing -> Ptr Cancellable -> IO (Ptr Cancellable)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr Cancellable
forall a. Ptr a
FP.nullPtr
Just b
jCancellable -> do
jCancellable' <- b -> IO (Ptr Cancellable)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr b
jCancellable
return jCancellable'
maybeCallback <- case callback of
Maybe AsyncReadyCallback
Nothing -> FunPtr C_AsyncReadyCallback -> IO (FunPtr C_AsyncReadyCallback)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return FunPtr C_AsyncReadyCallback
forall a. FunPtr a
FP.nullFunPtr
Just AsyncReadyCallback
jCallback -> do
ptrcallback <- IO (Ptr (FunPtr C_AsyncReadyCallback))
forall a. Storable a => IO (Ptr a)
callocMem :: IO (Ptr (FunPtr Gio.Callbacks.C_AsyncReadyCallback))
jCallback' <- Gio.Callbacks.mk_AsyncReadyCallback (Gio.Callbacks.wrap_AsyncReadyCallback (Just ptrcallback) (Gio.Callbacks.drop_closures_AsyncReadyCallback jCallback))
poke ptrcallback jCallback'
return jCallback'
let userData = Ptr a
forall a. Ptr a
nullPtr
g_output_stream_close_async stream' ioPriority maybeCancellable maybeCallback userData
touchManagedPtr stream
whenJust cancellable touchManagedPtr
return ()
#if defined(ENABLE_OVERLOADING)
data OutputStreamCloseAsyncMethodInfo
instance (signature ~ (Int32 -> Maybe (b) -> Maybe (Gio.Callbacks.AsyncReadyCallback) -> m ()), MonadIO m, IsOutputStream a, Gio.Cancellable.IsCancellable b) => O.OverloadedMethod OutputStreamCloseAsyncMethodInfo a signature where
overloadedMethod :: a -> signature
overloadedMethod = a -> signature
a -> Int32 -> Maybe b -> Maybe AsyncReadyCallback -> m ()
forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsOutputStream a, IsCancellable b) =>
a -> Int32 -> Maybe b -> Maybe AsyncReadyCallback -> m ()
outputStreamCloseAsync
instance O.OverloadedMethodInfo OutputStreamCloseAsyncMethodInfo a where
overloadedMethodInfo :: Maybe ResolvedSymbolInfo
overloadedMethodInfo = ResolvedSymbolInfo -> Maybe ResolvedSymbolInfo
forall a. a -> Maybe a
P.Just (O.ResolvedSymbolInfo {
resolvedSymbolName :: Text
O.resolvedSymbolName = Text
"GI.Gio.Objects.OutputStream.outputStreamCloseAsync",
resolvedSymbolURL :: Text
O.resolvedSymbolURL = Text
"https://hackage.haskell.org/package/gi-gio-2.0.38/docs/GI-Gio-Objects-OutputStream.html#v:outputStreamCloseAsync"
})
#endif
foreign import ccall "g_output_stream_close_finish" g_output_stream_close_finish ::
Ptr OutputStream ->
Ptr Gio.AsyncResult.AsyncResult ->
Ptr (Ptr GError) ->
IO CInt
outputStreamCloseFinish ::
(B.CallStack.HasCallStack, MonadIO m, IsOutputStream a, Gio.AsyncResult.IsAsyncResult b) =>
a
-> b
-> m ()
outputStreamCloseFinish :: forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsOutputStream a, IsAsyncResult b) =>
a -> b -> m ()
outputStreamCloseFinish a
stream b
result_ = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
stream' <- a -> IO (Ptr OutputStream)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
stream
result_' <- unsafeManagedPtrCastPtr result_
onException (do
_ <- propagateGError $ g_output_stream_close_finish stream' result_'
touchManagedPtr stream
touchManagedPtr result_
return ()
) (do
return ()
)
#if defined(ENABLE_OVERLOADING)
data OutputStreamCloseFinishMethodInfo
instance (signature ~ (b -> m ()), MonadIO m, IsOutputStream a, Gio.AsyncResult.IsAsyncResult b) => O.OverloadedMethod OutputStreamCloseFinishMethodInfo a signature where
overloadedMethod :: a -> signature
overloadedMethod = a -> signature
a -> b -> m ()
forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsOutputStream a, IsAsyncResult b) =>
a -> b -> m ()
outputStreamCloseFinish
instance O.OverloadedMethodInfo OutputStreamCloseFinishMethodInfo a where
overloadedMethodInfo :: Maybe ResolvedSymbolInfo
overloadedMethodInfo = ResolvedSymbolInfo -> Maybe ResolvedSymbolInfo
forall a. a -> Maybe a
P.Just (O.ResolvedSymbolInfo {
resolvedSymbolName :: Text
O.resolvedSymbolName = Text
"GI.Gio.Objects.OutputStream.outputStreamCloseFinish",
resolvedSymbolURL :: Text
O.resolvedSymbolURL = Text
"https://hackage.haskell.org/package/gi-gio-2.0.38/docs/GI-Gio-Objects-OutputStream.html#v:outputStreamCloseFinish"
})
#endif
foreign import ccall "g_output_stream_flush" g_output_stream_flush ::
Ptr OutputStream ->
Ptr Gio.Cancellable.Cancellable ->
Ptr (Ptr GError) ->
IO CInt
outputStreamFlush ::
(B.CallStack.HasCallStack, MonadIO m, IsOutputStream a, Gio.Cancellable.IsCancellable b) =>
a
-> Maybe (b)
-> m ()
outputStreamFlush :: forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsOutputStream a, IsCancellable b) =>
a -> Maybe b -> m ()
outputStreamFlush a
stream Maybe b
cancellable = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
stream' <- a -> IO (Ptr OutputStream)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
stream
maybeCancellable <- case cancellable of
Maybe b
Nothing -> Ptr Cancellable -> IO (Ptr Cancellable)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr Cancellable
forall a. Ptr a
FP.nullPtr
Just b
jCancellable -> do
jCancellable' <- b -> IO (Ptr Cancellable)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr b
jCancellable
return jCancellable'
onException (do
_ <- propagateGError $ g_output_stream_flush stream' maybeCancellable
touchManagedPtr stream
whenJust cancellable touchManagedPtr
return ()
) (do
return ()
)
#if defined(ENABLE_OVERLOADING)
data OutputStreamFlushMethodInfo
instance (signature ~ (Maybe (b) -> m ()), MonadIO m, IsOutputStream a, Gio.Cancellable.IsCancellable b) => O.OverloadedMethod OutputStreamFlushMethodInfo a signature where
overloadedMethod :: a -> signature
overloadedMethod = a -> signature
a -> Maybe b -> m ()
forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsOutputStream a, IsCancellable b) =>
a -> Maybe b -> m ()
outputStreamFlush
instance O.OverloadedMethodInfo OutputStreamFlushMethodInfo a where
overloadedMethodInfo :: Maybe ResolvedSymbolInfo
overloadedMethodInfo = ResolvedSymbolInfo -> Maybe ResolvedSymbolInfo
forall a. a -> Maybe a
P.Just (O.ResolvedSymbolInfo {
resolvedSymbolName :: Text
O.resolvedSymbolName = Text
"GI.Gio.Objects.OutputStream.outputStreamFlush",
resolvedSymbolURL :: Text
O.resolvedSymbolURL = Text
"https://hackage.haskell.org/package/gi-gio-2.0.38/docs/GI-Gio-Objects-OutputStream.html#v:outputStreamFlush"
})
#endif
foreign import ccall "g_output_stream_flush_async" g_output_stream_flush_async ::
Ptr OutputStream ->
Int32 ->
Ptr Gio.Cancellable.Cancellable ->
FunPtr Gio.Callbacks.C_AsyncReadyCallback ->
Ptr () ->
IO ()
outputStreamFlushAsync ::
(B.CallStack.HasCallStack, MonadIO m, IsOutputStream a, Gio.Cancellable.IsCancellable b) =>
a
-> Int32
-> Maybe (b)
-> Maybe (Gio.Callbacks.AsyncReadyCallback)
-> m ()
outputStreamFlushAsync :: forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsOutputStream a, IsCancellable b) =>
a -> Int32 -> Maybe b -> Maybe AsyncReadyCallback -> m ()
outputStreamFlushAsync a
stream Int32
ioPriority Maybe b
cancellable Maybe AsyncReadyCallback
callback = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
stream' <- a -> IO (Ptr OutputStream)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
stream
maybeCancellable <- case cancellable of
Maybe b
Nothing -> Ptr Cancellable -> IO (Ptr Cancellable)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr Cancellable
forall a. Ptr a
FP.nullPtr
Just b
jCancellable -> do
jCancellable' <- b -> IO (Ptr Cancellable)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr b
jCancellable
return jCancellable'
maybeCallback <- case callback of
Maybe AsyncReadyCallback
Nothing -> FunPtr C_AsyncReadyCallback -> IO (FunPtr C_AsyncReadyCallback)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return FunPtr C_AsyncReadyCallback
forall a. FunPtr a
FP.nullFunPtr
Just AsyncReadyCallback
jCallback -> do
ptrcallback <- IO (Ptr (FunPtr C_AsyncReadyCallback))
forall a. Storable a => IO (Ptr a)
callocMem :: IO (Ptr (FunPtr Gio.Callbacks.C_AsyncReadyCallback))
jCallback' <- Gio.Callbacks.mk_AsyncReadyCallback (Gio.Callbacks.wrap_AsyncReadyCallback (Just ptrcallback) (Gio.Callbacks.drop_closures_AsyncReadyCallback jCallback))
poke ptrcallback jCallback'
return jCallback'
let userData = Ptr a
forall a. Ptr a
nullPtr
g_output_stream_flush_async stream' ioPriority maybeCancellable maybeCallback userData
touchManagedPtr stream
whenJust cancellable touchManagedPtr
return ()
#if defined(ENABLE_OVERLOADING)
data OutputStreamFlushAsyncMethodInfo
instance (signature ~ (Int32 -> Maybe (b) -> Maybe (Gio.Callbacks.AsyncReadyCallback) -> m ()), MonadIO m, IsOutputStream a, Gio.Cancellable.IsCancellable b) => O.OverloadedMethod OutputStreamFlushAsyncMethodInfo a signature where
overloadedMethod :: a -> signature
overloadedMethod = a -> signature
a -> Int32 -> Maybe b -> Maybe AsyncReadyCallback -> m ()
forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsOutputStream a, IsCancellable b) =>
a -> Int32 -> Maybe b -> Maybe AsyncReadyCallback -> m ()
outputStreamFlushAsync
instance O.OverloadedMethodInfo OutputStreamFlushAsyncMethodInfo a where
overloadedMethodInfo :: Maybe ResolvedSymbolInfo
overloadedMethodInfo = ResolvedSymbolInfo -> Maybe ResolvedSymbolInfo
forall a. a -> Maybe a
P.Just (O.ResolvedSymbolInfo {
resolvedSymbolName :: Text
O.resolvedSymbolName = Text
"GI.Gio.Objects.OutputStream.outputStreamFlushAsync",
resolvedSymbolURL :: Text
O.resolvedSymbolURL = Text
"https://hackage.haskell.org/package/gi-gio-2.0.38/docs/GI-Gio-Objects-OutputStream.html#v:outputStreamFlushAsync"
})
#endif
foreign import ccall "g_output_stream_flush_finish" g_output_stream_flush_finish ::
Ptr OutputStream ->
Ptr Gio.AsyncResult.AsyncResult ->
Ptr (Ptr GError) ->
IO CInt
outputStreamFlushFinish ::
(B.CallStack.HasCallStack, MonadIO m, IsOutputStream a, Gio.AsyncResult.IsAsyncResult b) =>
a
-> b
-> m ()
outputStreamFlushFinish :: forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsOutputStream a, IsAsyncResult b) =>
a -> b -> m ()
outputStreamFlushFinish a
stream b
result_ = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
stream' <- a -> IO (Ptr OutputStream)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
stream
result_' <- unsafeManagedPtrCastPtr result_
onException (do
_ <- propagateGError $ g_output_stream_flush_finish stream' result_'
touchManagedPtr stream
touchManagedPtr result_
return ()
) (do
return ()
)
#if defined(ENABLE_OVERLOADING)
data OutputStreamFlushFinishMethodInfo
instance (signature ~ (b -> m ()), MonadIO m, IsOutputStream a, Gio.AsyncResult.IsAsyncResult b) => O.OverloadedMethod OutputStreamFlushFinishMethodInfo a signature where
overloadedMethod :: a -> signature
overloadedMethod = a -> signature
a -> b -> m ()
forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsOutputStream a, IsAsyncResult b) =>
a -> b -> m ()
outputStreamFlushFinish
instance O.OverloadedMethodInfo OutputStreamFlushFinishMethodInfo a where
overloadedMethodInfo :: Maybe ResolvedSymbolInfo
overloadedMethodInfo = ResolvedSymbolInfo -> Maybe ResolvedSymbolInfo
forall a. a -> Maybe a
P.Just (O.ResolvedSymbolInfo {
resolvedSymbolName :: Text
O.resolvedSymbolName = Text
"GI.Gio.Objects.OutputStream.outputStreamFlushFinish",
resolvedSymbolURL :: Text
O.resolvedSymbolURL = Text
"https://hackage.haskell.org/package/gi-gio-2.0.38/docs/GI-Gio-Objects-OutputStream.html#v:outputStreamFlushFinish"
})
#endif
foreign import ccall "g_output_stream_has_pending" g_output_stream_has_pending ::
Ptr OutputStream ->
IO CInt
outputStreamHasPending ::
(B.CallStack.HasCallStack, MonadIO m, IsOutputStream a) =>
a
-> m Bool
outputStreamHasPending :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsOutputStream a) =>
a -> m Bool
outputStreamHasPending a
stream = IO Bool -> m Bool
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
forall a b. (a -> b) -> a -> b
$ do
stream' <- a -> IO (Ptr OutputStream)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
stream
result <- g_output_stream_has_pending stream'
let result' = (CInt -> CInt -> Bool
forall a. Eq a => a -> a -> Bool
/= CInt
0) CInt
result
touchManagedPtr stream
return result'
#if defined(ENABLE_OVERLOADING)
data OutputStreamHasPendingMethodInfo
instance (signature ~ (m Bool), MonadIO m, IsOutputStream a) => O.OverloadedMethod OutputStreamHasPendingMethodInfo a signature where
overloadedMethod :: a -> signature
overloadedMethod = a -> signature
a -> m Bool
forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsOutputStream a) =>
a -> m Bool
outputStreamHasPending
instance O.OverloadedMethodInfo OutputStreamHasPendingMethodInfo a where
overloadedMethodInfo :: Maybe ResolvedSymbolInfo
overloadedMethodInfo = ResolvedSymbolInfo -> Maybe ResolvedSymbolInfo
forall a. a -> Maybe a
P.Just (O.ResolvedSymbolInfo {
resolvedSymbolName :: Text
O.resolvedSymbolName = Text
"GI.Gio.Objects.OutputStream.outputStreamHasPending",
resolvedSymbolURL :: Text
O.resolvedSymbolURL = Text
"https://hackage.haskell.org/package/gi-gio-2.0.38/docs/GI-Gio-Objects-OutputStream.html#v:outputStreamHasPending"
})
#endif
foreign import ccall "g_output_stream_is_closed" g_output_stream_is_closed ::
Ptr OutputStream ->
IO CInt
outputStreamIsClosed ::
(B.CallStack.HasCallStack, MonadIO m, IsOutputStream a) =>
a
-> m Bool
outputStreamIsClosed :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsOutputStream a) =>
a -> m Bool
outputStreamIsClosed a
stream = IO Bool -> m Bool
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
forall a b. (a -> b) -> a -> b
$ do
stream' <- a -> IO (Ptr OutputStream)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
stream
result <- g_output_stream_is_closed stream'
let result' = (CInt -> CInt -> Bool
forall a. Eq a => a -> a -> Bool
/= CInt
0) CInt
result
touchManagedPtr stream
return result'
#if defined(ENABLE_OVERLOADING)
data OutputStreamIsClosedMethodInfo
instance (signature ~ (m Bool), MonadIO m, IsOutputStream a) => O.OverloadedMethod OutputStreamIsClosedMethodInfo a signature where
overloadedMethod :: a -> signature
overloadedMethod = a -> signature
a -> m Bool
forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsOutputStream a) =>
a -> m Bool
outputStreamIsClosed
instance O.OverloadedMethodInfo OutputStreamIsClosedMethodInfo a where
overloadedMethodInfo :: Maybe ResolvedSymbolInfo
overloadedMethodInfo = ResolvedSymbolInfo -> Maybe ResolvedSymbolInfo
forall a. a -> Maybe a
P.Just (O.ResolvedSymbolInfo {
resolvedSymbolName :: Text
O.resolvedSymbolName = Text
"GI.Gio.Objects.OutputStream.outputStreamIsClosed",
resolvedSymbolURL :: Text
O.resolvedSymbolURL = Text
"https://hackage.haskell.org/package/gi-gio-2.0.38/docs/GI-Gio-Objects-OutputStream.html#v:outputStreamIsClosed"
})
#endif
foreign import ccall "g_output_stream_is_closing" g_output_stream_is_closing ::
Ptr OutputStream ->
IO CInt
outputStreamIsClosing ::
(B.CallStack.HasCallStack, MonadIO m, IsOutputStream a) =>
a
-> m Bool
outputStreamIsClosing :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsOutputStream a) =>
a -> m Bool
outputStreamIsClosing a
stream = IO Bool -> m Bool
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
forall a b. (a -> b) -> a -> b
$ do
stream' <- a -> IO (Ptr OutputStream)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
stream
result <- g_output_stream_is_closing stream'
let result' = (CInt -> CInt -> Bool
forall a. Eq a => a -> a -> Bool
/= CInt
0) CInt
result
touchManagedPtr stream
return result'
#if defined(ENABLE_OVERLOADING)
data OutputStreamIsClosingMethodInfo
instance (signature ~ (m Bool), MonadIO m, IsOutputStream a) => O.OverloadedMethod OutputStreamIsClosingMethodInfo a signature where
overloadedMethod :: a -> signature
overloadedMethod = a -> signature
a -> m Bool
forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsOutputStream a) =>
a -> m Bool
outputStreamIsClosing
instance O.OverloadedMethodInfo OutputStreamIsClosingMethodInfo a where
overloadedMethodInfo :: Maybe ResolvedSymbolInfo
overloadedMethodInfo = ResolvedSymbolInfo -> Maybe ResolvedSymbolInfo
forall a. a -> Maybe a
P.Just (O.ResolvedSymbolInfo {
resolvedSymbolName :: Text
O.resolvedSymbolName = Text
"GI.Gio.Objects.OutputStream.outputStreamIsClosing",
resolvedSymbolURL :: Text
O.resolvedSymbolURL = Text
"https://hackage.haskell.org/package/gi-gio-2.0.38/docs/GI-Gio-Objects-OutputStream.html#v:outputStreamIsClosing"
})
#endif
foreign import ccall "g_output_stream_set_pending" g_output_stream_set_pending ::
Ptr OutputStream ->
Ptr (Ptr GError) ->
IO CInt
outputStreamSetPending ::
(B.CallStack.HasCallStack, MonadIO m, IsOutputStream a) =>
a
-> m ()
outputStreamSetPending :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsOutputStream a) =>
a -> m ()
outputStreamSetPending a
stream = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
stream' <- a -> IO (Ptr OutputStream)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
stream
onException (do
_ <- propagateGError $ g_output_stream_set_pending stream'
touchManagedPtr stream
return ()
) (do
return ()
)
#if defined(ENABLE_OVERLOADING)
data OutputStreamSetPendingMethodInfo
instance (signature ~ (m ()), MonadIO m, IsOutputStream a) => O.OverloadedMethod OutputStreamSetPendingMethodInfo a signature where
overloadedMethod :: a -> signature
overloadedMethod = a -> signature
a -> m ()
forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsOutputStream a) =>
a -> m ()
outputStreamSetPending
instance O.OverloadedMethodInfo OutputStreamSetPendingMethodInfo a where
overloadedMethodInfo :: Maybe ResolvedSymbolInfo
overloadedMethodInfo = ResolvedSymbolInfo -> Maybe ResolvedSymbolInfo
forall a. a -> Maybe a
P.Just (O.ResolvedSymbolInfo {
resolvedSymbolName :: Text
O.resolvedSymbolName = Text
"GI.Gio.Objects.OutputStream.outputStreamSetPending",
resolvedSymbolURL :: Text
O.resolvedSymbolURL = Text
"https://hackage.haskell.org/package/gi-gio-2.0.38/docs/GI-Gio-Objects-OutputStream.html#v:outputStreamSetPending"
})
#endif
foreign import ccall "g_output_stream_splice" g_output_stream_splice ::
Ptr OutputStream ->
Ptr Gio.InputStream.InputStream ->
CUInt ->
Ptr Gio.Cancellable.Cancellable ->
Ptr (Ptr GError) ->
IO DI.Int64
outputStreamSplice ::
(B.CallStack.HasCallStack, MonadIO m, IsOutputStream a, Gio.InputStream.IsInputStream b, Gio.Cancellable.IsCancellable c) =>
a
-> b
-> [Gio.Flags.OutputStreamSpliceFlags]
-> Maybe (c)
-> m DI.Int64
outputStreamSplice :: forall (m :: * -> *) a b c.
(HasCallStack, MonadIO m, IsOutputStream a, IsInputStream b,
IsCancellable c) =>
a -> b -> [OutputStreamSpliceFlags] -> Maybe c -> m Int64
outputStreamSplice a
stream b
source [OutputStreamSpliceFlags]
flags Maybe c
cancellable = IO Int64 -> m Int64
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Int64 -> m Int64) -> IO Int64 -> m Int64
forall a b. (a -> b) -> a -> b
$ do
stream' <- a -> IO (Ptr OutputStream)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
stream
source' <- unsafeManagedPtrCastPtr source
let flags' = [OutputStreamSpliceFlags] -> CUInt
forall b a. (Num b, IsGFlag a) => [a] -> b
gflagsToWord [OutputStreamSpliceFlags]
flags
maybeCancellable <- case cancellable of
Maybe c
Nothing -> Ptr Cancellable -> IO (Ptr Cancellable)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr Cancellable
forall a. Ptr a
FP.nullPtr
Just c
jCancellable -> do
jCancellable' <- c -> IO (Ptr Cancellable)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr c
jCancellable
return jCancellable'
onException (do
result <- propagateGError $ g_output_stream_splice stream' source' flags' maybeCancellable
touchManagedPtr stream
touchManagedPtr source
whenJust cancellable touchManagedPtr
return result
) (do
return ()
)
#if defined(ENABLE_OVERLOADING)
data OutputStreamSpliceMethodInfo
instance (signature ~ (b -> [Gio.Flags.OutputStreamSpliceFlags] -> Maybe (c) -> m DI.Int64), MonadIO m, IsOutputStream a, Gio.InputStream.IsInputStream b, Gio.Cancellable.IsCancellable c) => O.OverloadedMethod OutputStreamSpliceMethodInfo a signature where
overloadedMethod :: a -> signature
overloadedMethod = a -> signature
a -> b -> [OutputStreamSpliceFlags] -> Maybe c -> m Int64
forall (m :: * -> *) a b c.
(HasCallStack, MonadIO m, IsOutputStream a, IsInputStream b,
IsCancellable c) =>
a -> b -> [OutputStreamSpliceFlags] -> Maybe c -> m Int64
outputStreamSplice
instance O.OverloadedMethodInfo OutputStreamSpliceMethodInfo a where
overloadedMethodInfo :: Maybe ResolvedSymbolInfo
overloadedMethodInfo = ResolvedSymbolInfo -> Maybe ResolvedSymbolInfo
forall a. a -> Maybe a
P.Just (O.ResolvedSymbolInfo {
resolvedSymbolName :: Text
O.resolvedSymbolName = Text
"GI.Gio.Objects.OutputStream.outputStreamSplice",
resolvedSymbolURL :: Text
O.resolvedSymbolURL = Text
"https://hackage.haskell.org/package/gi-gio-2.0.38/docs/GI-Gio-Objects-OutputStream.html#v:outputStreamSplice"
})
#endif
foreign import ccall "g_output_stream_splice_async" g_output_stream_splice_async ::
Ptr OutputStream ->
Ptr Gio.InputStream.InputStream ->
CUInt ->
Int32 ->
Ptr Gio.Cancellable.Cancellable ->
FunPtr Gio.Callbacks.C_AsyncReadyCallback ->
Ptr () ->
IO ()
outputStreamSpliceAsync ::
(B.CallStack.HasCallStack, MonadIO m, IsOutputStream a, Gio.InputStream.IsInputStream b, Gio.Cancellable.IsCancellable c) =>
a
-> b
-> [Gio.Flags.OutputStreamSpliceFlags]
-> Int32
-> Maybe (c)
-> Maybe (Gio.Callbacks.AsyncReadyCallback)
-> m ()
outputStreamSpliceAsync :: forall (m :: * -> *) a b c.
(HasCallStack, MonadIO m, IsOutputStream a, IsInputStream b,
IsCancellable c) =>
a
-> b
-> [OutputStreamSpliceFlags]
-> Int32
-> Maybe c
-> Maybe AsyncReadyCallback
-> m ()
outputStreamSpliceAsync a
stream b
source [OutputStreamSpliceFlags]
flags Int32
ioPriority Maybe c
cancellable Maybe AsyncReadyCallback
callback = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
stream' <- a -> IO (Ptr OutputStream)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
stream
source' <- unsafeManagedPtrCastPtr source
let flags' = [OutputStreamSpliceFlags] -> CUInt
forall b a. (Num b, IsGFlag a) => [a] -> b
gflagsToWord [OutputStreamSpliceFlags]
flags
maybeCancellable <- case cancellable of
Maybe c
Nothing -> Ptr Cancellable -> IO (Ptr Cancellable)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr Cancellable
forall a. Ptr a
FP.nullPtr
Just c
jCancellable -> do
jCancellable' <- c -> IO (Ptr Cancellable)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr c
jCancellable
return jCancellable'
maybeCallback <- case callback of
Maybe AsyncReadyCallback
Nothing -> FunPtr C_AsyncReadyCallback -> IO (FunPtr C_AsyncReadyCallback)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return FunPtr C_AsyncReadyCallback
forall a. FunPtr a
FP.nullFunPtr
Just AsyncReadyCallback
jCallback -> do
ptrcallback <- IO (Ptr (FunPtr C_AsyncReadyCallback))
forall a. Storable a => IO (Ptr a)
callocMem :: IO (Ptr (FunPtr Gio.Callbacks.C_AsyncReadyCallback))
jCallback' <- Gio.Callbacks.mk_AsyncReadyCallback (Gio.Callbacks.wrap_AsyncReadyCallback (Just ptrcallback) (Gio.Callbacks.drop_closures_AsyncReadyCallback jCallback))
poke ptrcallback jCallback'
return jCallback'
let userData = Ptr a
forall a. Ptr a
nullPtr
g_output_stream_splice_async stream' source' flags' ioPriority maybeCancellable maybeCallback userData
touchManagedPtr stream
touchManagedPtr source
whenJust cancellable touchManagedPtr
return ()
#if defined(ENABLE_OVERLOADING)
data OutputStreamSpliceAsyncMethodInfo
instance (signature ~ (b -> [Gio.Flags.OutputStreamSpliceFlags] -> Int32 -> Maybe (c) -> Maybe (Gio.Callbacks.AsyncReadyCallback) -> m ()), MonadIO m, IsOutputStream a, Gio.InputStream.IsInputStream b, Gio.Cancellable.IsCancellable c) => O.OverloadedMethod OutputStreamSpliceAsyncMethodInfo a signature where
overloadedMethod :: a -> signature
overloadedMethod = a -> signature
a
-> b
-> [OutputStreamSpliceFlags]
-> Int32
-> Maybe c
-> Maybe AsyncReadyCallback
-> m ()
forall (m :: * -> *) a b c.
(HasCallStack, MonadIO m, IsOutputStream a, IsInputStream b,
IsCancellable c) =>
a
-> b
-> [OutputStreamSpliceFlags]
-> Int32
-> Maybe c
-> Maybe AsyncReadyCallback
-> m ()
outputStreamSpliceAsync
instance O.OverloadedMethodInfo OutputStreamSpliceAsyncMethodInfo a where
overloadedMethodInfo :: Maybe ResolvedSymbolInfo
overloadedMethodInfo = ResolvedSymbolInfo -> Maybe ResolvedSymbolInfo
forall a. a -> Maybe a
P.Just (O.ResolvedSymbolInfo {
resolvedSymbolName :: Text
O.resolvedSymbolName = Text
"GI.Gio.Objects.OutputStream.outputStreamSpliceAsync",
resolvedSymbolURL :: Text
O.resolvedSymbolURL = Text
"https://hackage.haskell.org/package/gi-gio-2.0.38/docs/GI-Gio-Objects-OutputStream.html#v:outputStreamSpliceAsync"
})
#endif
foreign import ccall "g_output_stream_splice_finish" g_output_stream_splice_finish ::
Ptr OutputStream ->
Ptr Gio.AsyncResult.AsyncResult ->
Ptr (Ptr GError) ->
IO DI.Int64
outputStreamSpliceFinish ::
(B.CallStack.HasCallStack, MonadIO m, IsOutputStream a, Gio.AsyncResult.IsAsyncResult b) =>
a
-> b
-> m DI.Int64
outputStreamSpliceFinish :: forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsOutputStream a, IsAsyncResult b) =>
a -> b -> m Int64
outputStreamSpliceFinish a
stream b
result_ = IO Int64 -> m Int64
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Int64 -> m Int64) -> IO Int64 -> m Int64
forall a b. (a -> b) -> a -> b
$ do
stream' <- a -> IO (Ptr OutputStream)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
stream
result_' <- unsafeManagedPtrCastPtr result_
onException (do
result <- propagateGError $ g_output_stream_splice_finish stream' result_'
touchManagedPtr stream
touchManagedPtr result_
return result
) (do
return ()
)
#if defined(ENABLE_OVERLOADING)
data OutputStreamSpliceFinishMethodInfo
instance (signature ~ (b -> m DI.Int64), MonadIO m, IsOutputStream a, Gio.AsyncResult.IsAsyncResult b) => O.OverloadedMethod OutputStreamSpliceFinishMethodInfo a signature where
overloadedMethod :: a -> signature
overloadedMethod = a -> signature
a -> b -> m Int64
forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsOutputStream a, IsAsyncResult b) =>
a -> b -> m Int64
outputStreamSpliceFinish
instance O.OverloadedMethodInfo OutputStreamSpliceFinishMethodInfo a where
overloadedMethodInfo :: Maybe ResolvedSymbolInfo
overloadedMethodInfo = ResolvedSymbolInfo -> Maybe ResolvedSymbolInfo
forall a. a -> Maybe a
P.Just (O.ResolvedSymbolInfo {
resolvedSymbolName :: Text
O.resolvedSymbolName = Text
"GI.Gio.Objects.OutputStream.outputStreamSpliceFinish",
resolvedSymbolURL :: Text
O.resolvedSymbolURL = Text
"https://hackage.haskell.org/package/gi-gio-2.0.38/docs/GI-Gio-Objects-OutputStream.html#v:outputStreamSpliceFinish"
})
#endif
foreign import ccall "g_output_stream_write" g_output_stream_write ::
Ptr OutputStream ->
Ptr Word8 ->
FCT.CSize ->
Ptr Gio.Cancellable.Cancellable ->
Ptr (Ptr GError) ->
IO DI.Int64
outputStreamWrite ::
(B.CallStack.HasCallStack, MonadIO m, IsOutputStream a, Gio.Cancellable.IsCancellable b) =>
a
-> ByteString
-> Maybe (b)
-> m DI.Int64
outputStreamWrite :: forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsOutputStream a, IsCancellable b) =>
a -> ByteString -> Maybe b -> m Int64
outputStreamWrite a
stream ByteString
buffer Maybe b
cancellable = IO Int64 -> m Int64
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Int64 -> m Int64) -> IO Int64 -> m Int64
forall a b. (a -> b) -> a -> b
$ do
let count :: CSize
count = Int -> CSize
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CSize) -> Int -> CSize
forall a b. (a -> b) -> a -> b
$ ByteString -> Int
B.length ByteString
buffer
stream' <- a -> IO (Ptr OutputStream)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
stream
buffer' <- packByteString buffer
maybeCancellable <- case cancellable of
Maybe b
Nothing -> Ptr Cancellable -> IO (Ptr Cancellable)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr Cancellable
forall a. Ptr a
FP.nullPtr
Just b
jCancellable -> do
jCancellable' <- b -> IO (Ptr Cancellable)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr b
jCancellable
return jCancellable'
onException (do
result <- propagateGError $ g_output_stream_write stream' buffer' count maybeCancellable
touchManagedPtr stream
whenJust cancellable touchManagedPtr
freeMem buffer'
return result
) (do
freeMem buffer'
)
#if defined(ENABLE_OVERLOADING)
data OutputStreamWriteMethodInfo
instance (signature ~ (ByteString -> Maybe (b) -> m DI.Int64), MonadIO m, IsOutputStream a, Gio.Cancellable.IsCancellable b) => O.OverloadedMethod OutputStreamWriteMethodInfo a signature where
overloadedMethod :: a -> signature
overloadedMethod = a -> signature
a -> ByteString -> Maybe b -> m Int64
forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsOutputStream a, IsCancellable b) =>
a -> ByteString -> Maybe b -> m Int64
outputStreamWrite
instance O.OverloadedMethodInfo OutputStreamWriteMethodInfo a where
overloadedMethodInfo :: Maybe ResolvedSymbolInfo
overloadedMethodInfo = ResolvedSymbolInfo -> Maybe ResolvedSymbolInfo
forall a. a -> Maybe a
P.Just (O.ResolvedSymbolInfo {
resolvedSymbolName :: Text
O.resolvedSymbolName = Text
"GI.Gio.Objects.OutputStream.outputStreamWrite",
resolvedSymbolURL :: Text
O.resolvedSymbolURL = Text
"https://hackage.haskell.org/package/gi-gio-2.0.38/docs/GI-Gio-Objects-OutputStream.html#v:outputStreamWrite"
})
#endif
foreign import ccall "g_output_stream_write_all" g_output_stream_write_all ::
Ptr OutputStream ->
Ptr Word8 ->
FCT.CSize ->
Ptr FCT.CSize ->
Ptr Gio.Cancellable.Cancellable ->
Ptr (Ptr GError) ->
IO CInt
outputStreamWriteAll ::
(B.CallStack.HasCallStack, MonadIO m, IsOutputStream a, Gio.Cancellable.IsCancellable b) =>
a
-> ByteString
-> Maybe (b)
-> m (FCT.CSize)
outputStreamWriteAll :: forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsOutputStream a, IsCancellable b) =>
a -> ByteString -> Maybe b -> m CSize
outputStreamWriteAll a
stream ByteString
buffer Maybe b
cancellable = IO CSize -> m CSize
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO CSize -> m CSize) -> IO CSize -> m CSize
forall a b. (a -> b) -> a -> b
$ do
let count :: CSize
count = Int -> CSize
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CSize) -> Int -> CSize
forall a b. (a -> b) -> a -> b
$ ByteString -> Int
B.length ByteString
buffer
stream' <- a -> IO (Ptr OutputStream)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
stream
buffer' <- packByteString buffer
bytesWritten <- allocMem :: IO (Ptr FCT.CSize)
maybeCancellable <- case cancellable of
Maybe b
Nothing -> Ptr Cancellable -> IO (Ptr Cancellable)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr Cancellable
forall a. Ptr a
FP.nullPtr
Just b
jCancellable -> do
jCancellable' <- b -> IO (Ptr Cancellable)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr b
jCancellable
return jCancellable'
onException (do
_ <- propagateGError $ g_output_stream_write_all stream' buffer' count bytesWritten maybeCancellable
bytesWritten' <- peek bytesWritten
touchManagedPtr stream
whenJust cancellable touchManagedPtr
freeMem buffer'
freeMem bytesWritten
return bytesWritten'
) (do
freeMem buffer'
freeMem bytesWritten
)
#if defined(ENABLE_OVERLOADING)
data OutputStreamWriteAllMethodInfo
instance (signature ~ (ByteString -> Maybe (b) -> m (FCT.CSize)), MonadIO m, IsOutputStream a, Gio.Cancellable.IsCancellable b) => O.OverloadedMethod OutputStreamWriteAllMethodInfo a signature where
overloadedMethod :: a -> signature
overloadedMethod = a -> signature
a -> ByteString -> Maybe b -> m CSize
forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsOutputStream a, IsCancellable b) =>
a -> ByteString -> Maybe b -> m CSize
outputStreamWriteAll
instance O.OverloadedMethodInfo OutputStreamWriteAllMethodInfo a where
overloadedMethodInfo :: Maybe ResolvedSymbolInfo
overloadedMethodInfo = ResolvedSymbolInfo -> Maybe ResolvedSymbolInfo
forall a. a -> Maybe a
P.Just (O.ResolvedSymbolInfo {
resolvedSymbolName :: Text
O.resolvedSymbolName = Text
"GI.Gio.Objects.OutputStream.outputStreamWriteAll",
resolvedSymbolURL :: Text
O.resolvedSymbolURL = Text
"https://hackage.haskell.org/package/gi-gio-2.0.38/docs/GI-Gio-Objects-OutputStream.html#v:outputStreamWriteAll"
})
#endif
foreign import ccall "g_output_stream_write_all_async" g_output_stream_write_all_async ::
Ptr OutputStream ->
Ptr Word8 ->
FCT.CSize ->
Int32 ->
Ptr Gio.Cancellable.Cancellable ->
FunPtr Gio.Callbacks.C_AsyncReadyCallback ->
Ptr () ->
IO ()
outputStreamWriteAllAsync ::
(B.CallStack.HasCallStack, MonadIO m, IsOutputStream a, Gio.Cancellable.IsCancellable b) =>
a
-> ByteString
-> Int32
-> Maybe (b)
-> Maybe (Gio.Callbacks.AsyncReadyCallback)
-> m ()
outputStreamWriteAllAsync :: forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsOutputStream a, IsCancellable b) =>
a
-> ByteString
-> Int32
-> Maybe b
-> Maybe AsyncReadyCallback
-> m ()
outputStreamWriteAllAsync a
stream ByteString
buffer Int32
ioPriority Maybe b
cancellable Maybe AsyncReadyCallback
callback = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
let count :: CSize
count = Int -> CSize
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CSize) -> Int -> CSize
forall a b. (a -> b) -> a -> b
$ ByteString -> Int
B.length ByteString
buffer
stream' <- a -> IO (Ptr OutputStream)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
stream
buffer' <- packByteString buffer
maybeCancellable <- case cancellable of
Maybe b
Nothing -> Ptr Cancellable -> IO (Ptr Cancellable)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr Cancellable
forall a. Ptr a
FP.nullPtr
Just b
jCancellable -> do
jCancellable' <- b -> IO (Ptr Cancellable)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr b
jCancellable
return jCancellable'
maybeCallback <- case callback of
Maybe AsyncReadyCallback
Nothing -> FunPtr C_AsyncReadyCallback -> IO (FunPtr C_AsyncReadyCallback)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return FunPtr C_AsyncReadyCallback
forall a. FunPtr a
FP.nullFunPtr
Just AsyncReadyCallback
jCallback -> do
ptrcallback <- IO (Ptr (FunPtr C_AsyncReadyCallback))
forall a. Storable a => IO (Ptr a)
callocMem :: IO (Ptr (FunPtr Gio.Callbacks.C_AsyncReadyCallback))
jCallback' <- Gio.Callbacks.mk_AsyncReadyCallback (Gio.Callbacks.wrap_AsyncReadyCallback (Just ptrcallback) (Gio.Callbacks.drop_closures_AsyncReadyCallback jCallback))
poke ptrcallback jCallback'
return jCallback'
let userData = Ptr a
forall a. Ptr a
nullPtr
g_output_stream_write_all_async stream' buffer' count ioPriority maybeCancellable maybeCallback userData
touchManagedPtr stream
whenJust cancellable touchManagedPtr
freeMem buffer'
return ()
#if defined(ENABLE_OVERLOADING)
data OutputStreamWriteAllAsyncMethodInfo
instance (signature ~ (ByteString -> Int32 -> Maybe (b) -> Maybe (Gio.Callbacks.AsyncReadyCallback) -> m ()), MonadIO m, IsOutputStream a, Gio.Cancellable.IsCancellable b) => O.OverloadedMethod OutputStreamWriteAllAsyncMethodInfo a signature where
overloadedMethod :: a -> signature
overloadedMethod = a -> signature
a
-> ByteString
-> Int32
-> Maybe b
-> Maybe AsyncReadyCallback
-> m ()
forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsOutputStream a, IsCancellable b) =>
a
-> ByteString
-> Int32
-> Maybe b
-> Maybe AsyncReadyCallback
-> m ()
outputStreamWriteAllAsync
instance O.OverloadedMethodInfo OutputStreamWriteAllAsyncMethodInfo a where
overloadedMethodInfo :: Maybe ResolvedSymbolInfo
overloadedMethodInfo = ResolvedSymbolInfo -> Maybe ResolvedSymbolInfo
forall a. a -> Maybe a
P.Just (O.ResolvedSymbolInfo {
resolvedSymbolName :: Text
O.resolvedSymbolName = Text
"GI.Gio.Objects.OutputStream.outputStreamWriteAllAsync",
resolvedSymbolURL :: Text
O.resolvedSymbolURL = Text
"https://hackage.haskell.org/package/gi-gio-2.0.38/docs/GI-Gio-Objects-OutputStream.html#v:outputStreamWriteAllAsync"
})
#endif
foreign import ccall "g_output_stream_write_all_finish" g_output_stream_write_all_finish ::
Ptr OutputStream ->
Ptr Gio.AsyncResult.AsyncResult ->
Ptr FCT.CSize ->
Ptr (Ptr GError) ->
IO CInt
outputStreamWriteAllFinish ::
(B.CallStack.HasCallStack, MonadIO m, IsOutputStream a, Gio.AsyncResult.IsAsyncResult b) =>
a
-> b
-> m (FCT.CSize)
outputStreamWriteAllFinish :: forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsOutputStream a, IsAsyncResult b) =>
a -> b -> m CSize
outputStreamWriteAllFinish a
stream b
result_ = IO CSize -> m CSize
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO CSize -> m CSize) -> IO CSize -> m CSize
forall a b. (a -> b) -> a -> b
$ do
stream' <- a -> IO (Ptr OutputStream)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
stream
result_' <- unsafeManagedPtrCastPtr result_
bytesWritten <- allocMem :: IO (Ptr FCT.CSize)
onException (do
_ <- propagateGError $ g_output_stream_write_all_finish stream' result_' bytesWritten
bytesWritten' <- peek bytesWritten
touchManagedPtr stream
touchManagedPtr result_
freeMem bytesWritten
return bytesWritten'
) (do
freeMem bytesWritten
)
#if defined(ENABLE_OVERLOADING)
data OutputStreamWriteAllFinishMethodInfo
instance (signature ~ (b -> m (FCT.CSize)), MonadIO m, IsOutputStream a, Gio.AsyncResult.IsAsyncResult b) => O.OverloadedMethod OutputStreamWriteAllFinishMethodInfo a signature where
overloadedMethod :: a -> signature
overloadedMethod = a -> signature
a -> b -> m CSize
forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsOutputStream a, IsAsyncResult b) =>
a -> b -> m CSize
outputStreamWriteAllFinish
instance O.OverloadedMethodInfo OutputStreamWriteAllFinishMethodInfo a where
overloadedMethodInfo :: Maybe ResolvedSymbolInfo
overloadedMethodInfo = ResolvedSymbolInfo -> Maybe ResolvedSymbolInfo
forall a. a -> Maybe a
P.Just (O.ResolvedSymbolInfo {
resolvedSymbolName :: Text
O.resolvedSymbolName = Text
"GI.Gio.Objects.OutputStream.outputStreamWriteAllFinish",
resolvedSymbolURL :: Text
O.resolvedSymbolURL = Text
"https://hackage.haskell.org/package/gi-gio-2.0.38/docs/GI-Gio-Objects-OutputStream.html#v:outputStreamWriteAllFinish"
})
#endif
foreign import ccall "g_output_stream_write_async" g_output_stream_write_async ::
Ptr OutputStream ->
Ptr Word8 ->
FCT.CSize ->
Int32 ->
Ptr Gio.Cancellable.Cancellable ->
FunPtr Gio.Callbacks.C_AsyncReadyCallback ->
Ptr () ->
IO ()
outputStreamWriteAsync ::
(B.CallStack.HasCallStack, MonadIO m, IsOutputStream a, Gio.Cancellable.IsCancellable b) =>
a
-> Maybe (ByteString)
-> Int32
-> Maybe (b)
-> Maybe (Gio.Callbacks.AsyncReadyCallback)
-> m ()
outputStreamWriteAsync :: forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsOutputStream a, IsCancellable b) =>
a
-> Maybe ByteString
-> Int32
-> Maybe b
-> Maybe AsyncReadyCallback
-> m ()
outputStreamWriteAsync a
stream Maybe ByteString
buffer Int32
ioPriority Maybe b
cancellable Maybe AsyncReadyCallback
callback = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
let count :: CSize
count = case Maybe ByteString
buffer of
Maybe ByteString
Nothing -> CSize
0
Just ByteString
jBuffer -> Int -> CSize
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CSize) -> Int -> CSize
forall a b. (a -> b) -> a -> b
$ ByteString -> Int
B.length ByteString
jBuffer
stream' <- a -> IO (Ptr OutputStream)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
stream
maybeBuffer <- case buffer of
Maybe ByteString
Nothing -> Ptr Word8 -> IO (Ptr Word8)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr Word8
forall a. Ptr a
FP.nullPtr
Just ByteString
jBuffer -> do
jBuffer' <- ByteString -> IO (Ptr Word8)
packByteString ByteString
jBuffer
return jBuffer'
maybeCancellable <- case cancellable of
Maybe b
Nothing -> Ptr Cancellable -> IO (Ptr Cancellable)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr Cancellable
forall a. Ptr a
FP.nullPtr
Just b
jCancellable -> do
jCancellable' <- b -> IO (Ptr Cancellable)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr b
jCancellable
return jCancellable'
maybeCallback <- case callback of
Maybe AsyncReadyCallback
Nothing -> FunPtr C_AsyncReadyCallback -> IO (FunPtr C_AsyncReadyCallback)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return FunPtr C_AsyncReadyCallback
forall a. FunPtr a
FP.nullFunPtr
Just AsyncReadyCallback
jCallback -> do
ptrcallback <- IO (Ptr (FunPtr C_AsyncReadyCallback))
forall a. Storable a => IO (Ptr a)
callocMem :: IO (Ptr (FunPtr Gio.Callbacks.C_AsyncReadyCallback))
jCallback' <- Gio.Callbacks.mk_AsyncReadyCallback (Gio.Callbacks.wrap_AsyncReadyCallback (Just ptrcallback) (Gio.Callbacks.drop_closures_AsyncReadyCallback jCallback))
poke ptrcallback jCallback'
return jCallback'
let userData = Ptr a
forall a. Ptr a
nullPtr
g_output_stream_write_async stream' maybeBuffer count ioPriority maybeCancellable maybeCallback userData
touchManagedPtr stream
whenJust cancellable touchManagedPtr
freeMem maybeBuffer
return ()
#if defined(ENABLE_OVERLOADING)
data OutputStreamWriteAsyncMethodInfo
instance (signature ~ (Maybe (ByteString) -> Int32 -> Maybe (b) -> Maybe (Gio.Callbacks.AsyncReadyCallback) -> m ()), MonadIO m, IsOutputStream a, Gio.Cancellable.IsCancellable b) => O.OverloadedMethod OutputStreamWriteAsyncMethodInfo a signature where
overloadedMethod :: a -> signature
overloadedMethod = a -> signature
a
-> Maybe ByteString
-> Int32
-> Maybe b
-> Maybe AsyncReadyCallback
-> m ()
forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsOutputStream a, IsCancellable b) =>
a
-> Maybe ByteString
-> Int32
-> Maybe b
-> Maybe AsyncReadyCallback
-> m ()
outputStreamWriteAsync
instance O.OverloadedMethodInfo OutputStreamWriteAsyncMethodInfo a where
overloadedMethodInfo :: Maybe ResolvedSymbolInfo
overloadedMethodInfo = ResolvedSymbolInfo -> Maybe ResolvedSymbolInfo
forall a. a -> Maybe a
P.Just (O.ResolvedSymbolInfo {
resolvedSymbolName :: Text
O.resolvedSymbolName = Text
"GI.Gio.Objects.OutputStream.outputStreamWriteAsync",
resolvedSymbolURL :: Text
O.resolvedSymbolURL = Text
"https://hackage.haskell.org/package/gi-gio-2.0.38/docs/GI-Gio-Objects-OutputStream.html#v:outputStreamWriteAsync"
})
#endif
foreign import ccall "g_output_stream_write_bytes" g_output_stream_write_bytes ::
Ptr OutputStream ->
Ptr GLib.Bytes.Bytes ->
Ptr Gio.Cancellable.Cancellable ->
Ptr (Ptr GError) ->
IO DI.Int64
outputStreamWriteBytes ::
(B.CallStack.HasCallStack, MonadIO m, IsOutputStream a, Gio.Cancellable.IsCancellable b) =>
a
-> GLib.Bytes.Bytes
-> Maybe (b)
-> m DI.Int64
outputStreamWriteBytes :: forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsOutputStream a, IsCancellable b) =>
a -> Bytes -> Maybe b -> m Int64
outputStreamWriteBytes a
stream Bytes
bytes Maybe b
cancellable = IO Int64 -> m Int64
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Int64 -> m Int64) -> IO Int64 -> m Int64
forall a b. (a -> b) -> a -> b
$ do
stream' <- a -> IO (Ptr OutputStream)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
stream
bytes' <- unsafeManagedPtrGetPtr bytes
maybeCancellable <- case cancellable of
Maybe b
Nothing -> Ptr Cancellable -> IO (Ptr Cancellable)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr Cancellable
forall a. Ptr a
FP.nullPtr
Just b
jCancellable -> do
jCancellable' <- b -> IO (Ptr Cancellable)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr b
jCancellable
return jCancellable'
onException (do
result <- propagateGError $ g_output_stream_write_bytes stream' bytes' maybeCancellable
touchManagedPtr stream
touchManagedPtr bytes
whenJust cancellable touchManagedPtr
return result
) (do
return ()
)
#if defined(ENABLE_OVERLOADING)
data OutputStreamWriteBytesMethodInfo
instance (signature ~ (GLib.Bytes.Bytes -> Maybe (b) -> m DI.Int64), MonadIO m, IsOutputStream a, Gio.Cancellable.IsCancellable b) => O.OverloadedMethod OutputStreamWriteBytesMethodInfo a signature where
overloadedMethod :: a -> signature
overloadedMethod = a -> signature
a -> Bytes -> Maybe b -> m Int64
forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsOutputStream a, IsCancellable b) =>
a -> Bytes -> Maybe b -> m Int64
outputStreamWriteBytes
instance O.OverloadedMethodInfo OutputStreamWriteBytesMethodInfo a where
overloadedMethodInfo :: Maybe ResolvedSymbolInfo
overloadedMethodInfo = ResolvedSymbolInfo -> Maybe ResolvedSymbolInfo
forall a. a -> Maybe a
P.Just (O.ResolvedSymbolInfo {
resolvedSymbolName :: Text
O.resolvedSymbolName = Text
"GI.Gio.Objects.OutputStream.outputStreamWriteBytes",
resolvedSymbolURL :: Text
O.resolvedSymbolURL = Text
"https://hackage.haskell.org/package/gi-gio-2.0.38/docs/GI-Gio-Objects-OutputStream.html#v:outputStreamWriteBytes"
})
#endif
foreign import ccall "g_output_stream_write_bytes_async" g_output_stream_write_bytes_async ::
Ptr OutputStream ->
Ptr GLib.Bytes.Bytes ->
Int32 ->
Ptr Gio.Cancellable.Cancellable ->
FunPtr Gio.Callbacks.C_AsyncReadyCallback ->
Ptr () ->
IO ()
outputStreamWriteBytesAsync ::
(B.CallStack.HasCallStack, MonadIO m, IsOutputStream a, Gio.Cancellable.IsCancellable b) =>
a
-> GLib.Bytes.Bytes
-> Int32
-> Maybe (b)
-> Maybe (Gio.Callbacks.AsyncReadyCallback)
-> m ()
outputStreamWriteBytesAsync :: forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsOutputStream a, IsCancellable b) =>
a -> Bytes -> Int32 -> Maybe b -> Maybe AsyncReadyCallback -> m ()
outputStreamWriteBytesAsync a
stream Bytes
bytes Int32
ioPriority Maybe b
cancellable Maybe AsyncReadyCallback
callback = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
stream' <- a -> IO (Ptr OutputStream)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
stream
bytes' <- unsafeManagedPtrGetPtr bytes
maybeCancellable <- case cancellable of
Maybe b
Nothing -> Ptr Cancellable -> IO (Ptr Cancellable)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr Cancellable
forall a. Ptr a
FP.nullPtr
Just b
jCancellable -> do
jCancellable' <- b -> IO (Ptr Cancellable)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr b
jCancellable
return jCancellable'
maybeCallback <- case callback of
Maybe AsyncReadyCallback
Nothing -> FunPtr C_AsyncReadyCallback -> IO (FunPtr C_AsyncReadyCallback)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return FunPtr C_AsyncReadyCallback
forall a. FunPtr a
FP.nullFunPtr
Just AsyncReadyCallback
jCallback -> do
ptrcallback <- IO (Ptr (FunPtr C_AsyncReadyCallback))
forall a. Storable a => IO (Ptr a)
callocMem :: IO (Ptr (FunPtr Gio.Callbacks.C_AsyncReadyCallback))
jCallback' <- Gio.Callbacks.mk_AsyncReadyCallback (Gio.Callbacks.wrap_AsyncReadyCallback (Just ptrcallback) (Gio.Callbacks.drop_closures_AsyncReadyCallback jCallback))
poke ptrcallback jCallback'
return jCallback'
let userData = Ptr a
forall a. Ptr a
nullPtr
g_output_stream_write_bytes_async stream' bytes' ioPriority maybeCancellable maybeCallback userData
touchManagedPtr stream
touchManagedPtr bytes
whenJust cancellable touchManagedPtr
return ()
#if defined(ENABLE_OVERLOADING)
data OutputStreamWriteBytesAsyncMethodInfo
instance (signature ~ (GLib.Bytes.Bytes -> Int32 -> Maybe (b) -> Maybe (Gio.Callbacks.AsyncReadyCallback) -> m ()), MonadIO m, IsOutputStream a, Gio.Cancellable.IsCancellable b) => O.OverloadedMethod OutputStreamWriteBytesAsyncMethodInfo a signature where
overloadedMethod :: a -> signature
overloadedMethod = a -> signature
a -> Bytes -> Int32 -> Maybe b -> Maybe AsyncReadyCallback -> m ()
forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsOutputStream a, IsCancellable b) =>
a -> Bytes -> Int32 -> Maybe b -> Maybe AsyncReadyCallback -> m ()
outputStreamWriteBytesAsync
instance O.OverloadedMethodInfo OutputStreamWriteBytesAsyncMethodInfo a where
overloadedMethodInfo :: Maybe ResolvedSymbolInfo
overloadedMethodInfo = ResolvedSymbolInfo -> Maybe ResolvedSymbolInfo
forall a. a -> Maybe a
P.Just (O.ResolvedSymbolInfo {
resolvedSymbolName :: Text
O.resolvedSymbolName = Text
"GI.Gio.Objects.OutputStream.outputStreamWriteBytesAsync",
resolvedSymbolURL :: Text
O.resolvedSymbolURL = Text
"https://hackage.haskell.org/package/gi-gio-2.0.38/docs/GI-Gio-Objects-OutputStream.html#v:outputStreamWriteBytesAsync"
})
#endif
foreign import ccall "g_output_stream_write_bytes_finish" g_output_stream_write_bytes_finish ::
Ptr OutputStream ->
Ptr Gio.AsyncResult.AsyncResult ->
Ptr (Ptr GError) ->
IO DI.Int64
outputStreamWriteBytesFinish ::
(B.CallStack.HasCallStack, MonadIO m, IsOutputStream a, Gio.AsyncResult.IsAsyncResult b) =>
a
-> b
-> m DI.Int64
outputStreamWriteBytesFinish :: forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsOutputStream a, IsAsyncResult b) =>
a -> b -> m Int64
outputStreamWriteBytesFinish a
stream b
result_ = IO Int64 -> m Int64
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Int64 -> m Int64) -> IO Int64 -> m Int64
forall a b. (a -> b) -> a -> b
$ do
stream' <- a -> IO (Ptr OutputStream)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
stream
result_' <- unsafeManagedPtrCastPtr result_
onException (do
result <- propagateGError $ g_output_stream_write_bytes_finish stream' result_'
touchManagedPtr stream
touchManagedPtr result_
return result
) (do
return ()
)
#if defined(ENABLE_OVERLOADING)
data OutputStreamWriteBytesFinishMethodInfo
instance (signature ~ (b -> m DI.Int64), MonadIO m, IsOutputStream a, Gio.AsyncResult.IsAsyncResult b) => O.OverloadedMethod OutputStreamWriteBytesFinishMethodInfo a signature where
overloadedMethod :: a -> signature
overloadedMethod = a -> signature
a -> b -> m Int64
forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsOutputStream a, IsAsyncResult b) =>
a -> b -> m Int64
outputStreamWriteBytesFinish
instance O.OverloadedMethodInfo OutputStreamWriteBytesFinishMethodInfo a where
overloadedMethodInfo :: Maybe ResolvedSymbolInfo
overloadedMethodInfo = ResolvedSymbolInfo -> Maybe ResolvedSymbolInfo
forall a. a -> Maybe a
P.Just (O.ResolvedSymbolInfo {
resolvedSymbolName :: Text
O.resolvedSymbolName = Text
"GI.Gio.Objects.OutputStream.outputStreamWriteBytesFinish",
resolvedSymbolURL :: Text
O.resolvedSymbolURL = Text
"https://hackage.haskell.org/package/gi-gio-2.0.38/docs/GI-Gio-Objects-OutputStream.html#v:outputStreamWriteBytesFinish"
})
#endif
foreign import ccall "g_output_stream_write_finish" g_output_stream_write_finish ::
Ptr OutputStream ->
Ptr Gio.AsyncResult.AsyncResult ->
Ptr (Ptr GError) ->
IO DI.Int64
outputStreamWriteFinish ::
(B.CallStack.HasCallStack, MonadIO m, IsOutputStream a, Gio.AsyncResult.IsAsyncResult b) =>
a
-> b
-> m DI.Int64
outputStreamWriteFinish :: forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsOutputStream a, IsAsyncResult b) =>
a -> b -> m Int64
outputStreamWriteFinish a
stream b
result_ = IO Int64 -> m Int64
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Int64 -> m Int64) -> IO Int64 -> m Int64
forall a b. (a -> b) -> a -> b
$ do
stream' <- a -> IO (Ptr OutputStream)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
stream
result_' <- unsafeManagedPtrCastPtr result_
onException (do
result <- propagateGError $ g_output_stream_write_finish stream' result_'
touchManagedPtr stream
touchManagedPtr result_
return result
) (do
return ()
)
#if defined(ENABLE_OVERLOADING)
data OutputStreamWriteFinishMethodInfo
instance (signature ~ (b -> m DI.Int64), MonadIO m, IsOutputStream a, Gio.AsyncResult.IsAsyncResult b) => O.OverloadedMethod OutputStreamWriteFinishMethodInfo a signature where
overloadedMethod :: a -> signature
overloadedMethod = a -> signature
a -> b -> m Int64
forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsOutputStream a, IsAsyncResult b) =>
a -> b -> m Int64
outputStreamWriteFinish
instance O.OverloadedMethodInfo OutputStreamWriteFinishMethodInfo a where
overloadedMethodInfo :: Maybe ResolvedSymbolInfo
overloadedMethodInfo = ResolvedSymbolInfo -> Maybe ResolvedSymbolInfo
forall a. a -> Maybe a
P.Just (O.ResolvedSymbolInfo {
resolvedSymbolName :: Text
O.resolvedSymbolName = Text
"GI.Gio.Objects.OutputStream.outputStreamWriteFinish",
resolvedSymbolURL :: Text
O.resolvedSymbolURL = Text
"https://hackage.haskell.org/package/gi-gio-2.0.38/docs/GI-Gio-Objects-OutputStream.html#v:outputStreamWriteFinish"
})
#endif
foreign import ccall "g_output_stream_writev" g_output_stream_writev ::
Ptr OutputStream ->
Ptr Gio.OutputVector.OutputVector ->
FCT.CSize ->
Ptr FCT.CSize ->
Ptr Gio.Cancellable.Cancellable ->
Ptr (Ptr GError) ->
IO CInt
outputStreamWritev ::
(B.CallStack.HasCallStack, MonadIO m, IsOutputStream a, Gio.Cancellable.IsCancellable b) =>
a
-> [Gio.OutputVector.OutputVector]
-> Maybe (b)
-> m (FCT.CSize)
outputStreamWritev :: forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsOutputStream a, IsCancellable b) =>
a -> [OutputVector] -> Maybe b -> m CSize
outputStreamWritev a
stream [OutputVector]
vectors Maybe b
cancellable = IO CSize -> m CSize
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO CSize -> m CSize) -> IO CSize -> m CSize
forall a b. (a -> b) -> a -> b
$ do
let nVectors :: CSize
nVectors = Int -> CSize
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CSize) -> Int -> CSize
forall a b. (a -> b) -> a -> b
$ [OutputVector] -> Int
forall a. [a] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
P.length [OutputVector]
vectors
stream' <- a -> IO (Ptr OutputStream)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
stream
vectors' <- mapM unsafeManagedPtrGetPtr vectors
vectors'' <- packBlockArray 16 vectors'
bytesWritten <- allocMem :: IO (Ptr FCT.CSize)
maybeCancellable <- case cancellable of
Maybe b
Nothing -> Ptr Cancellable -> IO (Ptr Cancellable)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr Cancellable
forall a. Ptr a
FP.nullPtr
Just b
jCancellable -> do
jCancellable' <- b -> IO (Ptr Cancellable)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr b
jCancellable
return jCancellable'
onException (do
_ <- propagateGError $ g_output_stream_writev stream' vectors'' nVectors bytesWritten maybeCancellable
bytesWritten' <- peek bytesWritten
touchManagedPtr stream
mapM_ touchManagedPtr vectors
whenJust cancellable touchManagedPtr
freeMem vectors''
freeMem bytesWritten
return bytesWritten'
) (do
freeMem vectors''
freeMem bytesWritten
)
#if defined(ENABLE_OVERLOADING)
data OutputStreamWritevMethodInfo
instance (signature ~ ([Gio.OutputVector.OutputVector] -> Maybe (b) -> m (FCT.CSize)), MonadIO m, IsOutputStream a, Gio.Cancellable.IsCancellable b) => O.OverloadedMethod OutputStreamWritevMethodInfo a signature where
overloadedMethod :: a -> signature
overloadedMethod = a -> signature
a -> [OutputVector] -> Maybe b -> m CSize
forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsOutputStream a, IsCancellable b) =>
a -> [OutputVector] -> Maybe b -> m CSize
outputStreamWritev
instance O.OverloadedMethodInfo OutputStreamWritevMethodInfo a where
overloadedMethodInfo :: Maybe ResolvedSymbolInfo
overloadedMethodInfo = ResolvedSymbolInfo -> Maybe ResolvedSymbolInfo
forall a. a -> Maybe a
P.Just (O.ResolvedSymbolInfo {
resolvedSymbolName :: Text
O.resolvedSymbolName = Text
"GI.Gio.Objects.OutputStream.outputStreamWritev",
resolvedSymbolURL :: Text
O.resolvedSymbolURL = Text
"https://hackage.haskell.org/package/gi-gio-2.0.38/docs/GI-Gio-Objects-OutputStream.html#v:outputStreamWritev"
})
#endif
foreign import ccall "g_output_stream_writev_all" g_output_stream_writev_all ::
Ptr OutputStream ->
Ptr Gio.OutputVector.OutputVector ->
FCT.CSize ->
Ptr FCT.CSize ->
Ptr Gio.Cancellable.Cancellable ->
Ptr (Ptr GError) ->
IO CInt
outputStreamWritevAll ::
(B.CallStack.HasCallStack, MonadIO m, IsOutputStream a, Gio.Cancellable.IsCancellable b) =>
a
-> [Gio.OutputVector.OutputVector]
-> Maybe (b)
-> m (FCT.CSize)
outputStreamWritevAll :: forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsOutputStream a, IsCancellable b) =>
a -> [OutputVector] -> Maybe b -> m CSize
outputStreamWritevAll a
stream [OutputVector]
vectors Maybe b
cancellable = IO CSize -> m CSize
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO CSize -> m CSize) -> IO CSize -> m CSize
forall a b. (a -> b) -> a -> b
$ do
let nVectors :: CSize
nVectors = Int -> CSize
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CSize) -> Int -> CSize
forall a b. (a -> b) -> a -> b
$ [OutputVector] -> Int
forall a. [a] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
P.length [OutputVector]
vectors
stream' <- a -> IO (Ptr OutputStream)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
stream
vectors' <- mapM unsafeManagedPtrGetPtr vectors
vectors'' <- packBlockArray 16 vectors'
bytesWritten <- allocMem :: IO (Ptr FCT.CSize)
maybeCancellable <- case cancellable of
Maybe b
Nothing -> Ptr Cancellable -> IO (Ptr Cancellable)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr Cancellable
forall a. Ptr a
FP.nullPtr
Just b
jCancellable -> do
jCancellable' <- b -> IO (Ptr Cancellable)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr b
jCancellable
return jCancellable'
onException (do
_ <- propagateGError $ g_output_stream_writev_all stream' vectors'' nVectors bytesWritten maybeCancellable
bytesWritten' <- peek bytesWritten
touchManagedPtr stream
mapM_ touchManagedPtr vectors
whenJust cancellable touchManagedPtr
freeMem vectors''
freeMem bytesWritten
return bytesWritten'
) (do
freeMem vectors''
freeMem bytesWritten
)
#if defined(ENABLE_OVERLOADING)
data OutputStreamWritevAllMethodInfo
instance (signature ~ ([Gio.OutputVector.OutputVector] -> Maybe (b) -> m (FCT.CSize)), MonadIO m, IsOutputStream a, Gio.Cancellable.IsCancellable b) => O.OverloadedMethod OutputStreamWritevAllMethodInfo a signature where
overloadedMethod :: a -> signature
overloadedMethod = a -> signature
a -> [OutputVector] -> Maybe b -> m CSize
forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsOutputStream a, IsCancellable b) =>
a -> [OutputVector] -> Maybe b -> m CSize
outputStreamWritevAll
instance O.OverloadedMethodInfo OutputStreamWritevAllMethodInfo a where
overloadedMethodInfo :: Maybe ResolvedSymbolInfo
overloadedMethodInfo = ResolvedSymbolInfo -> Maybe ResolvedSymbolInfo
forall a. a -> Maybe a
P.Just (O.ResolvedSymbolInfo {
resolvedSymbolName :: Text
O.resolvedSymbolName = Text
"GI.Gio.Objects.OutputStream.outputStreamWritevAll",
resolvedSymbolURL :: Text
O.resolvedSymbolURL = Text
"https://hackage.haskell.org/package/gi-gio-2.0.38/docs/GI-Gio-Objects-OutputStream.html#v:outputStreamWritevAll"
})
#endif
foreign import ccall "g_output_stream_writev_all_async" g_output_stream_writev_all_async ::
Ptr OutputStream ->
Ptr Gio.OutputVector.OutputVector ->
FCT.CSize ->
Int32 ->
Ptr Gio.Cancellable.Cancellable ->
FunPtr Gio.Callbacks.C_AsyncReadyCallback ->
Ptr () ->
IO ()
outputStreamWritevAllAsync ::
(B.CallStack.HasCallStack, MonadIO m, IsOutputStream a, Gio.Cancellable.IsCancellable b) =>
a
-> [Gio.OutputVector.OutputVector]
-> Int32
-> Maybe (b)
-> Maybe (Gio.Callbacks.AsyncReadyCallback)
-> m ()
outputStreamWritevAllAsync :: forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsOutputStream a, IsCancellable b) =>
a
-> [OutputVector]
-> Int32
-> Maybe b
-> Maybe AsyncReadyCallback
-> m ()
outputStreamWritevAllAsync a
stream [OutputVector]
vectors Int32
ioPriority Maybe b
cancellable Maybe AsyncReadyCallback
callback = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
let nVectors :: CSize
nVectors = Int -> CSize
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CSize) -> Int -> CSize
forall a b. (a -> b) -> a -> b
$ [OutputVector] -> Int
forall a. [a] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
P.length [OutputVector]
vectors
stream' <- a -> IO (Ptr OutputStream)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
stream
vectors' <- mapM unsafeManagedPtrGetPtr vectors
vectors'' <- packBlockArray 16 vectors'
maybeCancellable <- case cancellable of
Maybe b
Nothing -> Ptr Cancellable -> IO (Ptr Cancellable)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr Cancellable
forall a. Ptr a
FP.nullPtr
Just b
jCancellable -> do
jCancellable' <- b -> IO (Ptr Cancellable)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr b
jCancellable
return jCancellable'
maybeCallback <- case callback of
Maybe AsyncReadyCallback
Nothing -> FunPtr C_AsyncReadyCallback -> IO (FunPtr C_AsyncReadyCallback)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return FunPtr C_AsyncReadyCallback
forall a. FunPtr a
FP.nullFunPtr
Just AsyncReadyCallback
jCallback -> do
ptrcallback <- IO (Ptr (FunPtr C_AsyncReadyCallback))
forall a. Storable a => IO (Ptr a)
callocMem :: IO (Ptr (FunPtr Gio.Callbacks.C_AsyncReadyCallback))
jCallback' <- Gio.Callbacks.mk_AsyncReadyCallback (Gio.Callbacks.wrap_AsyncReadyCallback (Just ptrcallback) (Gio.Callbacks.drop_closures_AsyncReadyCallback jCallback))
poke ptrcallback jCallback'
return jCallback'
let userData = Ptr a
forall a. Ptr a
nullPtr
g_output_stream_writev_all_async stream' vectors'' nVectors ioPriority maybeCancellable maybeCallback userData
touchManagedPtr stream
mapM_ touchManagedPtr vectors
whenJust cancellable touchManagedPtr
freeMem vectors''
return ()
#if defined(ENABLE_OVERLOADING)
data OutputStreamWritevAllAsyncMethodInfo
instance (signature ~ ([Gio.OutputVector.OutputVector] -> Int32 -> Maybe (b) -> Maybe (Gio.Callbacks.AsyncReadyCallback) -> m ()), MonadIO m, IsOutputStream a, Gio.Cancellable.IsCancellable b) => O.OverloadedMethod OutputStreamWritevAllAsyncMethodInfo a signature where
overloadedMethod :: a -> signature
overloadedMethod = a -> signature
a
-> [OutputVector]
-> Int32
-> Maybe b
-> Maybe AsyncReadyCallback
-> m ()
forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsOutputStream a, IsCancellable b) =>
a
-> [OutputVector]
-> Int32
-> Maybe b
-> Maybe AsyncReadyCallback
-> m ()
outputStreamWritevAllAsync
instance O.OverloadedMethodInfo OutputStreamWritevAllAsyncMethodInfo a where
overloadedMethodInfo :: Maybe ResolvedSymbolInfo
overloadedMethodInfo = ResolvedSymbolInfo -> Maybe ResolvedSymbolInfo
forall a. a -> Maybe a
P.Just (O.ResolvedSymbolInfo {
resolvedSymbolName :: Text
O.resolvedSymbolName = Text
"GI.Gio.Objects.OutputStream.outputStreamWritevAllAsync",
resolvedSymbolURL :: Text
O.resolvedSymbolURL = Text
"https://hackage.haskell.org/package/gi-gio-2.0.38/docs/GI-Gio-Objects-OutputStream.html#v:outputStreamWritevAllAsync"
})
#endif
foreign import ccall "g_output_stream_writev_all_finish" g_output_stream_writev_all_finish ::
Ptr OutputStream ->
Ptr Gio.AsyncResult.AsyncResult ->
Ptr FCT.CSize ->
Ptr (Ptr GError) ->
IO CInt
outputStreamWritevAllFinish ::
(B.CallStack.HasCallStack, MonadIO m, IsOutputStream a, Gio.AsyncResult.IsAsyncResult b) =>
a
-> b
-> m (FCT.CSize)
outputStreamWritevAllFinish :: forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsOutputStream a, IsAsyncResult b) =>
a -> b -> m CSize
outputStreamWritevAllFinish a
stream b
result_ = IO CSize -> m CSize
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO CSize -> m CSize) -> IO CSize -> m CSize
forall a b. (a -> b) -> a -> b
$ do
stream' <- a -> IO (Ptr OutputStream)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
stream
result_' <- unsafeManagedPtrCastPtr result_
bytesWritten <- allocMem :: IO (Ptr FCT.CSize)
onException (do
_ <- propagateGError $ g_output_stream_writev_all_finish stream' result_' bytesWritten
bytesWritten' <- peek bytesWritten
touchManagedPtr stream
touchManagedPtr result_
freeMem bytesWritten
return bytesWritten'
) (do
freeMem bytesWritten
)
#if defined(ENABLE_OVERLOADING)
data OutputStreamWritevAllFinishMethodInfo
instance (signature ~ (b -> m (FCT.CSize)), MonadIO m, IsOutputStream a, Gio.AsyncResult.IsAsyncResult b) => O.OverloadedMethod OutputStreamWritevAllFinishMethodInfo a signature where
overloadedMethod :: a -> signature
overloadedMethod = a -> signature
a -> b -> m CSize
forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsOutputStream a, IsAsyncResult b) =>
a -> b -> m CSize
outputStreamWritevAllFinish
instance O.OverloadedMethodInfo OutputStreamWritevAllFinishMethodInfo a where
overloadedMethodInfo :: Maybe ResolvedSymbolInfo
overloadedMethodInfo = ResolvedSymbolInfo -> Maybe ResolvedSymbolInfo
forall a. a -> Maybe a
P.Just (O.ResolvedSymbolInfo {
resolvedSymbolName :: Text
O.resolvedSymbolName = Text
"GI.Gio.Objects.OutputStream.outputStreamWritevAllFinish",
resolvedSymbolURL :: Text
O.resolvedSymbolURL = Text
"https://hackage.haskell.org/package/gi-gio-2.0.38/docs/GI-Gio-Objects-OutputStream.html#v:outputStreamWritevAllFinish"
})
#endif
foreign import ccall "g_output_stream_writev_async" g_output_stream_writev_async ::
Ptr OutputStream ->
Ptr Gio.OutputVector.OutputVector ->
FCT.CSize ->
Int32 ->
Ptr Gio.Cancellable.Cancellable ->
FunPtr Gio.Callbacks.C_AsyncReadyCallback ->
Ptr () ->
IO ()
outputStreamWritevAsync ::
(B.CallStack.HasCallStack, MonadIO m, IsOutputStream a, Gio.Cancellable.IsCancellable b) =>
a
-> [Gio.OutputVector.OutputVector]
-> Int32
-> Maybe (b)
-> Maybe (Gio.Callbacks.AsyncReadyCallback)
-> m ()
outputStreamWritevAsync :: forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsOutputStream a, IsCancellable b) =>
a
-> [OutputVector]
-> Int32
-> Maybe b
-> Maybe AsyncReadyCallback
-> m ()
outputStreamWritevAsync a
stream [OutputVector]
vectors Int32
ioPriority Maybe b
cancellable Maybe AsyncReadyCallback
callback = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
let nVectors :: CSize
nVectors = Int -> CSize
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CSize) -> Int -> CSize
forall a b. (a -> b) -> a -> b
$ [OutputVector] -> Int
forall a. [a] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
P.length [OutputVector]
vectors
stream' <- a -> IO (Ptr OutputStream)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
stream
vectors' <- mapM unsafeManagedPtrGetPtr vectors
vectors'' <- packBlockArray 16 vectors'
maybeCancellable <- case cancellable of
Maybe b
Nothing -> Ptr Cancellable -> IO (Ptr Cancellable)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr Cancellable
forall a. Ptr a
FP.nullPtr
Just b
jCancellable -> do
jCancellable' <- b -> IO (Ptr Cancellable)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr b
jCancellable
return jCancellable'
maybeCallback <- case callback of
Maybe AsyncReadyCallback
Nothing -> FunPtr C_AsyncReadyCallback -> IO (FunPtr C_AsyncReadyCallback)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return FunPtr C_AsyncReadyCallback
forall a. FunPtr a
FP.nullFunPtr
Just AsyncReadyCallback
jCallback -> do
ptrcallback <- IO (Ptr (FunPtr C_AsyncReadyCallback))
forall a. Storable a => IO (Ptr a)
callocMem :: IO (Ptr (FunPtr Gio.Callbacks.C_AsyncReadyCallback))
jCallback' <- Gio.Callbacks.mk_AsyncReadyCallback (Gio.Callbacks.wrap_AsyncReadyCallback (Just ptrcallback) (Gio.Callbacks.drop_closures_AsyncReadyCallback jCallback))
poke ptrcallback jCallback'
return jCallback'
let userData = Ptr a
forall a. Ptr a
nullPtr
g_output_stream_writev_async stream' vectors'' nVectors ioPriority maybeCancellable maybeCallback userData
touchManagedPtr stream
mapM_ touchManagedPtr vectors
whenJust cancellable touchManagedPtr
freeMem vectors''
return ()
#if defined(ENABLE_OVERLOADING)
data OutputStreamWritevAsyncMethodInfo
instance (signature ~ ([Gio.OutputVector.OutputVector] -> Int32 -> Maybe (b) -> Maybe (Gio.Callbacks.AsyncReadyCallback) -> m ()), MonadIO m, IsOutputStream a, Gio.Cancellable.IsCancellable b) => O.OverloadedMethod OutputStreamWritevAsyncMethodInfo a signature where
overloadedMethod :: a -> signature
overloadedMethod = a -> signature
a
-> [OutputVector]
-> Int32
-> Maybe b
-> Maybe AsyncReadyCallback
-> m ()
forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsOutputStream a, IsCancellable b) =>
a
-> [OutputVector]
-> Int32
-> Maybe b
-> Maybe AsyncReadyCallback
-> m ()
outputStreamWritevAsync
instance O.OverloadedMethodInfo OutputStreamWritevAsyncMethodInfo a where
overloadedMethodInfo :: Maybe ResolvedSymbolInfo
overloadedMethodInfo = ResolvedSymbolInfo -> Maybe ResolvedSymbolInfo
forall a. a -> Maybe a
P.Just (O.ResolvedSymbolInfo {
resolvedSymbolName :: Text
O.resolvedSymbolName = Text
"GI.Gio.Objects.OutputStream.outputStreamWritevAsync",
resolvedSymbolURL :: Text
O.resolvedSymbolURL = Text
"https://hackage.haskell.org/package/gi-gio-2.0.38/docs/GI-Gio-Objects-OutputStream.html#v:outputStreamWritevAsync"
})
#endif
foreign import ccall "g_output_stream_writev_finish" g_output_stream_writev_finish ::
Ptr OutputStream ->
Ptr Gio.AsyncResult.AsyncResult ->
Ptr FCT.CSize ->
Ptr (Ptr GError) ->
IO CInt
outputStreamWritevFinish ::
(B.CallStack.HasCallStack, MonadIO m, IsOutputStream a, Gio.AsyncResult.IsAsyncResult b) =>
a
-> b
-> m (FCT.CSize)
outputStreamWritevFinish :: forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsOutputStream a, IsAsyncResult b) =>
a -> b -> m CSize
outputStreamWritevFinish a
stream b
result_ = IO CSize -> m CSize
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO CSize -> m CSize) -> IO CSize -> m CSize
forall a b. (a -> b) -> a -> b
$ do
stream' <- a -> IO (Ptr OutputStream)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
stream
result_' <- unsafeManagedPtrCastPtr result_
bytesWritten <- allocMem :: IO (Ptr FCT.CSize)
onException (do
_ <- propagateGError $ g_output_stream_writev_finish stream' result_' bytesWritten
bytesWritten' <- peek bytesWritten
touchManagedPtr stream
touchManagedPtr result_
freeMem bytesWritten
return bytesWritten'
) (do
freeMem bytesWritten
)
#if defined(ENABLE_OVERLOADING)
data OutputStreamWritevFinishMethodInfo
instance (signature ~ (b -> m (FCT.CSize)), MonadIO m, IsOutputStream a, Gio.AsyncResult.IsAsyncResult b) => O.OverloadedMethod OutputStreamWritevFinishMethodInfo a signature where
overloadedMethod :: a -> signature
overloadedMethod = a -> signature
a -> b -> m CSize
forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsOutputStream a, IsAsyncResult b) =>
a -> b -> m CSize
outputStreamWritevFinish
instance O.OverloadedMethodInfo OutputStreamWritevFinishMethodInfo a where
overloadedMethodInfo :: Maybe ResolvedSymbolInfo
overloadedMethodInfo = ResolvedSymbolInfo -> Maybe ResolvedSymbolInfo
forall a. a -> Maybe a
P.Just (O.ResolvedSymbolInfo {
resolvedSymbolName :: Text
O.resolvedSymbolName = Text
"GI.Gio.Objects.OutputStream.outputStreamWritevFinish",
resolvedSymbolURL :: Text
O.resolvedSymbolURL = Text
"https://hackage.haskell.org/package/gi-gio-2.0.38/docs/GI-Gio-Objects-OutputStream.html#v:outputStreamWritevFinish"
})
#endif