packages feed

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

-- * Exported types
    PadTemplate(..)                         ,
    PadTemplateK                            ,
    toPadTemplate                           ,
    noPadTemplate                           ,


 -- * Methods
-- ** padTemplateGetCaps
    PadTemplateGetCapsMethodInfo            ,
    padTemplateGetCaps                      ,


-- ** padTemplateNew
    padTemplateNew                          ,


-- ** padTemplatePadCreated
    PadTemplatePadCreatedMethodInfo         ,
    padTemplatePadCreated                   ,




 -- * Properties
-- ** Caps
    PadTemplateCapsPropertyInfo             ,
    constructPadTemplateCaps                ,
    getPadTemplateCaps                      ,


-- ** Direction
    PadTemplateDirectionPropertyInfo        ,
    constructPadTemplateDirection           ,
    getPadTemplateDirection                 ,


-- ** NameTemplate
    PadTemplateNameTemplatePropertyInfo     ,
    constructPadTemplateNameTemplate        ,
    getPadTemplateNameTemplate              ,


-- ** Presence
    PadTemplatePresencePropertyInfo         ,
    constructPadTemplatePresence            ,
    getPadTemplatePresence                  ,




 -- * Signals
-- ** PadCreated
    PadTemplatePadCreatedCallback           ,
    PadTemplatePadCreatedCallbackC          ,
    PadTemplatePadCreatedSignalInfo         ,
    afterPadTemplatePadCreated              ,
    mkPadTemplatePadCreatedCallback         ,
    noPadTemplatePadCreatedCallback         ,
    onPadTemplatePadCreated                 ,
    padTemplatePadCreatedCallbackWrapper    ,
    padTemplatePadCreatedClosure            ,




    ) 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 PadTemplate = PadTemplate (ForeignPtr PadTemplate)
foreign import ccall "gst_pad_template_get_type"
    c_gst_pad_template_get_type :: IO GType

type instance ParentTypes PadTemplate = PadTemplateParentTypes
type PadTemplateParentTypes = '[Object, GObject.Object]

instance GObject PadTemplate where
    gobjectIsInitiallyUnowned _ = True
    gobjectType _ = c_gst_pad_template_get_type
    

class GObject o => PadTemplateK o
instance (GObject o, IsDescendantOf PadTemplate o) => PadTemplateK o

toPadTemplate :: PadTemplateK o => o -> IO PadTemplate
toPadTemplate = unsafeCastTo PadTemplate

noPadTemplate :: Maybe PadTemplate
noPadTemplate = Nothing

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

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

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

-- signal PadTemplate::pad-created
type PadTemplatePadCreatedCallback =
    Pad ->
    IO ()

noPadTemplatePadCreatedCallback :: Maybe PadTemplatePadCreatedCallback
noPadTemplatePadCreatedCallback = Nothing

type PadTemplatePadCreatedCallbackC =
    Ptr () ->                               -- object
    Ptr Pad ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkPadTemplatePadCreatedCallback :: PadTemplatePadCreatedCallbackC -> IO (FunPtr PadTemplatePadCreatedCallbackC)

padTemplatePadCreatedClosure :: PadTemplatePadCreatedCallback -> IO Closure
padTemplatePadCreatedClosure cb = newCClosure =<< mkPadTemplatePadCreatedCallback wrapped
    where wrapped = padTemplatePadCreatedCallbackWrapper cb

padTemplatePadCreatedCallbackWrapper ::
    PadTemplatePadCreatedCallback ->
    Ptr () ->
    Ptr Pad ->
    Ptr () ->
    IO ()
padTemplatePadCreatedCallbackWrapper _cb _ pad _ = do
    pad' <- (newObject Pad) pad
    _cb  pad'

onPadTemplatePadCreated :: (GObject a, MonadIO m) => a -> PadTemplatePadCreatedCallback -> m SignalHandlerId
onPadTemplatePadCreated obj cb = liftIO $ connectPadTemplatePadCreated obj cb SignalConnectBefore
afterPadTemplatePadCreated :: (GObject a, MonadIO m) => a -> PadTemplatePadCreatedCallback -> m SignalHandlerId
afterPadTemplatePadCreated obj cb = connectPadTemplatePadCreated obj cb SignalConnectAfter

connectPadTemplatePadCreated :: (GObject a, MonadIO m) =>
                                a -> PadTemplatePadCreatedCallback -> SignalConnectMode -> m SignalHandlerId
connectPadTemplatePadCreated obj cb after = liftIO $ do
    cb' <- mkPadTemplatePadCreatedCallback (padTemplatePadCreatedCallbackWrapper cb)
    connectSignalFunPtr obj "pad-created" cb' after

