packages feed

gi-gst-0.1.6.13: GI/Gst/Objects/TaskPool.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)
-}

module GI.Gst.Objects.TaskPool
    ( 

-- * Exported types
    TaskPool(..)                            ,
    TaskPoolK                               ,
    toTaskPool                              ,
    noTaskPool                              ,


 -- * Methods
-- ** taskPoolCleanup
    TaskPoolCleanupMethodInfo               ,
    taskPoolCleanup                         ,


-- ** taskPoolJoin
    TaskPoolJoinMethodInfo                  ,
    taskPoolJoin                            ,


-- ** taskPoolNew
    taskPoolNew                             ,


-- ** taskPoolPrepare
    TaskPoolPrepareMethodInfo               ,
    taskPoolPrepare                         ,


-- ** taskPoolPush
    TaskPoolPushMethodInfo                  ,
    taskPoolPush                            ,




    ) 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.Gst.Types
import GI.Gst.Callbacks
import qualified GI.GObject as GObject

newtype TaskPool = TaskPool (ForeignPtr TaskPool)
foreign import ccall "gst_task_pool_get_type"
    c_gst_task_pool_get_type :: IO GType

type instance ParentTypes TaskPool = TaskPoolParentTypes
type TaskPoolParentTypes = '[Object, GObject.Object]

instance GObject TaskPool where
    gobjectIsInitiallyUnowned _ = True
    gobjectType _ = c_gst_task_pool_get_type
    

class GObject o => TaskPoolK o
instance (GObject o, IsDescendantOf TaskPool o) => TaskPoolK o

toTaskPool :: TaskPoolK o => o -> IO TaskPool
toTaskPool = unsafeCastTo TaskPool

noTaskPool :: Maybe TaskPool
noTaskPool = Nothing

