packages feed

gi-gst-0.1.6.13: GI/Gst/Interfaces/ChildProxy.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.Interfaces.ChildProxy
    ( 

-- * Exported types
    ChildProxy(..)                          ,
    noChildProxy                            ,
    ChildProxyK                             ,
    toChildProxy                            ,


 -- * Methods
-- ** childProxyChildAdded
    ChildProxyChildAddedMethodInfo          ,
    childProxyChildAdded                    ,


-- ** childProxyChildRemoved
    ChildProxyChildRemovedMethodInfo        ,
    childProxyChildRemoved                  ,


-- ** childProxyGetChildByIndex
    ChildProxyGetChildByIndexMethodInfo     ,
    childProxyGetChildByIndex               ,


-- ** childProxyGetChildByName
    ChildProxyGetChildByNameMethodInfo      ,
    childProxyGetChildByName                ,


-- ** childProxyGetChildrenCount
    ChildProxyGetChildrenCountMethodInfo    ,
    childProxyGetChildrenCount              ,


-- ** childProxyGetProperty
    ChildProxyGetPropertyMethodInfo         ,
    childProxyGetProperty                   ,


-- ** childProxyLookup
    ChildProxyLookupMethodInfo              ,
    childProxyLookup                        ,


-- ** childProxySetProperty
    ChildProxySetPropertyMethodInfo         ,
    childProxySetProperty                   ,




 -- * Signals
-- ** ChildAdded
    ChildProxyChildAddedCallback            ,
    ChildProxyChildAddedCallbackC           ,
    ChildProxyChildAddedSignalInfo          ,
    afterChildProxyChildAdded               ,
    childProxyChildAddedCallbackWrapper     ,
    childProxyChildAddedClosure             ,
    mkChildProxyChildAddedCallback          ,
    noChildProxyChildAddedCallback          ,
    onChildProxyChildAdded                  ,


-- ** ChildRemoved
    ChildProxyChildRemovedCallback          ,
    ChildProxyChildRemovedCallbackC         ,
    ChildProxyChildRemovedSignalInfo        ,
    afterChildProxyChildRemoved             ,
    childProxyChildRemovedCallbackWrapper   ,
    childProxyChildRemovedClosure           ,
    mkChildProxyChildRemovedCallback        ,
    noChildProxyChildRemovedCallback        ,
    onChildProxyChildRemoved                ,




    ) 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

-- interface ChildProxy 

newtype ChildProxy = ChildProxy (ForeignPtr ChildProxy)
noChildProxy :: Maybe ChildProxy
noChildProxy = Nothing

type family ResolveChildProxyMethod (t :: Symbol) (o :: *) :: * where
    ResolveChildProxyMethod "bindProperty" o = GObject.ObjectBindPropertyMethodInfo
    ResolveChildProxyMethod "bindPropertyFull" o = GObject.ObjectBindPropertyFullMethodInfo
    ResolveChildProxyMethod "childAdded" o = ChildProxyChildAddedMethodInfo
    ResolveChildProxyMethod "childRemoved" o = ChildProxyChildRemovedMethodInfo
    ResolveChildProxyMethod "forceFloating" o = GObject.ObjectForceFloatingMethodInfo
    ResolveChildProxyMethod "freezeNotify" o = GObject.ObjectFreezeNotifyMethodInfo
    ResolveChildProxyMethod "isFloating" o = GObject.ObjectIsFloatingMethodInfo
    ResolveChildProxyMethod "lookup" o = ChildProxyLookupMethodInfo
    ResolveChildProxyMethod "notify" o = GObject.ObjectNotifyMethodInfo
    ResolveChildProxyMethod "notifyByPspec" o = GObject.ObjectNotifyByPspecMethodInfo
    ResolveChildProxyMethod "ref" o = GObject.ObjectRefMethodInfo
    ResolveChildProxyMethod "refSink" o = GObject.ObjectRefSinkMethodInfo
    ResolveChildProxyMethod "replaceData" o = GObject.ObjectReplaceDataMethodInfo
    ResolveChildProxyMethod "replaceQdata" o = GObject.ObjectReplaceQdataMethodInfo
    ResolveChildProxyMethod "runDispose" o = GObject.ObjectRunDisposeMethodInfo
    ResolveChildProxyMethod "stealData" o = GObject.ObjectStealDataMethodInfo
    ResolveChildProxyMethod "stealQdata" o = GObject.ObjectStealQdataMethodInfo
    ResolveChildProxyMethod "thawNotify" o = GObject.ObjectThawNotifyMethodInfo
    ResolveChildProxyMethod "unref" o = GObject.ObjectUnrefMethodInfo
    ResolveChildProxyMethod "watchClosure" o = GObject.ObjectWatchClosureMethodInfo
    ResolveChildProxyMethod "getChildByIndex" o = ChildProxyGetChildByIndexMethodInfo
    ResolveChildProxyMethod "getChildByName" o = ChildProxyGetChildByNameMethodInfo
    ResolveChildProxyMethod "getChildrenCount" o = ChildProxyGetChildrenCountMethodInfo
    ResolveChildProxyMethod "getData" o = GObject.ObjectGetDataMethodInfo
    ResolveChildProxyMethod "getQdata" o = GObject.ObjectGetQdataMethodInfo
    ResolveChildProxyMethod "setData" o = GObject.ObjectSetDataMethodInfo
    ResolveChildProxyMethod l o = MethodResolutionFailed l o

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

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

