packages feed

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

-- * Exported types
    PluginFeature(..)                       ,
    PluginFeatureK                          ,
    toPluginFeature                         ,
    noPluginFeature                         ,


 -- * Methods
-- ** pluginFeatureCheckVersion
    PluginFeatureCheckVersionMethodInfo     ,
    pluginFeatureCheckVersion               ,


-- ** pluginFeatureGetPlugin
    PluginFeatureGetPluginMethodInfo        ,
    pluginFeatureGetPlugin                  ,


-- ** pluginFeatureGetPluginName
    PluginFeatureGetPluginNameMethodInfo    ,
    pluginFeatureGetPluginName              ,


-- ** pluginFeatureGetRank
    PluginFeatureGetRankMethodInfo          ,
    pluginFeatureGetRank                    ,


-- ** pluginFeatureListCopy
    pluginFeatureListCopy                   ,


-- ** pluginFeatureListDebug
    pluginFeatureListDebug                  ,


-- ** pluginFeatureListFree
    pluginFeatureListFree                   ,


-- ** pluginFeatureLoad
    PluginFeatureLoadMethodInfo             ,
    pluginFeatureLoad                       ,


-- ** pluginFeatureRankCompareFunc
    pluginFeatureRankCompareFunc            ,


-- ** pluginFeatureSetRank
    PluginFeatureSetRankMethodInfo          ,
    pluginFeatureSetRank                    ,




    ) 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 PluginFeature = PluginFeature (ForeignPtr PluginFeature)
foreign import ccall "gst_plugin_feature_get_type"
    c_gst_plugin_feature_get_type :: IO GType

type instance ParentTypes PluginFeature = PluginFeatureParentTypes
type PluginFeatureParentTypes = '[Object, GObject.Object]

instance GObject PluginFeature where
    gobjectIsInitiallyUnowned _ = True
    gobjectType _ = c_gst_plugin_feature_get_type
    

class GObject o => PluginFeatureK o
instance (GObject o, IsDescendantOf PluginFeature o) => PluginFeatureK o

toPluginFeature :: PluginFeatureK o => o -> IO PluginFeature
toPluginFeature = unsafeCastTo PluginFeature

noPluginFeature :: Maybe PluginFeature
noPluginFeature = Nothing

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

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

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

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

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

-- method PluginFeature::check_version
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "PluginFeature", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "min_major", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "min_minor", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "min_micro", argType = TBasicType TUInt32, 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 "gst_plugin_feature_check_version" gst_plugin_feature_check_version :: 
    Ptr PluginFeature ->                    -- _obj : TInterface "Gst" "PluginFeature"
    Word32 ->                               -- min_major : TBasicType TUInt32
    Word32 ->                               -- min_minor : TBasicType TUInt32
    Word32 ->                               -- min_micro : TBasicType TUInt32
    IO CInt


pluginFeatureCheckVersion ::
    (MonadIO m, PluginFeatureK a) =>
    a                                       -- _obj
    -> Word32                               -- minMajor
    -> Word32                               -- minMinor
    -> Word32                               -- minMicro
    -> m Bool                               -- result
pluginFeatureCheckVersion _obj minMajor minMinor minMicro = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gst_plugin_feature_check_version _obj' minMajor minMinor minMicro
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

data PluginFeatureCheckVersionMethodInfo
instance (signature ~ (Word32 -> Word32 -> Word32 -> m Bool), MonadIO m, PluginFeatureK a) => MethodInfo PluginFeatureCheckVersionMethodInfo a signature where
    overloadedMethod _ = pluginFeatureCheckVersion

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

foreign import ccall "gst_plugin_feature_get_plugin" gst_plugin_feature_get_plugin :: 
    Ptr PluginFeature ->                    -- _obj : TInterface "Gst" "PluginFeature"
    IO (Ptr Plugin)


pluginFeatureGetPlugin ::
    (MonadIO m, PluginFeatureK a) =>
    a                                       -- _obj
    -> m Plugin                             -- result
pluginFeatureGetPlugin _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gst_plugin_feature_get_plugin _obj'
    checkUnexpectedReturnNULL "gst_plugin_feature_get_plugin" result
    result' <- (wrapObject Plugin) result
    touchManagedPtr _obj
    return result'

data PluginFeatureGetPluginMethodInfo
instance (signature ~ (m Plugin), MonadIO m, PluginFeatureK a) => MethodInfo PluginFeatureGetPluginMethodInfo a signature where
    overloadedMethod _ = pluginFeatureGetPlugin

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

foreign import ccall "gst_plugin_feature_get_plugin_name" gst_plugin_feature_get_plugin_name :: 
    Ptr PluginFeature ->                    -- _obj : TInterface "Gst" "PluginFeature"
    IO CString


pluginFeatureGetPluginName ::
    (MonadIO m, PluginFeatureK a) =>
    a                                       -- _obj
    -> m T.Text                             -- result
pluginFeatureGetPluginName _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gst_plugin_feature_get_plugin_name _obj'
    checkUnexpectedReturnNULL "gst_plugin_feature_get_plugin_name" result
    result' <- cstringToText result
    touchManagedPtr _obj
    return result'

data PluginFeatureGetPluginNameMethodInfo
instance (signature ~ (m T.Text), MonadIO m, PluginFeatureK a) => MethodInfo PluginFeatureGetPluginNameMethodInfo a signature where
    overloadedMethod _ = pluginFeatureGetPluginName

-- method PluginFeature::get_rank
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "PluginFeature", 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_plugin_feature_get_rank" gst_plugin_feature_get_rank :: 
    Ptr PluginFeature ->                    -- _obj : TInterface "Gst" "PluginFeature"
    IO Word32


pluginFeatureGetRank ::
    (MonadIO m, PluginFeatureK a) =>
    a                                       -- _obj
    -> m Word32                             -- result
