{-# LANGUAGE TypeApplications #-}
#if (MIN_VERSION_haskell_gi_overloading(1,0,0) && !defined(__HADDOCK_VERSION__))
#define ENABLE_OVERLOADING
#endif
module GI.Gio.Objects.FileIOStream
(
FileIOStream(..) ,
IsFileIOStream ,
toFileIOStream ,
#if defined(ENABLE_OVERLOADING)
ResolveFileIOStreamMethod ,
#endif
#if defined(ENABLE_OVERLOADING)
FileIOStreamGetEtagMethodInfo ,
#endif
fileIOStreamGetEtag ,
#if defined(ENABLE_OVERLOADING)
FileIOStreamQueryInfoMethodInfo ,
#endif
fileIOStreamQueryInfo ,
#if defined(ENABLE_OVERLOADING)
FileIOStreamQueryInfoAsyncMethodInfo ,
#endif
fileIOStreamQueryInfoAsync ,
#if defined(ENABLE_OVERLOADING)
FileIOStreamQueryInfoFinishMethodInfo ,
#endif
fileIOStreamQueryInfoFinish ,
) 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 GI.GObject.Objects.Object as GObject.Object
import qualified GI.Gio.Callbacks as Gio.Callbacks
import {-# SOURCE #-} qualified GI.Gio.Interfaces.AsyncResult as Gio.AsyncResult
import {-# SOURCE #-} qualified GI.Gio.Interfaces.Seekable as Gio.Seekable
import {-# SOURCE #-} qualified GI.Gio.Objects.Cancellable as Gio.Cancellable
import {-# SOURCE #-} qualified GI.Gio.Objects.FileInfo as Gio.FileInfo
import {-# SOURCE #-} qualified GI.Gio.Objects.IOStream as Gio.IOStream
newtype FileIOStream = FileIOStream (SP.ManagedPtr FileIOStream)
deriving (FileIOStream -> FileIOStream -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: FileIOStream -> FileIOStream -> Bool
$c/= :: FileIOStream -> FileIOStream -> Bool
== :: FileIOStream -> FileIOStream -> Bool
$c== :: FileIOStream -> FileIOStream -> Bool
Eq)
instance SP.ManagedPtrNewtype FileIOStream where
toManagedPtr :: FileIOStream -> ManagedPtr FileIOStream
toManagedPtr (FileIOStream ManagedPtr FileIOStream
p) = ManagedPtr FileIOStream
p
foreign import ccall "g_file_io_stream_get_type"
c_g_file_io_stream_get_type :: IO B.Types.GType
instance B.Types.TypedObject FileIOStream where
glibType :: IO GType
glibType = IO GType
c_g_file_io_stream_get_type
instance B.Types.GObject FileIOStream
class (SP.GObject o, O.IsDescendantOf FileIOStream o) => IsFileIOStream o
instance (SP.GObject o, O.IsDescendantOf FileIOStream o) => IsFileIOStream o
instance O.HasParentTypes FileIOStream
type instance O.ParentTypes FileIOStream = '[Gio.IOStream.IOStream, GObject.Object.Object, Gio.Seekable.Seekable]
toFileIOStream :: (MIO.MonadIO m, IsFileIOStream o) => o -> m FileIOStream
toFileIOStream :: forall (m :: * -> *) o.
(MonadIO m, IsFileIOStream o) =>
o -> m FileIOStream
toFileIOStream = forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall o o'.
(HasCallStack, ManagedPtrNewtype o, TypedObject o,
ManagedPtrNewtype o', TypedObject o') =>
(ManagedPtr o' -> o') -> o -> IO o'
B.ManagedPtr.unsafeCastTo ManagedPtr FileIOStream -> FileIOStream
FileIOStream
instance B.GValue.IsGValue (Maybe FileIOStream) where
gvalueGType_ :: IO GType
gvalueGType_ = IO GType
c_g_file_io_stream_get_type
gvalueSet_ :: Ptr GValue -> Maybe FileIOStream -> IO ()
gvalueSet_ Ptr GValue
gv Maybe FileIOStream
P.Nothing = forall a. GObject a => Ptr GValue -> Ptr a -> IO ()
B.GValue.set_object Ptr GValue
gv (forall a. Ptr a
FP.nullPtr :: FP.Ptr FileIOStream)
gvalueSet_ Ptr GValue
gv (P.Just FileIOStream
obj) = forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
B.ManagedPtr.withManagedPtr FileIOStream
obj (forall a. GObject a => Ptr GValue -> Ptr a -> IO ()
B.GValue.set_object Ptr GValue
gv)
gvalueGet_ :: Ptr GValue -> IO (Maybe FileIOStream)
gvalueGet_ Ptr GValue
gv = do
Ptr FileIOStream
ptr <- forall a. GObject a => Ptr GValue -> IO (Ptr a)
B.GValue.get_object Ptr GValue
gv :: IO (FP.Ptr FileIOStream)
if Ptr FileIOStream
ptr forall a. Eq a => a -> a -> Bool
/= forall a. Ptr a
FP.nullPtr
then forall a. a -> Maybe a
P.Just forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
B.ManagedPtr.newObject ManagedPtr FileIOStream -> FileIOStream
FileIOStream Ptr FileIOStream
ptr
else forall (m :: * -> *) a. Monad m => a -> m a
return forall a. Maybe a
P.Nothing
#if defined(ENABLE_OVERLOADING)
type family ResolveFileIOStreamMethod (t :: Symbol) (o :: DK.Type) :: DK.Type where
ResolveFileIOStreamMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
ResolveFileIOStreamMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
ResolveFileIOStreamMethod "canSeek" o = Gio.Seekable.SeekableCanSeekMethodInfo
ResolveFileIOStreamMethod "canTruncate" o = Gio.Seekable.SeekableCanTruncateMethodInfo
ResolveFileIOStreamMethod "clearPending" o = Gio.IOStream.IOStreamClearPendingMethodInfo
ResolveFileIOStreamMethod "close" o = Gio.IOStream.IOStreamCloseMethodInfo
ResolveFileIOStreamMethod "closeAsync" o = Gio.IOStream.IOStreamCloseAsyncMethodInfo
ResolveFileIOStreamMethod "closeFinish" o = Gio.IOStream.IOStreamCloseFinishMethodInfo
ResolveFileIOStreamMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
ResolveFileIOStreamMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
ResolveFileIOStreamMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
ResolveFileIOStreamMethod "hasPending" o = Gio.IOStream.IOStreamHasPendingMethodInfo
ResolveFileIOStreamMethod "isClosed" o = Gio.IOStream.IOStreamIsClosedMethodInfo
ResolveFileIOStreamMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
ResolveFileIOStreamMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
ResolveFileIOStreamMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
ResolveFileIOStreamMethod "queryInfo" o = FileIOStreamQueryInfoMethodInfo
ResolveFileIOStreamMethod "queryInfoAsync" o = FileIOStreamQueryInfoAsyncMethodInfo
ResolveFileIOStreamMethod "queryInfoFinish" o = FileIOStreamQueryInfoFinishMethodInfo
ResolveFileIOStreamMethod "ref" o = GObject.Object.ObjectRefMethodInfo
ResolveFileIOStreamMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
ResolveFileIOStreamMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
ResolveFileIOStreamMethod "seek" o = Gio.Seekable.SeekableSeekMethodInfo
ResolveFileIOStreamMethod "spliceAsync" o = Gio.IOStream.IOStreamSpliceAsyncMethodInfo
ResolveFileIOStreamMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
ResolveFileIOStreamMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
ResolveFileIOStreamMethod "tell" o = Gio.Seekable.SeekableTellMethodInfo
ResolveFileIOStreamMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
ResolveFileIOStreamMethod "truncate" o = Gio.Seekable.SeekableTruncateMethodInfo
ResolveFileIOStreamMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
ResolveFileIOStreamMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
ResolveFileIOStreamMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
ResolveFileIOStreamMethod "getEtag" o = FileIOStreamGetEtagMethodInfo
ResolveFileIOStreamMethod "getInputStream" o = Gio.IOStream.IOStreamGetInputStreamMethodInfo
ResolveFileIOStreamMethod "getOutputStream" o = Gio.IOStream.IOStreamGetOutputStreamMethodInfo
ResolveFileIOStreamMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
ResolveFileIOStreamMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
ResolveFileIOStreamMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
ResolveFileIOStreamMethod "setDataFull" o = GObject.Object.ObjectSetDataFullMethodInfo
ResolveFileIOStreamMethod "setPending" o = Gio.IOStream.IOStreamSetPendingMethodInfo
ResolveFileIOStreamMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
ResolveFileIOStreamMethod l o = O.MethodResolutionFailed l o
instance (info ~ ResolveFileIOStreamMethod t FileIOStream, O.OverloadedMethod info FileIOStream p) => OL.IsLabel t (FileIOStream -> p) where
#if MIN_VERSION_base(4,10,0)
fromLabel = O.overloadedMethod @info
#else
fromLabel _ = O.overloadedMethod @info
#endif
#if MIN_VERSION_base(4,13,0)
instance (info ~ ResolveFileIOStreamMethod t FileIOStream, O.OverloadedMethod info FileIOStream p, R.HasField t FileIOStream p) => R.HasField t FileIOStream p where
getField = O.overloadedMethod @info
#endif
instance (info ~ ResolveFileIOStreamMethod t FileIOStream, O.OverloadedMethodInfo info FileIOStream) => OL.IsLabel t (O.MethodProxy info FileIOStream) where
#if MIN_VERSION_base(4,10,0)
fromLabel = O.MethodProxy
#else
fromLabel _ = O.MethodProxy
#endif
#endif
#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList FileIOStream
type instance O.AttributeList FileIOStream = FileIOStreamAttributeList
type FileIOStreamAttributeList = ('[ '("closed", Gio.IOStream.IOStreamClosedPropertyInfo), '("inputStream", Gio.IOStream.IOStreamInputStreamPropertyInfo), '("outputStream", Gio.IOStream.IOStreamOutputStreamPropertyInfo)] :: [(Symbol, DK.Type)])
#endif
#if defined(ENABLE_OVERLOADING)
#endif
#if defined(ENABLE_OVERLOADING)
type instance O.SignalList FileIOStream = FileIOStreamSignalList
type FileIOStreamSignalList = ('[ '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, DK.Type)])
#endif
foreign import ccall "g_file_io_stream_get_etag" g_file_io_stream_get_etag ::
Ptr FileIOStream ->
IO CString
fileIOStreamGetEtag ::
(B.CallStack.HasCallStack, MonadIO m, IsFileIOStream a) =>
a
-> m (Maybe T.Text)
fileIOStreamGetEtag :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsFileIOStream a) =>
a -> m (Maybe Text)
fileIOStreamGetEtag a
stream = forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO forall a b. (a -> b) -> a -> b
$ do
Ptr FileIOStream
stream' <- forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
stream
CString
result <- Ptr FileIOStream -> IO CString
g_file_io_stream_get_etag Ptr FileIOStream
stream'
Maybe Text
maybeResult <- forall a b. Ptr a -> (Ptr a -> IO b) -> IO (Maybe b)
convertIfNonNull CString
result forall a b. (a -> b) -> a -> b
$ \CString
result' -> do
Text
result'' <- HasCallStack => CString -> IO Text
cstringToText CString
result'
forall a. Ptr a -> IO ()
freeMem CString
result'
forall (m :: * -> *) a. Monad m => a -> m a
return Text
result''
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
stream
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe Text
maybeResult
#if defined(ENABLE_OVERLOADING)
data FileIOStreamGetEtagMethodInfo
instance (signature ~ (m (Maybe T.Text)), MonadIO m, IsFileIOStream a) => O.OverloadedMethod FileIOStreamGetEtagMethodInfo a signature where
overloadedMethod = fileIOStreamGetEtag
instance O.OverloadedMethodInfo FileIOStreamGetEtagMethodInfo a where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.Gio.Objects.FileIOStream.fileIOStreamGetEtag",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gio-2.0.30/docs/GI-Gio-Objects-FileIOStream.html#v:fileIOStreamGetEtag"
})
#endif
foreign import ccall "g_file_io_stream_query_info" g_file_io_stream_query_info ::
Ptr FileIOStream ->
CString ->
Ptr Gio.Cancellable.Cancellable ->
Ptr (Ptr GError) ->
IO (Ptr Gio.FileInfo.FileInfo)
fileIOStreamQueryInfo ::
(B.CallStack.HasCallStack, MonadIO m, IsFileIOStream a, Gio.Cancellable.IsCancellable b) =>
a
-> T.Text
-> Maybe (b)
-> m Gio.FileInfo.FileInfo
fileIOStreamQueryInfo :: forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsFileIOStream a, IsCancellable b) =>
a -> Text -> Maybe b -> m FileInfo
fileIOStreamQueryInfo a
stream Text
attributes Maybe b
cancellable = forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO forall a b. (a -> b) -> a -> b
$ do
Ptr FileIOStream
stream' <- forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
stream
CString
attributes' <- Text -> IO CString
textToCString Text
attributes
Ptr Cancellable
maybeCancellable <- case Maybe b
cancellable of
Maybe b
Nothing -> forall (m :: * -> *) a. Monad m => a -> m a
return forall a. Ptr a
nullPtr
Just b
jCancellable -> do
Ptr Cancellable
jCancellable' <- forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr b
jCancellable
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr Cancellable
jCancellable'
forall a b. IO a -> IO b -> IO a
onException (do
Ptr FileInfo
result <- forall a. (Ptr (Ptr GError) -> IO a) -> IO a
propagateGError forall a b. (a -> b) -> a -> b
$ Ptr FileIOStream
-> CString
-> Ptr Cancellable
-> Ptr (Ptr GError)
-> IO (Ptr FileInfo)
g_file_io_stream_query_info Ptr FileIOStream
stream' CString
attributes' Ptr Cancellable
maybeCancellable
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"fileIOStreamQueryInfo" Ptr FileInfo
result
FileInfo
result' <- (forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
wrapObject ManagedPtr FileInfo -> FileInfo
Gio.FileInfo.FileInfo) Ptr FileInfo
result
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
stream
forall (m :: * -> *) a. Monad m => Maybe a -> (a -> m ()) -> m ()
whenJust Maybe b
cancellable forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr
forall a. Ptr a -> IO ()
freeMem CString
attributes'
forall (m :: * -> *) a. Monad m => a -> m a
return FileInfo
result'
) (do
forall a. Ptr a -> IO ()
freeMem CString
attributes'
)
#if defined(ENABLE_OVERLOADING)
data FileIOStreamQueryInfoMethodInfo
instance (signature ~ (T.Text -> Maybe (b) -> m Gio.FileInfo.FileInfo), MonadIO m, IsFileIOStream a, Gio.Cancellable.IsCancellable b) => O.OverloadedMethod FileIOStreamQueryInfoMethodInfo a signature where
overloadedMethod = fileIOStreamQueryInfo
instance O.OverloadedMethodInfo FileIOStreamQueryInfoMethodInfo a where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.Gio.Objects.FileIOStream.fileIOStreamQueryInfo",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gio-2.0.30/docs/GI-Gio-Objects-FileIOStream.html#v:fileIOStreamQueryInfo"
})
#endif
foreign import ccall "g_file_io_stream_query_info_async" g_file_io_stream_query_info_async ::
Ptr FileIOStream ->
CString ->
Int32 ->
Ptr Gio.Cancellable.Cancellable ->
FunPtr Gio.Callbacks.C_AsyncReadyCallback ->
Ptr () ->
IO ()
fileIOStreamQueryInfoAsync ::
(B.CallStack.HasCallStack, MonadIO m, IsFileIOStream a, Gio.Cancellable.IsCancellable b) =>
a
-> T.Text
-> Int32
-> Maybe (b)
-> Maybe (Gio.Callbacks.AsyncReadyCallback)
-> m ()
fileIOStreamQueryInfoAsync :: forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsFileIOStream a, IsCancellable b) =>
a -> Text -> Int32 -> Maybe b -> Maybe AsyncReadyCallback -> m ()
fileIOStreamQueryInfoAsync a
stream Text
attributes Int32
ioPriority Maybe b
cancellable Maybe AsyncReadyCallback
callback = forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO forall a b. (a -> b) -> a -> b
$ do
Ptr FileIOStream
stream' <- forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
stream
CString
attributes' <- Text -> IO CString
textToCString Text
attributes
Ptr Cancellable
maybeCancellable <- case Maybe b
cancellable of
Maybe b
Nothing -> forall (m :: * -> *) a. Monad m => a -> m a
return forall a. Ptr a
nullPtr
Just b
jCancellable -> do
Ptr Cancellable
jCancellable' <- forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr b
jCancellable
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr Cancellable
jCancellable'
FunPtr C_AsyncReadyCallback
maybeCallback <- case Maybe AsyncReadyCallback
callback of
Maybe AsyncReadyCallback
Nothing -> forall (m :: * -> *) a. Monad m => a -> m a
return (forall a b. Ptr a -> FunPtr b
castPtrToFunPtr forall a. Ptr a
nullPtr)
Just AsyncReadyCallback
jCallback -> do
Ptr (FunPtr C_AsyncReadyCallback)
ptrcallback <- forall a. Storable a => IO (Ptr a)
callocMem :: IO (Ptr (FunPtr Gio.Callbacks.C_AsyncReadyCallback))
FunPtr C_AsyncReadyCallback
jCallback' <- C_AsyncReadyCallback -> IO (FunPtr C_AsyncReadyCallback)
Gio.Callbacks.mk_AsyncReadyCallback (Maybe (Ptr (FunPtr C_AsyncReadyCallback))
-> AsyncReadyCallback -> C_AsyncReadyCallback
Gio.Callbacks.wrap_AsyncReadyCallback (forall a. a -> Maybe a
Just Ptr (FunPtr C_AsyncReadyCallback)
ptrcallback) AsyncReadyCallback
jCallback)
forall a. Storable a => Ptr a -> a -> IO ()
poke Ptr (FunPtr C_AsyncReadyCallback)
ptrcallback FunPtr C_AsyncReadyCallback
jCallback'
forall (m :: * -> *) a. Monad m => a -> m a
return FunPtr C_AsyncReadyCallback
jCallback'
let userData :: Ptr a
userData = forall a. Ptr a
nullPtr
Ptr FileIOStream
-> CString
-> Int32
-> Ptr Cancellable
-> FunPtr C_AsyncReadyCallback
-> Ptr ()
-> IO ()
g_file_io_stream_query_info_async Ptr FileIOStream
stream' CString
attributes' Int32
ioPriority Ptr Cancellable
maybeCancellable FunPtr C_AsyncReadyCallback
maybeCallback forall a. Ptr a
userData
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
stream
forall (m :: * -> *) a. Monad m => Maybe a -> (a -> m ()) -> m ()
whenJust Maybe b
cancellable forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr
forall a. Ptr a -> IO ()
freeMem CString
attributes'
forall (m :: * -> *) a. Monad m => a -> m a
return ()
#if defined(ENABLE_OVERLOADING)
data FileIOStreamQueryInfoAsyncMethodInfo
instance (signature ~ (T.Text -> Int32 -> Maybe (b) -> Maybe (Gio.Callbacks.AsyncReadyCallback) -> m ()), MonadIO m, IsFileIOStream a, Gio.Cancellable.IsCancellable b) => O.OverloadedMethod FileIOStreamQueryInfoAsyncMethodInfo a signature where
overloadedMethod = fileIOStreamQueryInfoAsync
instance O.OverloadedMethodInfo FileIOStreamQueryInfoAsyncMethodInfo a where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.Gio.Objects.FileIOStream.fileIOStreamQueryInfoAsync",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gio-2.0.30/docs/GI-Gio-Objects-FileIOStream.html#v:fileIOStreamQueryInfoAsync"
})
#endif
foreign import ccall "g_file_io_stream_query_info_finish" g_file_io_stream_query_info_finish ::
Ptr FileIOStream ->
Ptr Gio.AsyncResult.AsyncResult ->
Ptr (Ptr GError) ->
IO (Ptr Gio.FileInfo.FileInfo)
fileIOStreamQueryInfoFinish ::
(B.CallStack.HasCallStack, MonadIO m, IsFileIOStream a, Gio.AsyncResult.IsAsyncResult b) =>
a
-> b
-> m Gio.FileInfo.FileInfo
fileIOStreamQueryInfoFinish :: forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsFileIOStream a, IsAsyncResult b) =>
a -> b -> m FileInfo
fileIOStreamQueryInfoFinish a
stream b
result_ = forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO forall a b. (a -> b) -> a -> b
$ do
Ptr FileIOStream
stream' <- forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
stream
Ptr AsyncResult
result_' <- forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr b
result_
forall a b. IO a -> IO b -> IO a
onException (do
Ptr FileInfo
result <- forall a. (Ptr (Ptr GError) -> IO a) -> IO a
propagateGError forall a b. (a -> b) -> a -> b
$ Ptr FileIOStream
-> Ptr AsyncResult -> Ptr (Ptr GError) -> IO (Ptr FileInfo)
g_file_io_stream_query_info_finish Ptr FileIOStream
stream' Ptr AsyncResult
result_'
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"fileIOStreamQueryInfoFinish" Ptr FileInfo
result
FileInfo
result' <- (forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
wrapObject ManagedPtr FileInfo -> FileInfo
Gio.FileInfo.FileInfo) Ptr FileInfo
result
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
stream
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr b
result_
forall (m :: * -> *) a. Monad m => a -> m a
return FileInfo
result'
) (do
forall (m :: * -> *) a. Monad m => a -> m a
return ()
)
#if defined(ENABLE_OVERLOADING)
data FileIOStreamQueryInfoFinishMethodInfo
instance (signature ~ (b -> m Gio.FileInfo.FileInfo), MonadIO m, IsFileIOStream a, Gio.AsyncResult.IsAsyncResult b) => O.OverloadedMethod FileIOStreamQueryInfoFinishMethodInfo a signature where
overloadedMethod = fileIOStreamQueryInfoFinish
instance O.OverloadedMethodInfo FileIOStreamQueryInfoFinishMethodInfo a where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.Gio.Objects.FileIOStream.fileIOStreamQueryInfoFinish",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gio-2.0.30/docs/GI-Gio-Objects-FileIOStream.html#v:fileIOStreamQueryInfoFinish"
})
#endif