packages feed

gi-glib-0.2.46.13: GI/GLib/Structs/MainContext.hs


{- |
Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
License    : LGPL-2.1
Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)

The `GMainContext` struct is an opaque data
type representing a set of sources to be handled in a main loop.
-}

module GI.GLib.Structs.MainContext
    ( 

-- * Exported types
    MainContext(..)                         ,
    noMainContext                           ,


 -- * Methods
-- ** mainContextAcquire
    MainContextAcquireMethodInfo            ,
    mainContextAcquire                      ,


-- ** mainContextAddPoll
    MainContextAddPollMethodInfo            ,
    mainContextAddPoll                      ,


-- ** mainContextCheck
    MainContextCheckMethodInfo              ,
    mainContextCheck                        ,


-- ** mainContextDefault
    mainContextDefault                      ,


-- ** mainContextDispatch
    MainContextDispatchMethodInfo           ,
    mainContextDispatch                     ,


-- ** mainContextFindSourceByFuncsUserData
    MainContextFindSourceByFuncsUserDataMethodInfo,
    mainContextFindSourceByFuncsUserData    ,


-- ** mainContextFindSourceById
    MainContextFindSourceByIdMethodInfo     ,
    mainContextFindSourceById               ,


-- ** mainContextFindSourceByUserData
    MainContextFindSourceByUserDataMethodInfo,
    mainContextFindSourceByUserData         ,


-- ** mainContextGetThreadDefault
    mainContextGetThreadDefault             ,


-- ** mainContextInvokeFull
    MainContextInvokeFullMethodInfo         ,
    mainContextInvokeFull                   ,


-- ** mainContextIsOwner
    MainContextIsOwnerMethodInfo            ,
    mainContextIsOwner                      ,


-- ** mainContextIteration
    MainContextIterationMethodInfo          ,
    mainContextIteration                    ,


-- ** mainContextNew
    mainContextNew                          ,


-- ** mainContextPending
    MainContextPendingMethodInfo            ,
    mainContextPending                      ,


-- ** mainContextPopThreadDefault
    MainContextPopThreadDefaultMethodInfo   ,
    mainContextPopThreadDefault             ,


-- ** mainContextPrepare
    MainContextPrepareMethodInfo            ,
    mainContextPrepare                      ,


-- ** mainContextPushThreadDefault
    MainContextPushThreadDefaultMethodInfo  ,
    mainContextPushThreadDefault            ,


-- ** mainContextQuery
    MainContextQueryMethodInfo              ,
    mainContextQuery                        ,


-- ** mainContextRef
    MainContextRefMethodInfo                ,
    mainContextRef                          ,


-- ** mainContextRefThreadDefault
    mainContextRefThreadDefault             ,


-- ** mainContextRelease
    MainContextReleaseMethodInfo            ,
    mainContextRelease                      ,


-- ** mainContextRemovePoll
    MainContextRemovePollMethodInfo         ,
    mainContextRemovePoll                   ,


-- ** mainContextUnref
    MainContextUnrefMethodInfo              ,
    mainContextUnref                        ,


-- ** mainContextWait
    MainContextWaitMethodInfo               ,
    mainContextWait                         ,


-- ** mainContextWakeup
    MainContextWakeupMethodInfo             ,
    mainContextWakeup                       ,




    ) where

import Prelude ()
import Data.GI.Base.ShortPrelude

import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map

import GI.GLib.Types
import GI.GLib.Callbacks

newtype MainContext = MainContext (ForeignPtr MainContext)
foreign import ccall "g_main_context_get_type" c_g_main_context_get_type :: 
    IO GType

instance BoxedObject MainContext where
    boxedType _ = c_g_main_context_get_type

noMainContext :: Maybe MainContext
noMainContext = Nothing

-- method MainContext::new
-- method type : Constructor
-- Args : []
-- Lengths : []
-- returnType : TInterface "GLib" "MainContext"
-- throws : False
-- Skip return : False

foreign import ccall "g_main_context_new" g_main_context_new :: 
    IO (Ptr MainContext)


mainContextNew ::
    (MonadIO m) =>
    m MainContext                           -- result
mainContextNew  = liftIO $ do
    result <- g_main_context_new
    checkUnexpectedReturnNULL "g_main_context_new" result
    result' <- (wrapBoxed MainContext) result
    return result'

