{-# LINE 2 "./System/GIO/Async/AsyncResult.chs" #-}
module System.GIO.Async.AsyncResult (
AsyncResult,
AsyncResultClass,
AsyncReadyCallback,
marshalAsyncReadyCallback,
) where
import Control.Monad
import System.Glib.FFI
import System.Glib.GObject
import System.GIO.Types
{-# LINE 44 "./System/GIO/Async/AsyncResult.chs" #-}
type AsyncReadyCallback = GObject -> AsyncResult -> IO ()
type GAsyncReadyCallback = FunPtr (((Ptr ()) -> ((Ptr AsyncResult) -> ((Ptr ()) -> (IO ())))))
{-# LINE 48 "./System/GIO/Async/AsyncResult.chs" #-}
foreign import ccall "wrapper" mkAsyncReadyCallback ::
(Ptr () -> Ptr AsyncResult -> Ptr () -> IO ()) -> IO GAsyncReadyCallback
marshalAsyncReadyCallback :: AsyncReadyCallback -> IO GAsyncReadyCallback
marshalAsyncReadyCallback :: AsyncReadyCallback -> IO GAsyncReadyCallback
marshalAsyncReadyCallback AsyncReadyCallback
asyncReadyCallback =
(Ptr () -> Ptr AsyncResult -> Ptr () -> IO ())
-> IO GAsyncReadyCallback
mkAsyncReadyCallback ((Ptr () -> Ptr AsyncResult -> Ptr () -> IO ())
-> IO GAsyncReadyCallback)
-> (Ptr () -> Ptr AsyncResult -> Ptr () -> IO ())
-> IO GAsyncReadyCallback
forall a b. (a -> b) -> a -> b
$ \ Ptr ()
cObject Ptr AsyncResult
cAsyncResult Ptr ()
cCallback -> do
GObject
object <- ((ForeignPtr GObject -> GObject, FinalizerPtr GObject)
-> IO (Ptr GObject) -> IO GObject
forall obj.
GObjectClass obj =>
(ForeignPtr obj -> obj, FinalizerPtr obj) -> IO (Ptr obj) -> IO obj
makeNewGObject (ForeignPtr GObject -> GObject, FinalizerPtr GObject)
forall {a}. (ForeignPtr GObject -> GObject, FinalizerPtr a)
mkGObject (IO (Ptr GObject) -> IO GObject)
-> (Ptr GObject -> IO (Ptr GObject)) -> Ptr GObject -> IO GObject
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Ptr GObject -> IO (Ptr GObject)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return) (Ptr () -> Ptr GObject
forall a b. Ptr a -> Ptr b
castPtr Ptr ()
cObject)
AsyncResult
asyncResult <- ((ForeignPtr AsyncResult -> AsyncResult, FinalizerPtr AsyncResult)
-> IO (Ptr AsyncResult) -> IO AsyncResult
forall obj.
GObjectClass obj =>
(ForeignPtr obj -> obj, FinalizerPtr obj) -> IO (Ptr obj) -> IO obj
makeNewGObject (ForeignPtr AsyncResult -> AsyncResult, FinalizerPtr AsyncResult)
forall {a}. (ForeignPtr AsyncResult -> AsyncResult, FinalizerPtr a)
mkAsyncResult (IO (Ptr AsyncResult) -> IO AsyncResult)
-> (Ptr AsyncResult -> IO (Ptr AsyncResult))
-> Ptr AsyncResult
-> IO AsyncResult
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Ptr AsyncResult -> IO (Ptr AsyncResult)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return) Ptr AsyncResult
cAsyncResult
AsyncReadyCallback
asyncReadyCallback GObject
object AsyncResult
asyncResult
FunPtr Any -> IO ()
forall a. FunPtr a -> IO ()
freeHaskellFunPtr (Ptr () -> FunPtr Any
forall a b. Ptr a -> FunPtr b
castPtrToFunPtr Ptr ()
cCallback)