type family ResolveTaskPoolMethod (t :: Symbol) (o :: *) :: * where
    ResolveTaskPoolMethod "addControlBinding" o = ObjectAddControlBindingMethodInfo
    ResolveTaskPoolMethod "bindProperty" o = GObject.ObjectBindPropertyMethodInfo
    ResolveTaskPoolMethod "bindPropertyFull" o = GObject.ObjectBindPropertyFullMethodInfo
    ResolveTaskPoolMethod "cleanup" o = TaskPoolCleanupMethodInfo
    ResolveTaskPoolMethod "defaultError" o = ObjectDefaultErrorMethodInfo
    ResolveTaskPoolMethod "forceFloating" o = GObject.ObjectForceFloatingMethodInfo
    ResolveTaskPoolMethod "freezeNotify" o = GObject.ObjectFreezeNotifyMethodInfo
    ResolveTaskPoolMethod "hasActiveControlBindings" o = ObjectHasActiveControlBindingsMethodInfo
    ResolveTaskPoolMethod "hasAncestor" o = ObjectHasAncestorMethodInfo
    ResolveTaskPoolMethod "hasAsAncestor" o = ObjectHasAsAncestorMethodInfo
    ResolveTaskPoolMethod "hasAsParent" o = ObjectHasAsParentMethodInfo
    ResolveTaskPoolMethod "isFloating" o = GObject.ObjectIsFloatingMethodInfo
    ResolveTaskPoolMethod "join" o = TaskPoolJoinMethodInfo
    ResolveTaskPoolMethod "notify" o = GObject.ObjectNotifyMethodInfo
    ResolveTaskPoolMethod "notifyByPspec" o = GObject.ObjectNotifyByPspecMethodInfo
    ResolveTaskPoolMethod "prepare" o = TaskPoolPrepareMethodInfo
    ResolveTaskPoolMethod "push" o = TaskPoolPushMethodInfo
    ResolveTaskPoolMethod "refSink" o = GObject.ObjectRefSinkMethodInfo
    ResolveTaskPoolMethod "removeControlBinding" o = ObjectRemoveControlBindingMethodInfo
    ResolveTaskPoolMethod "replaceData" o = GObject.ObjectReplaceDataMethodInfo
    ResolveTaskPoolMethod "replaceQdata" o = GObject.ObjectReplaceQdataMethodInfo
    ResolveTaskPoolMethod "runDispose" o = GObject.ObjectRunDisposeMethodInfo
    ResolveTaskPoolMethod "stealData" o = GObject.ObjectStealDataMethodInfo
    ResolveTaskPoolMethod "stealQdata" o = GObject.ObjectStealQdataMethodInfo
    ResolveTaskPoolMethod "suggestNextSync" o = ObjectSuggestNextSyncMethodInfo
    ResolveTaskPoolMethod "syncValues" o = ObjectSyncValuesMethodInfo
    ResolveTaskPoolMethod "thawNotify" o = GObject.ObjectThawNotifyMethodInfo
    ResolveTaskPoolMethod "unparent" o = ObjectUnparentMethodInfo
    ResolveTaskPoolMethod "watchClosure" o = GObject.ObjectWatchClosureMethodInfo
    ResolveTaskPoolMethod "getControlBinding" o = ObjectGetControlBindingMethodInfo
    ResolveTaskPoolMethod "getControlRate" o = ObjectGetControlRateMethodInfo
    ResolveTaskPoolMethod "getData" o = GObject.ObjectGetDataMethodInfo
    ResolveTaskPoolMethod "getGValueArray" o = ObjectGetGValueArrayMethodInfo
    ResolveTaskPoolMethod "getName" o = ObjectGetNameMethodInfo
    ResolveTaskPoolMethod "getParent" o = ObjectGetParentMethodInfo
    ResolveTaskPoolMethod "getPathString" o = ObjectGetPathStringMethodInfo
    ResolveTaskPoolMethod "getProperty" o = GObject.ObjectGetPropertyMethodInfo
    ResolveTaskPoolMethod "getQdata" o = GObject.ObjectGetQdataMethodInfo
    ResolveTaskPoolMethod "getValue" o = ObjectGetValueMethodInfo
    ResolveTaskPoolMethod "getValueArray" o = ObjectGetValueArrayMethodInfo
    ResolveTaskPoolMethod "setControlBindingDisabled" o = ObjectSetControlBindingDisabledMethodInfo
    ResolveTaskPoolMethod "setControlBindingsDisabled" o = ObjectSetControlBindingsDisabledMethodInfo
    ResolveTaskPoolMethod "setControlRate" o = ObjectSetControlRateMethodInfo
    ResolveTaskPoolMethod "setData" o = GObject.ObjectSetDataMethodInfo
    ResolveTaskPoolMethod "setName" o = ObjectSetNameMethodInfo
    ResolveTaskPoolMethod "setParent" o = ObjectSetParentMethodInfo
    ResolveTaskPoolMethod "setProperty" o = GObject.ObjectSetPropertyMethodInfo
    ResolveTaskPoolMethod l o = MethodResolutionFailed l o

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

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