-- method MainContext::acquire
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GLib" "MainContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "g_main_context_acquire" g_main_context_acquire :: 
    Ptr MainContext ->                      -- _obj : TInterface "GLib" "MainContext"
    IO CInt


mainContextAcquire ::
    (MonadIO m) =>
    MainContext                             -- _obj
    -> m Bool                               -- result
mainContextAcquire _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- g_main_context_acquire _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

data MainContextAcquireMethodInfo
instance (signature ~ (m Bool), MonadIO m) => MethodInfo MainContextAcquireMethodInfo MainContext signature where
    overloadedMethod _ = mainContextAcquire

-- method MainContext::add_poll
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GLib" "MainContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "fd", argType = TInterface "GLib" "PollFD", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "priority", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_main_context_add_poll" g_main_context_add_poll :: 
    Ptr MainContext ->                      -- _obj : TInterface "GLib" "MainContext"
    Ptr PollFD ->                           -- fd : TInterface "GLib" "PollFD"
    Int32 ->                                -- priority : TBasicType TInt32
    IO ()


mainContextAddPoll ::
    (MonadIO m) =>
    MainContext                             -- _obj
    -> PollFD                               -- fd
    -> Int32                                -- priority
    -> m ()                                 -- result
mainContextAddPoll _obj fd priority = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    let fd' = unsafeManagedPtrGetPtr fd
    g_main_context_add_poll _obj' fd' priority
    touchManagedPtr _obj
    touchManagedPtr fd
    return ()

data MainContextAddPollMethodInfo
instance (signature ~ (PollFD -> Int32 -> m ()), MonadIO m) => MethodInfo MainContextAddPollMethodInfo MainContext signature where
    overloadedMethod _ = mainContextAddPoll

-- method MainContext::check
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GLib" "MainContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "max_priority", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "fds", argType = TCArray False (-1) 3 (TInterface "GLib" "PollFD"), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n_fds", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : [Arg {argCName = "n_fds", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "g_main_context_check" g_main_context_check :: 
    Ptr MainContext ->                      -- _obj : TInterface "GLib" "MainContext"
    Int32 ->                                -- max_priority : TBasicType TInt32
    Ptr PollFD ->                           -- fds : TCArray False (-1) 3 (TInterface "GLib" "PollFD")
    Int32 ->                                -- n_fds : TBasicType TInt32
    IO Int32


mainContextCheck ::
    (MonadIO m) =>
    MainContext                             -- _obj
    -> Int32                                -- maxPriority
    -> [PollFD]                             -- fds
    -> m Int32                              -- result
mainContextCheck _obj maxPriority fds = liftIO $ do
    let nFds = fromIntegral $ length fds
    let _obj' = unsafeManagedPtrGetPtr _obj
    let fds' = map unsafeManagedPtrGetPtr fds
    fds'' <- packBlockArray 8 fds'
    result <- g_main_context_check _obj' maxPriority fds'' nFds
    touchManagedPtr _obj
    mapM_ touchManagedPtr fds
    freeMem fds''
    return result

data MainContextCheckMethodInfo
instance (signature ~ (Int32 -> [PollFD] -> m Int32), MonadIO m) => MethodInfo MainContextCheckMethodInfo MainContext signature where
    overloadedMethod _ = mainContextCheck

-- method MainContext::dispatch
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GLib" "MainContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_main_context_dispatch" g_main_context_dispatch :: 
    Ptr MainContext ->                      -- _obj : TInterface "GLib" "MainContext"
    IO ()


mainContextDispatch ::
    (MonadIO m) =>
    MainContext                             -- _obj
    -> m ()                                 -- result
mainContextDispatch _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    g_main_context_dispatch _obj'
    touchManagedPtr _obj
    return ()

data MainContextDispatchMethodInfo
instance (signature ~ (m ()), MonadIO m) => MethodInfo MainContextDispatchMethodInfo MainContext signature where
    overloadedMethod _ = mainContextDispatch

-- method MainContext::find_source_by_funcs_user_data
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GLib" "MainContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "funcs", argType = TInterface "GLib" "SourceFuncs", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TInterface "GLib" "Source"
-- throws : False
-- Skip return : False