-- signal ChildProxy::child-added
type ChildProxyChildAddedCallback =
    GObject.Object ->
    T.Text ->
    IO ()

noChildProxyChildAddedCallback :: Maybe ChildProxyChildAddedCallback
noChildProxyChildAddedCallback = Nothing

type ChildProxyChildAddedCallbackC =
    Ptr () ->                               -- object
    Ptr GObject.Object ->
    CString ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkChildProxyChildAddedCallback :: ChildProxyChildAddedCallbackC -> IO (FunPtr ChildProxyChildAddedCallbackC)

childProxyChildAddedClosure :: ChildProxyChildAddedCallback -> IO Closure
childProxyChildAddedClosure cb = newCClosure =<< mkChildProxyChildAddedCallback wrapped
    where wrapped = childProxyChildAddedCallbackWrapper cb

childProxyChildAddedCallbackWrapper ::
    ChildProxyChildAddedCallback ->
    Ptr () ->
    Ptr GObject.Object ->
    CString ->
    Ptr () ->
    IO ()
childProxyChildAddedCallbackWrapper _cb _ object name _ = do
    object' <- (newObject GObject.Object) object
    name' <- cstringToText name
    _cb  object' name'

onChildProxyChildAdded :: (GObject a, MonadIO m) => a -> ChildProxyChildAddedCallback -> m SignalHandlerId
onChildProxyChildAdded obj cb = liftIO $ connectChildProxyChildAdded obj cb SignalConnectBefore
afterChildProxyChildAdded :: (GObject a, MonadIO m) => a -> ChildProxyChildAddedCallback -> m SignalHandlerId
afterChildProxyChildAdded obj cb = connectChildProxyChildAdded obj cb SignalConnectAfter

connectChildProxyChildAdded :: (GObject a, MonadIO m) =>
                               a -> ChildProxyChildAddedCallback -> SignalConnectMode -> m SignalHandlerId
connectChildProxyChildAdded obj cb after = liftIO $ do
    cb' <- mkChildProxyChildAddedCallback (childProxyChildAddedCallbackWrapper cb)
    connectSignalFunPtr obj "child-added" cb' after

-- signal ChildProxy::child-removed
type ChildProxyChildRemovedCallback =
    GObject.Object ->
    T.Text ->
    IO ()

noChildProxyChildRemovedCallback :: Maybe ChildProxyChildRemovedCallback
noChildProxyChildRemovedCallback = Nothing

type ChildProxyChildRemovedCallbackC =
    Ptr () ->                               -- object
    Ptr GObject.Object ->
    CString ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkChildProxyChildRemovedCallback :: ChildProxyChildRemovedCallbackC -> IO (FunPtr ChildProxyChildRemovedCallbackC)

childProxyChildRemovedClosure :: ChildProxyChildRemovedCallback -> IO Closure
childProxyChildRemovedClosure cb = newCClosure =<< mkChildProxyChildRemovedCallback wrapped
    where wrapped = childProxyChildRemovedCallbackWrapper cb