pluginFeatureGetRank _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gst_plugin_feature_get_rank _obj'
    touchManagedPtr _obj
    return result

data PluginFeatureGetRankMethodInfo
instance (signature ~ (m Word32), MonadIO m, PluginFeatureK a) => MethodInfo PluginFeatureGetRankMethodInfo a signature where
    overloadedMethod _ = pluginFeatureGetRank

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

foreign import ccall "gst_plugin_feature_load" gst_plugin_feature_load :: 
    Ptr PluginFeature ->                    -- _obj : TInterface "Gst" "PluginFeature"
    IO (Ptr PluginFeature)


pluginFeatureLoad ::
    (MonadIO m, PluginFeatureK a) =>
    a                                       -- _obj
    -> m PluginFeature                      -- result
pluginFeatureLoad _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gst_plugin_feature_load _obj'
    checkUnexpectedReturnNULL "gst_plugin_feature_load" result
    result' <- (wrapObject PluginFeature) result
    touchManagedPtr _obj
    return result'

data PluginFeatureLoadMethodInfo
instance (signature ~ (m PluginFeature), MonadIO m, PluginFeatureK a) => MethodInfo PluginFeatureLoadMethodInfo a signature where
    overloadedMethod _ = pluginFeatureLoad

-- method PluginFeature::set_rank
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "PluginFeature", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "rank", argType = TBasicType TUInt32, 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_plugin_feature_set_rank" gst_plugin_feature_set_rank :: 
    Ptr PluginFeature ->                    -- _obj : TInterface "Gst" "PluginFeature"
    Word32 ->                               -- rank : TBasicType TUInt32
    IO ()


pluginFeatureSetRank ::
    (MonadIO m, PluginFeatureK a) =>
    a                                       -- _obj
    -> Word32                               -- rank
    -> m ()                                 -- result
pluginFeatureSetRank _obj rank = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gst_plugin_feature_set_rank _obj' rank
    touchManagedPtr _obj
    return ()

data PluginFeatureSetRankMethodInfo
instance (signature ~ (Word32 -> m ()), MonadIO m, PluginFeatureK a) => MethodInfo PluginFeatureSetRankMethodInfo a signature where
    overloadedMethod _ = pluginFeatureSetRank

-- method PluginFeature::list_copy
-- method type : MemberFunction
-- Args : [Arg {argCName = "list", argType = TGList (TInterface "Gst" "PluginFeature"), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TGList (TInterface "Gst" "PluginFeature")
-- throws : False
-- Skip return : False

foreign import ccall "gst_plugin_feature_list_copy" gst_plugin_feature_list_copy :: 
    Ptr (GList (Ptr PluginFeature)) ->      -- list : TGList (TInterface "Gst" "PluginFeature")
    IO (Ptr (GList (Ptr PluginFeature)))


pluginFeatureListCopy ::
    (MonadIO m, PluginFeatureK a) =>
    [a]                                     -- list
    -> m [PluginFeature]                    -- result
pluginFeatureListCopy list = liftIO $ do
    let list' = map unsafeManagedPtrCastPtr list
    list'' <- packGList list'
    result <- gst_plugin_feature_list_copy list''
    checkUnexpectedReturnNULL "gst_plugin_feature_list_copy" result
    result' <- unpackGList result
    result'' <- mapM (wrapObject PluginFeature) result'
    g_list_free result
    mapM_ touchManagedPtr list
    g_list_free list''
    return result''

-- method PluginFeature::list_debug
-- method type : MemberFunction
-- Args : [Arg {argCName = "list", argType = TGList (TInterface "Gst" "PluginFeature"), 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_plugin_feature_list_debug" gst_plugin_feature_list_debug :: 
    Ptr (GList (Ptr PluginFeature)) ->      -- list : TGList (TInterface "Gst" "PluginFeature")
    IO ()


pluginFeatureListDebug ::
    (MonadIO m, PluginFeatureK a) =>
    [a]                                     -- list
    -> m ()                                 -- result
pluginFeatureListDebug list = liftIO $ do
    let list' = map unsafeManagedPtrCastPtr list
    list'' <- packGList list'
    gst_plugin_feature_list_debug list''
    mapM_ touchManagedPtr list
    g_list_free list''
    return ()

-- method PluginFeature::list_free
-- method type : MemberFunction
-- Args : [Arg {argCName = "list", argType = TGList (TInterface "Gst" "PluginFeature"), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gst_plugin_feature_list_free" gst_plugin_feature_list_free :: 
    Ptr (GList (Ptr PluginFeature)) ->      -- list : TGList (TInterface "Gst" "PluginFeature")
    IO ()


pluginFeatureListFree ::
    (MonadIO m, PluginFeatureK a) =>
    [a]                                     -- list
    -> m ()                                 -- result
pluginFeatureListFree list = liftIO $ do
    list' <- mapM refObject list
    list'' <- packGList list'
    gst_plugin_feature_list_free list''
    mapM_ touchManagedPtr list
    return ()

-- method PluginFeature::rank_compare_func
-- method type : MemberFunction
-- Args : [Arg {argCName = "p1", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "p2", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "gst_plugin_feature_rank_compare_func" gst_plugin_feature_rank_compare_func :: 
    Ptr () ->                               -- p1 : TBasicType TVoid
    Ptr () ->                               -- p2 : TBasicType TVoid
    IO Int32


pluginFeatureRankCompareFunc ::
    (MonadIO m) =>
    Ptr ()                                  -- p1
    -> Ptr ()                               -- p2
    -> m Int32                              -- result
pluginFeatureRankCompareFunc p1 p2 = liftIO $ do
    result <- gst_plugin_feature_rank_compare_func p1 p2
    return result