foreign import ccall "g_main_context_find_source_by_funcs_user_data" g_main_context_find_source_by_funcs_user_data :: 
    Ptr MainContext ->                      -- _obj : TInterface "GLib" "MainContext"
    Ptr SourceFuncs ->                      -- funcs : TInterface "GLib" "SourceFuncs"
    Ptr () ->                               -- user_data : TBasicType TVoid
    IO (Ptr Source)


mainContextFindSourceByFuncsUserData ::
    (MonadIO m) =>
    MainContext                             -- _obj
    -> SourceFuncs                          -- funcs
    -> Ptr ()                               -- userData
    -> m Source                             -- result
mainContextFindSourceByFuncsUserData _obj funcs userData = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    let funcs' = unsafeManagedPtrGetPtr funcs
    result <- g_main_context_find_source_by_funcs_user_data _obj' funcs' userData
    checkUnexpectedReturnNULL "g_main_context_find_source_by_funcs_user_data" result
    result' <- (newBoxed Source) result
    touchManagedPtr _obj
    touchManagedPtr funcs
    return result'

data MainContextFindSourceByFuncsUserDataMethodInfo
instance (signature ~ (SourceFuncs -> Ptr () -> m Source), MonadIO m) => MethodInfo MainContextFindSourceByFuncsUserDataMethodInfo MainContext signature where
    overloadedMethod _ = mainContextFindSourceByFuncsUserData

-- method MainContext::find_source_by_id
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GLib" "MainContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "source_id", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TInterface "GLib" "Source"
-- throws : False
-- Skip return : False

foreign import ccall "g_main_context_find_source_by_id" g_main_context_find_source_by_id :: 
    Ptr MainContext ->                      -- _obj : TInterface "GLib" "MainContext"
    Word32 ->                               -- source_id : TBasicType TUInt32
    IO (Ptr Source)


mainContextFindSourceById ::
    (MonadIO m) =>
    MainContext                             -- _obj
    -> Word32                               -- sourceId
    -> m Source                             -- result
mainContextFindSourceById _obj sourceId = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- g_main_context_find_source_by_id _obj' sourceId
    checkUnexpectedReturnNULL "g_main_context_find_source_by_id" result
    result' <- (newBoxed Source) result
    touchManagedPtr _obj
    return result'

data MainContextFindSourceByIdMethodInfo
instance (signature ~ (Word32 -> m Source), MonadIO m) => MethodInfo MainContextFindSourceByIdMethodInfo MainContext signature where
    overloadedMethod _ = mainContextFindSourceById

-- method MainContext::find_source_by_user_data
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GLib" "MainContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TInterface "GLib" "Source"
-- throws : False
-- Skip return : False

foreign import ccall "g_main_context_find_source_by_user_data" g_main_context_find_source_by_user_data :: 
    Ptr MainContext ->                      -- _obj : TInterface "GLib" "MainContext"
    Ptr () ->                               -- user_data : TBasicType TVoid
    IO (Ptr Source)


mainContextFindSourceByUserData ::
    (MonadIO m) =>
    MainContext                             -- _obj
    -> Ptr ()                               -- userData
    -> m Source                             -- result
mainContextFindSourceByUserData _obj userData = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- g_main_context_find_source_by_user_data _obj' userData
    checkUnexpectedReturnNULL "g_main_context_find_source_by_user_data" result
    result' <- (newBoxed Source) result
    touchManagedPtr _obj
    return result'

data MainContextFindSourceByUserDataMethodInfo
instance (signature ~ (Ptr () -> m Source), MonadIO m) => MethodInfo MainContextFindSourceByUserDataMethodInfo MainContext signature where
    overloadedMethod _ = mainContextFindSourceByUserData

-- method MainContext::invoke_full
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GLib" "MainContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "priority", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "function", argType = TInterface "GLib" "SourceFunc", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeNotified, argClosure = 3, argDestroy = 4, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "notify", argType = TInterface "GLib" "DestroyNotify", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeAsync, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_main_context_invoke_full" g_main_context_invoke_full :: 
    Ptr MainContext ->                      -- _obj : TInterface "GLib" "MainContext"
    Int32 ->                                -- priority : TBasicType TInt32
    FunPtr SourceFuncC ->                   -- function : TInterface "GLib" "SourceFunc"
    Ptr () ->                               -- data : TBasicType TVoid
    FunPtr DestroyNotifyC ->                -- notify : TInterface "GLib" "DestroyNotify"
    IO ()