childProxyChildRemovedCallbackWrapper ::
    ChildProxyChildRemovedCallback ->
    Ptr () ->
    Ptr GObject.Object ->
    CString ->
    Ptr () ->
    IO ()
childProxyChildRemovedCallbackWrapper _cb _ object name _ = do
    object' <- (newObject GObject.Object) object
    name' <- cstringToText name
    _cb  object' name'

onChildProxyChildRemoved :: (GObject a, MonadIO m) => a -> ChildProxyChildRemovedCallback -> m SignalHandlerId
onChildProxyChildRemoved obj cb = liftIO $ connectChildProxyChildRemoved obj cb SignalConnectBefore
afterChildProxyChildRemoved :: (GObject a, MonadIO m) => a -> ChildProxyChildRemovedCallback -> m SignalHandlerId
afterChildProxyChildRemoved obj cb = connectChildProxyChildRemoved obj cb SignalConnectAfter

connectChildProxyChildRemoved :: (GObject a, MonadIO m) =>
                                 a -> ChildProxyChildRemovedCallback -> SignalConnectMode -> m SignalHandlerId
connectChildProxyChildRemoved obj cb after = liftIO $ do
    cb' <- mkChildProxyChildRemovedCallback (childProxyChildRemovedCallbackWrapper cb)
    connectSignalFunPtr obj "child-removed" cb' after

type instance AttributeList ChildProxy = ChildProxyAttributeList
type ChildProxyAttributeList = ('[ ] :: [(Symbol, *)])

data ChildProxyChildAddedSignalInfo
instance SignalInfo ChildProxyChildAddedSignalInfo where
    type HaskellCallbackType ChildProxyChildAddedSignalInfo = ChildProxyChildAddedCallback
    connectSignal _ = connectChildProxyChildAdded

data ChildProxyChildRemovedSignalInfo
instance SignalInfo ChildProxyChildRemovedSignalInfo where
    type HaskellCallbackType ChildProxyChildRemovedSignalInfo = ChildProxyChildRemovedCallback
    connectSignal _ = connectChildProxyChildRemoved

type instance SignalList ChildProxy = ChildProxySignalList
type ChildProxySignalList = ('[ '("childAdded", ChildProxyChildAddedSignalInfo), '("childRemoved", ChildProxyChildRemovedSignalInfo), '("notify", GObject.ObjectNotifySignalInfo)] :: [(Symbol, *)])

foreign import ccall "gst_child_proxy_get_type"
    c_gst_child_proxy_get_type :: IO GType

type instance ParentTypes ChildProxy = ChildProxyParentTypes
type ChildProxyParentTypes = '[GObject.Object]

instance GObject ChildProxy where
    gobjectIsInitiallyUnowned _ = False
    gobjectType _ = c_gst_child_proxy_get_type
    

class GObject o => ChildProxyK o
instance (GObject o, IsDescendantOf ChildProxy o) => ChildProxyK o

toChildProxy :: ChildProxyK o => o -> IO ChildProxy
toChildProxy = unsafeCastTo ChildProxy

-- method ChildProxy::child_added
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "ChildProxy", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "child", argType = TInterface "GObject" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "name", argType = TBasicType TUTF8, 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_child_proxy_child_added" gst_child_proxy_child_added :: 
    Ptr ChildProxy ->                       -- _obj : TInterface "Gst" "ChildProxy"
    Ptr GObject.Object ->                   -- child : TInterface "GObject" "Object"
    CString ->                              -- name : TBasicType TUTF8
    IO ()


childProxyChildAdded ::
    (MonadIO m, ChildProxyK a, GObject.ObjectK b) =>
    a                                       -- _obj
    -> b                                    -- child
    -> T.Text                               -- name
    -> m ()                                 -- result
childProxyChildAdded _obj child name = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let child' = unsafeManagedPtrCastPtr child
    name' <- textToCString name
    gst_child_proxy_child_added _obj' child' name'
    touchManagedPtr _obj
    touchManagedPtr child
    freeMem name'
    return ()

data ChildProxyChildAddedMethodInfo
instance (signature ~ (b -> T.Text -> m ()), MonadIO m, ChildProxyK a, GObject.ObjectK b) => MethodInfo ChildProxyChildAddedMethodInfo a signature where
    overloadedMethod _ = childProxyChildAdded