type instance AttributeList TaskPool = TaskPoolAttributeList
type TaskPoolAttributeList = ('[ '("name", ObjectNamePropertyInfo), '("parent", ObjectParentPropertyInfo)] :: [(Symbol, *)])

type instance SignalList TaskPool = TaskPoolSignalList
type TaskPoolSignalList = ('[ '("deepNotify", ObjectDeepNotifySignalInfo), '("notify", GObject.ObjectNotifySignalInfo)] :: [(Symbol, *)])

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

foreign import ccall "gst_task_pool_new" gst_task_pool_new :: 
    IO (Ptr TaskPool)


taskPoolNew ::
    (MonadIO m) =>
    m TaskPool                              -- result
taskPoolNew  = liftIO $ do
    result <- gst_task_pool_new
    checkUnexpectedReturnNULL "gst_task_pool_new" result
    result' <- (wrapObject TaskPool) result
    return result'

-- method TaskPool::cleanup
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "TaskPool", 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 "gst_task_pool_cleanup" gst_task_pool_cleanup :: 
    Ptr TaskPool ->                         -- _obj : TInterface "Gst" "TaskPool"
    IO ()


taskPoolCleanup ::
    (MonadIO m, TaskPoolK a) =>
    a                                       -- _obj
    -> m ()                                 -- result
taskPoolCleanup _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gst_task_pool_cleanup _obj'
    touchManagedPtr _obj
    return ()

data TaskPoolCleanupMethodInfo
instance (signature ~ (m ()), MonadIO m, TaskPoolK a) => MethodInfo TaskPoolCleanupMethodInfo a signature where
    overloadedMethod _ = taskPoolCleanup

-- method TaskPool::join
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "TaskPool", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "id", argType = TBasicType TVoid, 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 "gst_task_pool_join" gst_task_pool_join :: 
    Ptr TaskPool ->                         -- _obj : TInterface "Gst" "TaskPool"
    Ptr () ->                               -- id : TBasicType TVoid
    IO ()


taskPoolJoin ::
    (MonadIO m, TaskPoolK a) =>
    a                                       -- _obj
    -> Ptr ()                               -- id
    -> m ()                                 -- result
taskPoolJoin _obj id = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gst_task_pool_join _obj' id
    touchManagedPtr _obj
    return ()

data TaskPoolJoinMethodInfo
instance (signature ~ (Ptr () -> m ()), MonadIO m, TaskPoolK a) => MethodInfo TaskPoolJoinMethodInfo a signature where
    overloadedMethod _ = taskPoolJoin

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

foreign import ccall "gst_task_pool_prepare" gst_task_pool_prepare :: 
    Ptr TaskPool ->                         -- _obj : TInterface "Gst" "TaskPool"
    Ptr (Ptr GError) ->                     -- error
    IO ()


taskPoolPrepare ::
    (MonadIO m, TaskPoolK a) =>
    a                                       -- _obj
    -> m ()                                 -- result
taskPoolPrepare _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    onException (do
        propagateGError $ gst_task_pool_prepare _obj'
        touchManagedPtr _obj
        return ()
     ) (do
        return ()
     )

data TaskPoolPrepareMethodInfo
instance (signature ~ (m ()), MonadIO m, TaskPoolK a) => MethodInfo TaskPoolPrepareMethodInfo a signature where
    overloadedMethod _ = taskPoolPrepare

-- method TaskPool::push
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "TaskPool", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "func", argType = TInterface "Gst" "TaskPoolFunction", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeAsync, argClosure = 2, 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 : TBasicType TVoid
-- throws : True
-- Skip return : False

foreign import ccall "gst_task_pool_push" gst_task_pool_push :: 
    Ptr TaskPool ->                         -- _obj : TInterface "Gst" "TaskPool"
    FunPtr TaskPoolFunctionC ->             -- func : TInterface "Gst" "TaskPoolFunction"
    Ptr () ->                               -- user_data : TBasicType TVoid
    Ptr (Ptr GError) ->                     -- error
    IO ()


taskPoolPush ::
    (MonadIO m, TaskPoolK a) =>
    a                                       -- _obj
    -> TaskPoolFunction                     -- func
    -> m ()                                 -- result
taskPoolPush _obj func = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    ptrfunc <- callocMem :: IO (Ptr (FunPtr TaskPoolFunctionC))
    func' <- mkTaskPoolFunction (taskPoolFunctionWrapper (Just ptrfunc) func)
    poke ptrfunc func'
    let userData = nullPtr
    onException (do
        propagateGError $ gst_task_pool_push _obj' func' userData
        touchManagedPtr _obj
        return ()
     ) (do
        return ()
     )

data TaskPoolPushMethodInfo
instance (signature ~ (TaskPoolFunction -> m ()), MonadIO m, TaskPoolK a) => MethodInfo TaskPoolPushMethodInfo a signature where
    overloadedMethod _ = taskPoolPush