mainContextInvokeFull ::
    (MonadIO m) =>
    MainContext                             -- _obj
    -> Int32                                -- priority
    -> SourceFunc                           -- function
    -> m ()                                 -- result
mainContextInvokeFull _obj priority function = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    function' <- mkSourceFunc (sourceFuncWrapper Nothing function)
    let data_ = castFunPtrToPtr function'
    let notify = safeFreeFunPtrPtr
    g_main_context_invoke_full _obj' priority function' data_ notify
    touchManagedPtr _obj
    return ()

data MainContextInvokeFullMethodInfo
instance (signature ~ (Int32 -> SourceFunc -> m ()), MonadIO m) => MethodInfo MainContextInvokeFullMethodInfo MainContext signature where
    overloadedMethod _ = mainContextInvokeFull

-- method MainContext::is_owner
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GLib" "MainContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "g_main_context_is_owner" g_main_context_is_owner :: 
    Ptr MainContext ->                      -- _obj : TInterface "GLib" "MainContext"
    IO CInt


mainContextIsOwner ::
    (MonadIO m) =>
    MainContext                             -- _obj
    -> m Bool                               -- result
mainContextIsOwner _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- g_main_context_is_owner _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

data MainContextIsOwnerMethodInfo
instance (signature ~ (m Bool), MonadIO m) => MethodInfo MainContextIsOwnerMethodInfo MainContext signature where
    overloadedMethod _ = mainContextIsOwner

-- method MainContext::iteration
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GLib" "MainContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "may_block", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "g_main_context_iteration" g_main_context_iteration :: 
    Ptr MainContext ->                      -- _obj : TInterface "GLib" "MainContext"
    CInt ->                                 -- may_block : TBasicType TBoolean
    IO CInt


mainContextIteration ::
    (MonadIO m) =>
    MainContext                             -- _obj
    -> Bool                                 -- mayBlock
    -> m Bool                               -- result
mainContextIteration _obj mayBlock = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    let mayBlock' = (fromIntegral . fromEnum) mayBlock
    result <- g_main_context_iteration _obj' mayBlock'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

data MainContextIterationMethodInfo
instance (signature ~ (Bool -> m Bool), MonadIO m) => MethodInfo MainContextIterationMethodInfo MainContext signature where
    overloadedMethod _ = mainContextIteration

-- method MainContext::pending
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GLib" "MainContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "g_main_context_pending" g_main_context_pending :: 
    Ptr MainContext ->                      -- _obj : TInterface "GLib" "MainContext"
    IO CInt


mainContextPending ::
    (MonadIO m) =>
    MainContext                             -- _obj
    -> m Bool                               -- result
mainContextPending _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- g_main_context_pending _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

data MainContextPendingMethodInfo
instance (signature ~ (m Bool), MonadIO m) => MethodInfo MainContextPendingMethodInfo MainContext signature where
    overloadedMethod _ = mainContextPending

-- method MainContext::pop_thread_default
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GLib" "MainContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_main_context_pop_thread_default" g_main_context_pop_thread_default :: 
    Ptr MainContext ->                      -- _obj : TInterface "GLib" "MainContext"
    IO ()


mainContextPopThreadDefault ::
    (MonadIO m) =>
    MainContext                             -- _obj
    -> m ()                                 -- result
mainContextPopThreadDefault _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    g_main_context_pop_thread_default _obj'
    touchManagedPtr _obj
    return ()

data MainContextPopThreadDefaultMethodInfo
instance (signature ~ (m ()), MonadIO m) => MethodInfo MainContextPopThreadDefaultMethodInfo MainContext signature where
    overloadedMethod _ = mainContextPopThreadDefault

-- method MainContext::prepare
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GLib" "MainContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "priority", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "g_main_context_prepare" g_main_context_prepare :: 
    Ptr MainContext ->                      -- _obj : TInterface "GLib" "MainContext"
    Int32 ->                                -- priority : TBasicType TInt32
    IO CInt


mainContextPrepare ::
    (MonadIO m) =>
    MainContext                             -- _obj
    -> Int32                                -- priority
    -> m Bool                               -- result