-- method ChildProxy::child_removed
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "ChildProxy", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "child", argType = TInterface "GObject" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "name", argType = TBasicType TUTF8, 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_child_proxy_child_removed" gst_child_proxy_child_removed :: 
    Ptr ChildProxy ->                       -- _obj : TInterface "Gst" "ChildProxy"
    Ptr GObject.Object ->                   -- child : TInterface "GObject" "Object"
    CString ->                              -- name : TBasicType TUTF8
    IO ()


childProxyChildRemoved ::
    (MonadIO m, ChildProxyK a, GObject.ObjectK b) =>
    a                                       -- _obj
    -> b                                    -- child
    -> T.Text                               -- name
    -> m ()                                 -- result
childProxyChildRemoved _obj child name = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let child' = unsafeManagedPtrCastPtr child
    name' <- textToCString name
    gst_child_proxy_child_removed _obj' child' name'
    touchManagedPtr _obj
    touchManagedPtr child
    freeMem name'
    return ()

data ChildProxyChildRemovedMethodInfo
instance (signature ~ (b -> T.Text -> m ()), MonadIO m, ChildProxyK a, GObject.ObjectK b) => MethodInfo ChildProxyChildRemovedMethodInfo a signature where
    overloadedMethod _ = childProxyChildRemoved

-- method ChildProxy::get_child_by_index
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "ChildProxy", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "index", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TInterface "GObject" "Object"
-- throws : False
-- Skip return : False

foreign import ccall "gst_child_proxy_get_child_by_index" gst_child_proxy_get_child_by_index :: 
    Ptr ChildProxy ->                       -- _obj : TInterface "Gst" "ChildProxy"
    Word32 ->                               -- index : TBasicType TUInt32
    IO (Ptr GObject.Object)


childProxyGetChildByIndex ::
    (MonadIO m, ChildProxyK a) =>
    a                                       -- _obj
    -> Word32                               -- index
    -> m GObject.Object                     -- result
childProxyGetChildByIndex _obj index = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gst_child_proxy_get_child_by_index _obj' index
    checkUnexpectedReturnNULL "gst_child_proxy_get_child_by_index" result
    result' <- (wrapObject GObject.Object) result
    touchManagedPtr _obj
    return result'

data ChildProxyGetChildByIndexMethodInfo
instance (signature ~ (Word32 -> m GObject.Object), MonadIO m, ChildProxyK a) => MethodInfo ChildProxyGetChildByIndexMethodInfo a signature where
    overloadedMethod _ = childProxyGetChildByIndex

-- method ChildProxy::get_child_by_name
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "ChildProxy", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TInterface "GObject" "Object"
-- throws : False
-- Skip return : False

foreign import ccall "gst_child_proxy_get_child_by_name" gst_child_proxy_get_child_by_name :: 
    Ptr ChildProxy ->                       -- _obj : TInterface "Gst" "ChildProxy"
    CString ->                              -- name : TBasicType TUTF8
    IO (Ptr GObject.Object)


childProxyGetChildByName ::
    (MonadIO m, ChildProxyK a) =>
    a                                       -- _obj
    -> T.Text                               -- name
    -> m GObject.Object                     -- result
childProxyGetChildByName _obj name = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    name' <- textToCString name
    result <- gst_child_proxy_get_child_by_name _obj' name'
    checkUnexpectedReturnNULL "gst_child_proxy_get_child_by_name" result
    result' <- (wrapObject GObject.Object) result
    touchManagedPtr _obj
    freeMem name'
    return result'

data ChildProxyGetChildByNameMethodInfo
instance (signature ~ (T.Text -> m GObject.Object), MonadIO m, ChildProxyK a) => MethodInfo ChildProxyGetChildByNameMethodInfo a signature where
    overloadedMethod _ = childProxyGetChildByName

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

foreign import ccall "gst_child_proxy_get_children_count" gst_child_proxy_get_children_count :: 
    Ptr ChildProxy ->                       -- _obj : TInterface "Gst" "ChildProxy"
    IO Word32


childProxyGetChildrenCount ::
    (MonadIO m, ChildProxyK a) =>
    a                                       -- _obj
    -> m Word32                             -- result
childProxyGetChildrenCount _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gst_child_proxy_get_children_count _obj'
    touchManagedPtr _obj
    return result