-- VVV Prop "caps"
   -- Type: TInterface "Gst" "Caps"
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]

getPadTemplateCaps :: (MonadIO m, PadTemplateK o) => o -> m Caps
getPadTemplateCaps obj = liftIO $ getObjectPropertyBoxed obj "caps" Caps

constructPadTemplateCaps :: Caps -> IO ([Char], GValue)
constructPadTemplateCaps val = constructObjectPropertyBoxed "caps" val

data PadTemplateCapsPropertyInfo
instance AttrInfo PadTemplateCapsPropertyInfo where
    type AttrAllowedOps PadTemplateCapsPropertyInfo = '[ 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint PadTemplateCapsPropertyInfo = (~) Caps
    type AttrBaseTypeConstraint PadTemplateCapsPropertyInfo = PadTemplateK
    type AttrGetType PadTemplateCapsPropertyInfo = Caps
    type AttrLabel PadTemplateCapsPropertyInfo = "caps"
    attrGet _ = getPadTemplateCaps
    attrSet _ = undefined
    attrConstruct _ = constructPadTemplateCaps

-- VVV Prop "direction"
   -- Type: TInterface "Gst" "PadDirection"
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]

getPadTemplateDirection :: (MonadIO m, PadTemplateK o) => o -> m PadDirection
getPadTemplateDirection obj = liftIO $ getObjectPropertyEnum obj "direction"

constructPadTemplateDirection :: PadDirection -> IO ([Char], GValue)
constructPadTemplateDirection val = constructObjectPropertyEnum "direction" val

data PadTemplateDirectionPropertyInfo
instance AttrInfo PadTemplateDirectionPropertyInfo where
    type AttrAllowedOps PadTemplateDirectionPropertyInfo = '[ 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint PadTemplateDirectionPropertyInfo = (~) PadDirection
    type AttrBaseTypeConstraint PadTemplateDirectionPropertyInfo = PadTemplateK
    type AttrGetType PadTemplateDirectionPropertyInfo = PadDirection
    type AttrLabel PadTemplateDirectionPropertyInfo = "direction"
    attrGet _ = getPadTemplateDirection
    attrSet _ = undefined
    attrConstruct _ = constructPadTemplateDirection

-- VVV Prop "name-template"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]

getPadTemplateNameTemplate :: (MonadIO m, PadTemplateK o) => o -> m T.Text
getPadTemplateNameTemplate obj = liftIO $ getObjectPropertyString obj "name-template"

constructPadTemplateNameTemplate :: T.Text -> IO ([Char], GValue)
constructPadTemplateNameTemplate val = constructObjectPropertyString "name-template" val

data PadTemplateNameTemplatePropertyInfo
instance AttrInfo PadTemplateNameTemplatePropertyInfo where
    type AttrAllowedOps PadTemplateNameTemplatePropertyInfo = '[ 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint PadTemplateNameTemplatePropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint PadTemplateNameTemplatePropertyInfo = PadTemplateK
    type AttrGetType PadTemplateNameTemplatePropertyInfo = T.Text
    type AttrLabel PadTemplateNameTemplatePropertyInfo = "name-template"
    attrGet _ = getPadTemplateNameTemplate
    attrSet _ = undefined
    attrConstruct _ = constructPadTemplateNameTemplate

-- VVV Prop "presence"
   -- Type: TInterface "Gst" "PadPresence"
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]

getPadTemplatePresence :: (MonadIO m, PadTemplateK o) => o -> m PadPresence
getPadTemplatePresence obj = liftIO $ getObjectPropertyEnum obj "presence"

constructPadTemplatePresence :: PadPresence -> IO ([Char], GValue)
constructPadTemplatePresence val = constructObjectPropertyEnum "presence" val

data PadTemplatePresencePropertyInfo
instance AttrInfo PadTemplatePresencePropertyInfo where
    type AttrAllowedOps PadTemplatePresencePropertyInfo = '[ 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint PadTemplatePresencePropertyInfo = (~) PadPresence
    type AttrBaseTypeConstraint PadTemplatePresencePropertyInfo = PadTemplateK
    type AttrGetType PadTemplatePresencePropertyInfo = PadPresence
    type AttrLabel PadTemplatePresencePropertyInfo = "presence"
    attrGet _ = getPadTemplatePresence
    attrSet _ = undefined
    attrConstruct _ = constructPadTemplatePresence