mainContextPrepare _obj priority = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- g_main_context_prepare _obj' priority
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

data MainContextPrepareMethodInfo
instance (signature ~ (Int32 -> m Bool), MonadIO m) => MethodInfo MainContextPrepareMethodInfo MainContext signature where
    overloadedMethod _ = mainContextPrepare

-- method MainContext::push_thread_default
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GLib" "MainContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_main_context_push_thread_default" g_main_context_push_thread_default :: 
    Ptr MainContext ->                      -- _obj : TInterface "GLib" "MainContext"
    IO ()


mainContextPushThreadDefault ::
    (MonadIO m) =>
    MainContext                             -- _obj
    -> m ()                                 -- result
mainContextPushThreadDefault _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    g_main_context_push_thread_default _obj'
    touchManagedPtr _obj
    return ()

data MainContextPushThreadDefaultMethodInfo
instance (signature ~ (m ()), MonadIO m) => MethodInfo MainContextPushThreadDefaultMethodInfo MainContext signature where
    overloadedMethod _ = mainContextPushThreadDefault

-- method MainContext::query
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GLib" "MainContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "max_priority", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "timeout_", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "fds", argType = TCArray False (-1) 4 (TInterface "GLib" "PollFD"), direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferNothing},Arg {argCName = "n_fds", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
-- Lengths : [Arg {argCName = "n_fds", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "g_main_context_query" g_main_context_query :: 
    Ptr MainContext ->                      -- _obj : TInterface "GLib" "MainContext"
    Int32 ->                                -- max_priority : TBasicType TInt32
    Ptr Int32 ->                            -- timeout_ : TBasicType TInt32
    Ptr PollFD ->                           -- fds : TCArray False (-1) 4 (TInterface "GLib" "PollFD")
    Int32 ->                                -- n_fds : TBasicType TInt32
    IO Int32


mainContextQuery ::
    (MonadIO m) =>
    MainContext                             -- _obj
    -> Int32                                -- maxPriority
    -> [PollFD]                             -- fds
    -> m (Int32,Int32,[PollFD])             -- result
mainContextQuery _obj maxPriority fds = liftIO $ do
    let nFds = fromIntegral $ length fds
    let _obj' = unsafeManagedPtrGetPtr _obj
    timeout <- allocMem :: IO (Ptr Int32)
    let fds' = map unsafeManagedPtrGetPtr fds
    fds'' <- packBlockArray 8 fds'
    result <- g_main_context_query _obj' maxPriority timeout fds'' nFds
    timeout' <- peek timeout
    fds''' <- (unpackBoxedArrayWithLength 8 nFds) fds''
    fds'''' <- mapM (newBoxed PollFD) fds'''
    touchManagedPtr _obj
    mapM_ touchManagedPtr fds
    freeMem timeout
    freeMem fds''
    return (result, timeout', fds'''')

data MainContextQueryMethodInfo
instance (signature ~ (Int32 -> [PollFD] -> m (Int32,Int32,[PollFD])), MonadIO m) => MethodInfo MainContextQueryMethodInfo MainContext signature where
    overloadedMethod _ = mainContextQuery

-- method MainContext::ref
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GLib" "MainContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TInterface "GLib" "MainContext"
-- throws : False
-- Skip return : False

foreign import ccall "g_main_context_ref" g_main_context_ref :: 
    Ptr MainContext ->                      -- _obj : TInterface "GLib" "MainContext"
    IO (Ptr MainContext)


mainContextRef ::
    (MonadIO m) =>
    MainContext                             -- _obj
    -> m MainContext                        -- result
mainContextRef _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- g_main_context_ref _obj'
    checkUnexpectedReturnNULL "g_main_context_ref" result
    result' <- (wrapBoxed MainContext) result
    touchManagedPtr _obj
    return result'

data MainContextRefMethodInfo
instance (signature ~ (m MainContext), MonadIO m) => MethodInfo MainContextRefMethodInfo MainContext signature where
    overloadedMethod _ = mainContextRef

-- method MainContext::release
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GLib" "MainContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_main_context_release" g_main_context_release :: 
    Ptr MainContext ->                      -- _obj : TInterface "GLib" "MainContext"
    IO ()


mainContextRelease ::
    (MonadIO m) =>
    MainContext                             -- _obj
    -> m ()                                 -- result
mainContextRelease _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    g_main_context_release _obj'
    touchManagedPtr _obj
    return ()

data MainContextReleaseMethodInfo
instance (signature ~ (m ()), MonadIO m) => MethodInfo MainContextReleaseMethodInfo MainContext signature where
    overloadedMethod _ = mainContextRelease

-- method MainContext::remove_poll
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GLib" "MainContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "fd", argType = TInterface "GLib" "PollFD", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_main_context_remove_poll" g_main_context_remove_poll :: 
    Ptr MainContext ->                      -- _obj : TInterface "GLib" "MainContext"
    Ptr PollFD ->                           -- fd : TInterface "GLib" "PollFD"
    IO ()


mainContextRemovePoll ::
    (MonadIO m) =>
    MainContext                             -- _obj
    -> PollFD                               -- fd
    -> m ()                                 -- result
mainContextRemovePoll _obj fd = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    let fd' = unsafeManagedPtrGetPtr fd
    g_main_context_remove_poll _obj' fd'
    touchManagedPtr _obj
    touchManagedPtr fd
    return ()

data MainContextRemovePollMethodInfo
instance (signature ~ (PollFD -> m ()), MonadIO m) => MethodInfo MainContextRemovePollMethodInfo MainContext signature where
    overloadedMethod _ = mainContextRemovePoll

-- method MainContext::unref
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GLib" "MainContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_main_context_unref" g_main_context_unref :: 
    Ptr MainContext ->                      -- _obj : TInterface "GLib" "MainContext"
    IO ()


mainContextUnref ::
    (MonadIO m) =>
    MainContext                             -- _obj
    -> m ()                                 -- result
mainContextUnref _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    g_main_context_unref _obj'
    touchManagedPtr _obj
    return ()

data MainContextUnrefMethodInfo
instance (signature ~ (m ()), MonadIO m) => MethodInfo MainContextUnrefMethodInfo MainContext signature where
    overloadedMethod _ = mainContextUnref

-- method MainContext::wait
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GLib" "MainContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "cond", argType = TInterface "GLib" "Cond", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "mutex", argType = TInterface "GLib" "Mutex", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "g_main_context_wait" g_main_context_wait :: 
    Ptr MainContext ->                      -- _obj : TInterface "GLib" "MainContext"
    Ptr Cond ->                             -- cond : TInterface "GLib" "Cond"
    Ptr Mutex ->                            -- mutex : TInterface "GLib" "Mutex"
    IO CInt


mainContextWait ::
    (MonadIO m) =>
    MainContext                             -- _obj
    -> Cond                                 -- cond
    -> Mutex                                -- mutex
    -> m Bool                               -- result
mainContextWait _obj cond mutex = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    let cond' = unsafeManagedPtrGetPtr cond
    let mutex' = unsafeManagedPtrGetPtr mutex
    result <- g_main_context_wait _obj' cond' mutex'
    let result' = (/= 0) result
    touchManagedPtr _obj
    touchManagedPtr cond
    touchManagedPtr mutex
    return result'

data MainContextWaitMethodInfo
instance (signature ~ (Cond -> Mutex -> m Bool), MonadIO m) => MethodInfo MainContextWaitMethodInfo MainContext signature where
    overloadedMethod _ = mainContextWait

-- method MainContext::wakeup
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GLib" "MainContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_main_context_wakeup" g_main_context_wakeup :: 
    Ptr MainContext ->                      -- _obj : TInterface "GLib" "MainContext"
    IO ()


mainContextWakeup ::
    (MonadIO m) =>
    MainContext                             -- _obj
    -> m ()                                 -- result
mainContextWakeup _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    g_main_context_wakeup _obj'
    touchManagedPtr _obj
    return ()

data MainContextWakeupMethodInfo
instance (signature ~ (m ()), MonadIO m) => MethodInfo MainContextWakeupMethodInfo MainContext signature where
    overloadedMethod _ = mainContextWakeup

-- method MainContext::default
-- method type : MemberFunction
-- Args : []
-- Lengths : []
-- returnType : TInterface "GLib" "MainContext"
-- throws : False
-- Skip return : False

foreign import ccall "g_main_context_default" g_main_context_default :: 
    IO (Ptr MainContext)


mainContextDefault ::
    (MonadIO m) =>
    m MainContext                           -- result
mainContextDefault  = liftIO $ do
    result <- g_main_context_default
    checkUnexpectedReturnNULL "g_main_context_default" result
    result' <- (newBoxed MainContext) result
    return result'

-- method MainContext::get_thread_default
-- method type : MemberFunction
-- Args : []
-- Lengths : []
-- returnType : TInterface "GLib" "MainContext"
-- throws : False
-- Skip return : False

foreign import ccall "g_main_context_get_thread_default" g_main_context_get_thread_default :: 
    IO (Ptr MainContext)


mainContextGetThreadDefault ::
    (MonadIO m) =>
    m MainContext                           -- result
mainContextGetThreadDefault  = liftIO $ do
    result <- g_main_context_get_thread_default
    checkUnexpectedReturnNULL "g_main_context_get_thread_default" result
    result' <- (newBoxed MainContext) result
    return result'

-- method MainContext::ref_thread_default
-- method type : MemberFunction
-- Args : []
-- Lengths : []
-- returnType : TInterface "GLib" "MainContext"
-- throws : False
-- Skip return : False

foreign import ccall "g_main_context_ref_thread_default" g_main_context_ref_thread_default :: 
    IO (Ptr MainContext)


mainContextRefThreadDefault ::
    (MonadIO m) =>
    m MainContext                           -- result
mainContextRefThreadDefault  = liftIO $ do
    result <- g_main_context_ref_thread_default
    checkUnexpectedReturnNULL "g_main_context_ref_thread_default" result
    result' <- (wrapBoxed MainContext) result
    return result'

type family ResolveMainContextMethod (t :: Symbol) (o :: *) :: * where
    ResolveMainContextMethod "acquire" o = MainContextAcquireMethodInfo
    ResolveMainContextMethod "addPoll" o = MainContextAddPollMethodInfo
    ResolveMainContextMethod "check" o = MainContextCheckMethodInfo
    ResolveMainContextMethod "dispatch" o = MainContextDispatchMethodInfo
    ResolveMainContextMethod "findSourceByFuncsUserData" o = MainContextFindSourceByFuncsUserDataMethodInfo
    ResolveMainContextMethod "findSourceById" o = MainContextFindSourceByIdMethodInfo
    ResolveMainContextMethod "findSourceByUserData" o = MainContextFindSourceByUserDataMethodInfo
    ResolveMainContextMethod "invokeFull" o = MainContextInvokeFullMethodInfo
    ResolveMainContextMethod "isOwner" o = MainContextIsOwnerMethodInfo
    ResolveMainContextMethod "iteration" o = MainContextIterationMethodInfo
    ResolveMainContextMethod "pending" o = MainContextPendingMethodInfo
    ResolveMainContextMethod "popThreadDefault" o = MainContextPopThreadDefaultMethodInfo
    ResolveMainContextMethod "prepare" o = MainContextPrepareMethodInfo
    ResolveMainContextMethod "pushThreadDefault" o = MainContextPushThreadDefaultMethodInfo
    ResolveMainContextMethod "query" o = MainContextQueryMethodInfo
    ResolveMainContextMethod "ref" o = MainContextRefMethodInfo
    ResolveMainContextMethod "release" o = MainContextReleaseMethodInfo
    ResolveMainContextMethod "removePoll" o = MainContextRemovePollMethodInfo
    ResolveMainContextMethod "unref" o = MainContextUnrefMethodInfo
    ResolveMainContextMethod "wait" o = MainContextWaitMethodInfo
    ResolveMainContextMethod "wakeup" o = MainContextWakeupMethodInfo
    ResolveMainContextMethod l o = MethodResolutionFailed l o

instance (info ~ ResolveMainContextMethod t MainContext, MethodInfo info MainContext p) => IsLabelProxy t (MainContext -> p) where
    fromLabelProxy _ = overloadedMethod (MethodProxy :: MethodProxy info)

#if MIN_VERSION_base(4,9,0)
instance (info ~ ResolveMainContextMethod t MainContext, MethodInfo info MainContext p) => IsLabel t (MainContext -> p) where
    fromLabel _ = overloadedMethod (MethodProxy :: MethodProxy info)
#endif