data ChildProxyGetChildrenCountMethodInfo
instance (signature ~ (m Word32), MonadIO m, ChildProxyK a) => MethodInfo ChildProxyGetChildrenCountMethodInfo a signature where
    overloadedMethod _ = childProxyGetChildrenCount

-- method ChildProxy::get_property
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "ChildProxy", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "value", argType = TInterface "GObject" "Value", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gst_child_proxy_get_property" gst_child_proxy_get_property :: 
    Ptr ChildProxy ->                       -- _obj : TInterface "Gst" "ChildProxy"
    CString ->                              -- name : TBasicType TUTF8
    Ptr GValue ->                           -- value : TInterface "GObject" "Value"
    IO ()


childProxyGetProperty ::
    (MonadIO m, ChildProxyK a) =>
    a                                       -- _obj
    -> T.Text                               -- name
    -> m (GValue)                           -- result
childProxyGetProperty _obj name = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    name' <- textToCString name
    value <- callocBoxedBytes 24 :: IO (Ptr GValue)
    gst_child_proxy_get_property _obj' name' value
    value' <- (wrapBoxed GValue) value
    touchManagedPtr _obj
    freeMem name'
    return value'

data ChildProxyGetPropertyMethodInfo
instance (signature ~ (T.Text -> m (GValue)), MonadIO m, ChildProxyK a) => MethodInfo ChildProxyGetPropertyMethodInfo a signature where
    overloadedMethod _ = childProxyGetProperty

-- method ChildProxy::lookup
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "ChildProxy", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "target", argType = TInterface "GObject" "Object", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "pspec", argType = TParamSpec, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gst_child_proxy_lookup" gst_child_proxy_lookup :: 
    Ptr ChildProxy ->                       -- _obj : TInterface "Gst" "ChildProxy"
    CString ->                              -- name : TBasicType TUTF8
    Ptr (Ptr GObject.Object) ->             -- target : TInterface "GObject" "Object"
    Ptr (Ptr GParamSpec) ->                 -- pspec : TParamSpec
    IO CInt


childProxyLookup ::
    (MonadIO m, ChildProxyK a) =>
    a                                       -- _obj
    -> T.Text                               -- name
    -> m (Bool,GObject.Object,GParamSpec)   -- result
childProxyLookup _obj name = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    name' <- textToCString name
    target <- allocMem :: IO (Ptr (Ptr GObject.Object))
    pspec <- allocMem :: IO (Ptr (Ptr GParamSpec))
    result <- gst_child_proxy_lookup _obj' name' target pspec
    let result' = (/= 0) result
    target' <- peek target
    target'' <- (wrapObject GObject.Object) target'
    pspec' <- peek pspec
    pspec'' <- newGParamSpecFromPtr pspec'
    touchManagedPtr _obj
    freeMem name'
    freeMem target
    freeMem pspec
    return (result', target'', pspec'')

data ChildProxyLookupMethodInfo
instance (signature ~ (T.Text -> m (Bool,GObject.Object,GParamSpec)), MonadIO m, ChildProxyK a) => MethodInfo ChildProxyLookupMethodInfo a signature where
    overloadedMethod _ = childProxyLookup

-- method ChildProxy::set_property
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "ChildProxy", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "value", argType = TInterface "GObject" "Value", 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_child_proxy_set_property" gst_child_proxy_set_property :: 
    Ptr ChildProxy ->                       -- _obj : TInterface "Gst" "ChildProxy"
    CString ->                              -- name : TBasicType TUTF8
    Ptr GValue ->                           -- value : TInterface "GObject" "Value"
    IO ()


childProxySetProperty ::
    (MonadIO m, ChildProxyK a) =>
    a                                       -- _obj
    -> T.Text                               -- name
    -> GValue                               -- value
    -> m ()                                 -- result
childProxySetProperty _obj name value = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    name' <- textToCString name
    let value' = unsafeManagedPtrGetPtr value
    gst_child_proxy_set_property _obj' name' value'
    touchManagedPtr _obj
    touchManagedPtr value
    freeMem name'
    return ()

data ChildProxySetPropertyMethodInfo
instance (signature ~ (T.Text -> GValue -> m ()), MonadIO m, ChildProxyK a) => MethodInfo ChildProxySetPropertyMethodInfo a signature where
    overloadedMethod _ = childProxySetProperty