type instance AttributeList PadTemplate = PadTemplateAttributeList
type PadTemplateAttributeList = ('[ '("caps", PadTemplateCapsPropertyInfo), '("direction", PadTemplateDirectionPropertyInfo), '("name", ObjectNamePropertyInfo), '("nameTemplate", PadTemplateNameTemplatePropertyInfo), '("parent", ObjectParentPropertyInfo), '("presence", PadTemplatePresencePropertyInfo)] :: [(Symbol, *)])

data PadTemplatePadCreatedSignalInfo
instance SignalInfo PadTemplatePadCreatedSignalInfo where
    type HaskellCallbackType PadTemplatePadCreatedSignalInfo = PadTemplatePadCreatedCallback
    connectSignal _ = connectPadTemplatePadCreated

type instance SignalList PadTemplate = PadTemplateSignalList
type PadTemplateSignalList = ('[ '("deepNotify", ObjectDeepNotifySignalInfo), '("notify", GObject.ObjectNotifySignalInfo), '("padCreated", PadTemplatePadCreatedSignalInfo)] :: [(Symbol, *)])

-- method PadTemplate::new
-- method type : Constructor
-- Args : [Arg {argCName = "name_template", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "direction", argType = TInterface "Gst" "PadDirection", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "presence", argType = TInterface "Gst" "PadPresence", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "caps", argType = TInterface "Gst" "Caps", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TInterface "Gst" "PadTemplate"
-- throws : False
-- Skip return : False

foreign import ccall "gst_pad_template_new" gst_pad_template_new :: 
    CString ->                              -- name_template : TBasicType TUTF8
    CUInt ->                                -- direction : TInterface "Gst" "PadDirection"
    CUInt ->                                -- presence : TInterface "Gst" "PadPresence"
    Ptr Caps ->                             -- caps : TInterface "Gst" "Caps"
    IO (Ptr PadTemplate)


padTemplateNew ::
    (MonadIO m) =>
    T.Text                                  -- nameTemplate
    -> PadDirection                         -- direction
    -> PadPresence                          -- presence
    -> Caps                                 -- caps
    -> m PadTemplate                        -- result
padTemplateNew nameTemplate direction presence caps = liftIO $ do
    nameTemplate' <- textToCString nameTemplate
    let direction' = (fromIntegral . fromEnum) direction
    let presence' = (fromIntegral . fromEnum) presence
    let caps' = unsafeManagedPtrGetPtr caps
    result <- gst_pad_template_new nameTemplate' direction' presence' caps'
    checkUnexpectedReturnNULL "gst_pad_template_new" result
    result' <- (newObject PadTemplate) result
    touchManagedPtr caps
    freeMem nameTemplate'
    return result'

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

foreign import ccall "gst_pad_template_get_caps" gst_pad_template_get_caps :: 
    Ptr PadTemplate ->                      -- _obj : TInterface "Gst" "PadTemplate"
    IO (Ptr Caps)


padTemplateGetCaps ::
    (MonadIO m, PadTemplateK a) =>
    a                                       -- _obj
    -> m Caps                               -- result
padTemplateGetCaps _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gst_pad_template_get_caps _obj'
    checkUnexpectedReturnNULL "gst_pad_template_get_caps" result
    result' <- (wrapBoxed Caps) result
    touchManagedPtr _obj
    return result'

data PadTemplateGetCapsMethodInfo
instance (signature ~ (m Caps), MonadIO m, PadTemplateK a) => MethodInfo PadTemplateGetCapsMethodInfo a signature where
    overloadedMethod _ = padTemplateGetCaps

-- method PadTemplate::pad_created
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "PadTemplate", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "pad", argType = TInterface "Gst" "Pad", 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_pad_template_pad_created" gst_pad_template_pad_created :: 
    Ptr PadTemplate ->                      -- _obj : TInterface "Gst" "PadTemplate"
    Ptr Pad ->                              -- pad : TInterface "Gst" "Pad"
    IO ()


padTemplatePadCreated ::
    (MonadIO m, PadTemplateK a, PadK b) =>
    a                                       -- _obj
    -> b                                    -- pad
    -> m ()                                 -- result
padTemplatePadCreated _obj pad = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let pad' = unsafeManagedPtrCastPtr pad
    gst_pad_template_pad_created _obj' pad'
    touchManagedPtr _obj
    touchManagedPtr pad
    return ()

data PadTemplatePadCreatedMethodInfo
instance (signature ~ (b -> m ()), MonadIO m, PadTemplateK a, PadK b) => MethodInfo PadTemplatePadCreatedMethodInfo a signature where
    overloadedMethod _ = padTemplatePadCreated