{- | Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte License : LGPL-2.1 Maintainer : Iñaki García Etxebarria (inaki@blueleaf.cc) GFileIOStream provides io streams that both read and write to the same file handle. GFileIOStream implements 'GI.Gio.Interfaces.Seekable.Seekable', which allows the io stream to jump to arbitrary positions in the file and to truncate the file, provided the filesystem of the file supports these operations. To find the position of a file io stream, use 'GI.Gio.Interfaces.Seekable.seekableTell'. To find out if a file io stream supports seeking, use 'GI.Gio.Interfaces.Seekable.seekableCanSeek'. To position a file io stream, use 'GI.Gio.Interfaces.Seekable.seekableSeek'. To find out if a file io stream supports truncating, use 'GI.Gio.Interfaces.Seekable.seekableCanTruncate'. To truncate a file io stream, use 'GI.Gio.Interfaces.Seekable.seekableTruncate'. The default implementation of all the 'GI.Gio.Objects.FileIOStream.FileIOStream' operations and the implementation of 'GI.Gio.Interfaces.Seekable.Seekable' just call into the same operations on the output stream. /Since: 2.22/ -} #define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \ && !defined(__HADDOCK_VERSION__)) module GI.Gio.Objects.FileIOStream ( -- * Exported types FileIOStream(..) , IsFileIOStream , toFileIOStream , noFileIOStream , -- * Methods -- ** getEtag #method:getEtag# #if ENABLE_OVERLOADING FileIOStreamGetEtagMethodInfo , #endif fileIOStreamGetEtag , -- ** queryInfo #method:queryInfo# #if ENABLE_OVERLOADING FileIOStreamQueryInfoMethodInfo , #endif fileIOStreamQueryInfo , -- ** queryInfoAsync #method:queryInfoAsync# #if ENABLE_OVERLOADING FileIOStreamQueryInfoAsyncMethodInfo , #endif fileIOStreamQueryInfoAsync , -- ** queryInfoFinish #method:queryInfoFinish# #if 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.ManagedPtr as B.ManagedPtr import qualified Data.GI.Base.GClosure as B.GClosure import qualified Data.GI.Base.GError as B.GError 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.Text as T 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 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 -- | Memory-managed wrapper type. newtype FileIOStream = FileIOStream (ManagedPtr FileIOStream) foreign import ccall "g_file_io_stream_get_type" c_g_file_io_stream_get_type :: IO GType instance GObject FileIOStream where gobjectType = c_g_file_io_stream_get_type -- | Type class for types which can be safely cast to `FileIOStream`, for instance with `toFileIOStream`. class (GObject o, O.IsDescendantOf FileIOStream o) => IsFileIOStream o instance (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] -- | Cast to `FileIOStream`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`. toFileIOStream :: (MonadIO m, IsFileIOStream o) => o -> m FileIOStream toFileIOStream = liftIO . unsafeCastTo FileIOStream -- | A convenience alias for `Nothing` :: `Maybe` `FileIOStream`. noFileIOStream :: Maybe FileIOStream noFileIOStream = Nothing #if ENABLE_OVERLOADING type family ResolveFileIOStreamMethod (t :: Symbol) (o :: *) :: * 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 "setPending" o = Gio.IOStream.IOStreamSetPendingMethodInfo ResolveFileIOStreamMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo ResolveFileIOStreamMethod l o = O.MethodResolutionFailed l o instance (info ~ ResolveFileIOStreamMethod t FileIOStream, O.MethodInfo info FileIOStream p) => OL.IsLabel t (FileIOStream -> p) where #if MIN_VERSION_base(4,10,0) fromLabel = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info) #else fromLabel _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info) #endif #endif #if 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, *)]) #endif #if ENABLE_OVERLOADING #endif #if ENABLE_OVERLOADING type instance O.SignalList FileIOStream = FileIOStreamSignalList type FileIOStreamSignalList = ('[ '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, *)]) #endif -- method FileIOStream::get_etag -- method type : OrdinaryMethod -- Args : [Arg {argCName = "stream", argType = TInterface (Name {namespace = "Gio", name = "FileIOStream"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GFileIOStream.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TUTF8) -- throws : False -- Skip return : False foreign import ccall "g_file_io_stream_get_etag" g_file_io_stream_get_etag :: Ptr FileIOStream -> -- stream : TInterface (Name {namespace = "Gio", name = "FileIOStream"}) IO CString {- | Gets the entity tag for the file when it has been written. This must be called after the stream has been written and closed, as the etag can change while writing. /Since: 2.22/ -} fileIOStreamGetEtag :: (B.CallStack.HasCallStack, MonadIO m, IsFileIOStream a) => a {- ^ /@stream@/: a 'GI.Gio.Objects.FileIOStream.FileIOStream'. -} -> m T.Text {- ^ __Returns:__ the entity tag for the stream. -} fileIOStreamGetEtag stream = liftIO $ do stream' <- unsafeManagedPtrCastPtr stream result <- g_file_io_stream_get_etag stream' checkUnexpectedReturnNULL "fileIOStreamGetEtag" result result' <- cstringToText result freeMem result touchManagedPtr stream return result' #if ENABLE_OVERLOADING data FileIOStreamGetEtagMethodInfo instance (signature ~ (m T.Text), MonadIO m, IsFileIOStream a) => O.MethodInfo FileIOStreamGetEtagMethodInfo a signature where overloadedMethod _ = fileIOStreamGetEtag #endif -- method FileIOStream::query_info -- method type : OrdinaryMethod -- Args : [Arg {argCName = "stream", argType = TInterface (Name {namespace = "Gio", name = "FileIOStream"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GFileIOStream.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attributes", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a file attribute query string.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "cancellable", argType = TInterface (Name {namespace = "Gio", name = "Cancellable"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "optional #GCancellable object, %NULL to ignore.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gio", name = "FileInfo"})) -- throws : True -- Skip return : False foreign import ccall "g_file_io_stream_query_info" g_file_io_stream_query_info :: Ptr FileIOStream -> -- stream : TInterface (Name {namespace = "Gio", name = "FileIOStream"}) CString -> -- attributes : TBasicType TUTF8 Ptr Gio.Cancellable.Cancellable -> -- cancellable : TInterface (Name {namespace = "Gio", name = "Cancellable"}) Ptr (Ptr GError) -> -- error IO (Ptr Gio.FileInfo.FileInfo) {- | Queries a file io stream for the given /@attributes@/. This function blocks while querying the stream. For the asynchronous version of this function, see 'GI.Gio.Objects.FileIOStream.fileIOStreamQueryInfoAsync'. While the stream is blocked, the stream will set the pending flag internally, and any other operations on the stream will fail with 'GI.Gio.Enums.IOErrorEnumPending'. Can fail if the stream was already closed (with /@error@/ being set to 'GI.Gio.Enums.IOErrorEnumClosed'), the stream has pending operations (with /@error@/ being set to 'GI.Gio.Enums.IOErrorEnumPending'), or if querying info is not supported for the stream\'s interface (with /@error@/ being set to 'GI.Gio.Enums.IOErrorEnumNotSupported'). I all cases of failure, 'Nothing' will be returned. If /@cancellable@/ is not 'Nothing', then the operation can be cancelled by triggering the cancellable object from another thread. If the operation was cancelled, the error 'GI.Gio.Enums.IOErrorEnumCancelled' will be set, and 'Nothing' will be returned. /Since: 2.22/ -} fileIOStreamQueryInfo :: (B.CallStack.HasCallStack, MonadIO m, IsFileIOStream a, Gio.Cancellable.IsCancellable b) => a {- ^ /@stream@/: a 'GI.Gio.Objects.FileIOStream.FileIOStream'. -} -> T.Text {- ^ /@attributes@/: a file attribute query string. -} -> Maybe (b) {- ^ /@cancellable@/: optional 'GI.Gio.Objects.Cancellable.Cancellable' object, 'Nothing' to ignore. -} -> m Gio.FileInfo.FileInfo {- ^ __Returns:__ a 'GI.Gio.Objects.FileInfo.FileInfo' for the /@stream@/, or 'Nothing' on error. /(Can throw 'Data.GI.Base.GError.GError')/ -} fileIOStreamQueryInfo stream attributes cancellable = liftIO $ do stream' <- unsafeManagedPtrCastPtr stream attributes' <- textToCString attributes maybeCancellable <- case cancellable of Nothing -> return nullPtr Just jCancellable -> do jCancellable' <- unsafeManagedPtrCastPtr jCancellable return jCancellable' onException (do result <- propagateGError $ g_file_io_stream_query_info stream' attributes' maybeCancellable checkUnexpectedReturnNULL "fileIOStreamQueryInfo" result result' <- (wrapObject Gio.FileInfo.FileInfo) result touchManagedPtr stream whenJust cancellable touchManagedPtr freeMem attributes' return result' ) (do freeMem attributes' ) #if ENABLE_OVERLOADING data FileIOStreamQueryInfoMethodInfo instance (signature ~ (T.Text -> Maybe (b) -> m Gio.FileInfo.FileInfo), MonadIO m, IsFileIOStream a, Gio.Cancellable.IsCancellable b) => O.MethodInfo FileIOStreamQueryInfoMethodInfo a signature where overloadedMethod _ = fileIOStreamQueryInfo #endif -- method FileIOStream::query_info_async -- method type : OrdinaryMethod -- Args : [Arg {argCName = "stream", argType = TInterface (Name {namespace = "Gio", name = "FileIOStream"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GFileIOStream.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attributes", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a file attribute query string.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "io_priority", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the [I/O priority][gio-GIOScheduler] of the request", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "cancellable", argType = TInterface (Name {namespace = "Gio", name = "Cancellable"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "optional #GCancellable object, %NULL to ignore.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "callback", argType = TInterface (Name {namespace = "Gio", name = "AsyncReadyCallback"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "callback to call when the request is satisfied", sinceVersion = Nothing}, argScope = ScopeTypeAsync, argClosure = 5, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the data to pass to callback function", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "g_file_io_stream_query_info_async" g_file_io_stream_query_info_async :: Ptr FileIOStream -> -- stream : TInterface (Name {namespace = "Gio", name = "FileIOStream"}) CString -> -- attributes : TBasicType TUTF8 Int32 -> -- io_priority : TBasicType TInt Ptr Gio.Cancellable.Cancellable -> -- cancellable : TInterface (Name {namespace = "Gio", name = "Cancellable"}) FunPtr Gio.Callbacks.C_AsyncReadyCallback -> -- callback : TInterface (Name {namespace = "Gio", name = "AsyncReadyCallback"}) Ptr () -> -- user_data : TBasicType TPtr IO () {- | Asynchronously queries the /@stream@/ for a 'GI.Gio.Objects.FileInfo.FileInfo'. When completed, /@callback@/ will be called with a 'GI.Gio.Interfaces.AsyncResult.AsyncResult' which can be used to finish the operation with 'GI.Gio.Objects.FileIOStream.fileIOStreamQueryInfoFinish'. For the synchronous version of this function, see 'GI.Gio.Objects.FileIOStream.fileIOStreamQueryInfo'. /Since: 2.22/ -} fileIOStreamQueryInfoAsync :: (B.CallStack.HasCallStack, MonadIO m, IsFileIOStream a, Gio.Cancellable.IsCancellable b) => a {- ^ /@stream@/: a 'GI.Gio.Objects.FileIOStream.FileIOStream'. -} -> T.Text {- ^ /@attributes@/: a file attribute query string. -} -> Int32 {- ^ /@ioPriority@/: the [I\/O priority][gio-GIOScheduler] of the request -} -> Maybe (b) {- ^ /@cancellable@/: optional 'GI.Gio.Objects.Cancellable.Cancellable' object, 'Nothing' to ignore. -} -> Maybe (Gio.Callbacks.AsyncReadyCallback) {- ^ /@callback@/: callback to call when the request is satisfied -} -> m () fileIOStreamQueryInfoAsync stream attributes ioPriority cancellable callback = liftIO $ do stream' <- unsafeManagedPtrCastPtr stream attributes' <- textToCString attributes maybeCancellable <- case cancellable of Nothing -> return nullPtr Just jCancellable -> do jCancellable' <- unsafeManagedPtrCastPtr jCancellable return jCancellable' maybeCallback <- case callback of Nothing -> return (castPtrToFunPtr nullPtr) Just jCallback -> do ptrcallback <- 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 = nullPtr g_file_io_stream_query_info_async stream' attributes' ioPriority maybeCancellable maybeCallback userData touchManagedPtr stream whenJust cancellable touchManagedPtr freeMem attributes' return () #if 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.MethodInfo FileIOStreamQueryInfoAsyncMethodInfo a signature where overloadedMethod _ = fileIOStreamQueryInfoAsync #endif -- method FileIOStream::query_info_finish -- method type : OrdinaryMethod -- Args : [Arg {argCName = "stream", argType = TInterface (Name {namespace = "Gio", name = "FileIOStream"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GFileIOStream.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "result", argType = TInterface (Name {namespace = "Gio", name = "AsyncResult"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GAsyncResult.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gio", name = "FileInfo"})) -- throws : True -- Skip return : False foreign import ccall "g_file_io_stream_query_info_finish" g_file_io_stream_query_info_finish :: Ptr FileIOStream -> -- stream : TInterface (Name {namespace = "Gio", name = "FileIOStream"}) Ptr Gio.AsyncResult.AsyncResult -> -- result : TInterface (Name {namespace = "Gio", name = "AsyncResult"}) Ptr (Ptr GError) -> -- error IO (Ptr Gio.FileInfo.FileInfo) {- | Finalizes the asynchronous query started by 'GI.Gio.Objects.FileIOStream.fileIOStreamQueryInfoAsync'. /Since: 2.22/ -} fileIOStreamQueryInfoFinish :: (B.CallStack.HasCallStack, MonadIO m, IsFileIOStream a, Gio.AsyncResult.IsAsyncResult b) => a {- ^ /@stream@/: a 'GI.Gio.Objects.FileIOStream.FileIOStream'. -} -> b {- ^ /@result@/: a 'GI.Gio.Interfaces.AsyncResult.AsyncResult'. -} -> m Gio.FileInfo.FileInfo {- ^ __Returns:__ A 'GI.Gio.Objects.FileInfo.FileInfo' for the finished query. /(Can throw 'Data.GI.Base.GError.GError')/ -} fileIOStreamQueryInfoFinish stream result_ = liftIO $ do stream' <- unsafeManagedPtrCastPtr stream result_' <- unsafeManagedPtrCastPtr result_ onException (do result <- propagateGError $ g_file_io_stream_query_info_finish stream' result_' checkUnexpectedReturnNULL "fileIOStreamQueryInfoFinish" result result' <- (wrapObject Gio.FileInfo.FileInfo) result touchManagedPtr stream touchManagedPtr result_ return result' ) (do return () ) #if ENABLE_OVERLOADING data FileIOStreamQueryInfoFinishMethodInfo instance (signature ~ (b -> m Gio.FileInfo.FileInfo), MonadIO m, IsFileIOStream a, Gio.AsyncResult.IsAsyncResult b) => O.MethodInfo FileIOStreamQueryInfoFinishMethodInfo a signature where overloadedMethod _ = fileIOStreamQueryInfoFinish #endif