packages feed

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

-- * Exported types
    DeviceProviderFactory(..)               ,
    DeviceProviderFactoryK                  ,
    toDeviceProviderFactory                 ,
    noDeviceProviderFactory                 ,


 -- * Methods
-- ** deviceProviderFactoryFind
    deviceProviderFactoryFind               ,


-- ** deviceProviderFactoryGet
    DeviceProviderFactoryGetMethodInfo      ,
    deviceProviderFactoryGet                ,


-- ** deviceProviderFactoryGetByName
    deviceProviderFactoryGetByName          ,


-- ** deviceProviderFactoryGetDeviceProviderType
    DeviceProviderFactoryGetDeviceProviderTypeMethodInfo,
    deviceProviderFactoryGetDeviceProviderType,


-- ** deviceProviderFactoryGetMetadata
    DeviceProviderFactoryGetMetadataMethodInfo,
    deviceProviderFactoryGetMetadata        ,


-- ** deviceProviderFactoryGetMetadataKeys
    DeviceProviderFactoryGetMetadataKeysMethodInfo,
    deviceProviderFactoryGetMetadataKeys    ,


-- ** deviceProviderFactoryHasClasses
    DeviceProviderFactoryHasClassesMethodInfo,
    deviceProviderFactoryHasClasses         ,


-- ** deviceProviderFactoryHasClassesv
    DeviceProviderFactoryHasClassesvMethodInfo,
    deviceProviderFactoryHasClassesv        ,


-- ** deviceProviderFactoryListGetDeviceProviders
    deviceProviderFactoryListGetDeviceProviders,




    ) 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 DeviceProviderFactory = DeviceProviderFactory (ForeignPtr DeviceProviderFactory)
foreign import ccall "gst_device_provider_factory_get_type"
    c_gst_device_provider_factory_get_type :: IO GType

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

instance GObject DeviceProviderFactory where
    gobjectIsInitiallyUnowned _ = True
    gobjectType _ = c_gst_device_provider_factory_get_type
    

class GObject o => DeviceProviderFactoryK o
instance (GObject o, IsDescendantOf DeviceProviderFactory o) => DeviceProviderFactoryK o

toDeviceProviderFactory :: DeviceProviderFactoryK o => o -> IO DeviceProviderFactory
toDeviceProviderFactory = unsafeCastTo DeviceProviderFactory

noDeviceProviderFactory :: Maybe DeviceProviderFactory
noDeviceProviderFactory = Nothing

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

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

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

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

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

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

foreign import ccall "gst_device_provider_factory_get" gst_device_provider_factory_get :: 
    Ptr DeviceProviderFactory ->            -- _obj : TInterface "Gst" "DeviceProviderFactory"
    IO (Ptr DeviceProvider)


deviceProviderFactoryGet ::
    (MonadIO m, DeviceProviderFactoryK a) =>
    a                                       -- _obj
    -> m DeviceProvider                     -- result
deviceProviderFactoryGet _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gst_device_provider_factory_get _obj'
    checkUnexpectedReturnNULL "gst_device_provider_factory_get" result
    result' <- (wrapObject DeviceProvider) result
    touchManagedPtr _obj
    return result'

data DeviceProviderFactoryGetMethodInfo
instance (signature ~ (m DeviceProvider), MonadIO m, DeviceProviderFactoryK a) => MethodInfo DeviceProviderFactoryGetMethodInfo a signature where
    overloadedMethod _ = deviceProviderFactoryGet

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

foreign import ccall "gst_device_provider_factory_get_device_provider_type" gst_device_provider_factory_get_device_provider_type :: 
    Ptr DeviceProviderFactory ->            -- _obj : TInterface "Gst" "DeviceProviderFactory"
    IO CGType


deviceProviderFactoryGetDeviceProviderType ::
    (MonadIO m, DeviceProviderFactoryK a) =>
    a                                       -- _obj
    -> m GType                              -- result
deviceProviderFactoryGetDeviceProviderType _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gst_device_provider_factory_get_device_provider_type _obj'
    let result' = GType result
    touchManagedPtr _obj
    return result'

data DeviceProviderFactoryGetDeviceProviderTypeMethodInfo
instance (signature ~ (m GType), MonadIO m, DeviceProviderFactoryK a) => MethodInfo DeviceProviderFactoryGetDeviceProviderTypeMethodInfo a signature where
    overloadedMethod _ = deviceProviderFactoryGetDeviceProviderType

-- method DeviceProviderFactory::get_metadata
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "DeviceProviderFactory", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "key", argType = TBasicType TUTF8, 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_device_provider_factory_get_metadata" gst_device_provider_factory_get_metadata :: 
    Ptr DeviceProviderFactory ->            -- _obj : TInterface "Gst" "DeviceProviderFactory"
    CString ->                              -- key : TBasicType TUTF8
    IO CString


deviceProviderFactoryGetMetadata ::
    (MonadIO m, DeviceProviderFactoryK a) =>
    a                                       -- _obj
    -> T.Text                               -- key
    -> m T.Text                             -- result
deviceProviderFactoryGetMetadata _obj key = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    key' <- textToCString key
    result <- gst_device_provider_factory_get_metadata _obj' key'
    checkUnexpectedReturnNULL "gst_device_provider_factory_get_metadata" result
    result' <- cstringToText result
    touchManagedPtr _obj
    freeMem key'
    return result'

data DeviceProviderFactoryGetMetadataMethodInfo
instance (signature ~ (T.Text -> m T.Text), MonadIO m, DeviceProviderFactoryK a) => MethodInfo DeviceProviderFactoryGetMetadataMethodInfo a signature where
    overloadedMethod _ = deviceProviderFactoryGetMetadata

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

foreign import ccall "gst_device_provider_factory_get_metadata_keys" gst_device_provider_factory_get_metadata_keys :: 
    Ptr DeviceProviderFactory ->            -- _obj : TInterface "Gst" "DeviceProviderFactory"
    IO (Ptr CString)


deviceProviderFactoryGetMetadataKeys ::
    (MonadIO m, DeviceProviderFactoryK a) =>
    a                                       -- _obj
    -> m [T.Text]                           -- result
deviceProviderFactoryGetMetadataKeys _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gst_device_provider_factory_get_metadata_keys _obj'
    checkUnexpectedReturnNULL "gst_device_provider_factory_get_metadata_keys" result
    result' <- unpackZeroTerminatedUTF8CArray result
    mapZeroTerminatedCArray freeMem result
    freeMem result
    touchManagedPtr _obj
    return result'

data DeviceProviderFactoryGetMetadataKeysMethodInfo
instance (signature ~ (m [T.Text]), MonadIO m, DeviceProviderFactoryK a) => MethodInfo DeviceProviderFactoryGetMetadataKeysMethodInfo a signature where
    overloadedMethod _ = deviceProviderFactoryGetMetadataKeys

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

foreign import ccall "gst_device_provider_factory_has_classes" gst_device_provider_factory_has_classes :: 
    Ptr DeviceProviderFactory ->            -- _obj : TInterface "Gst" "DeviceProviderFactory"
    CString ->                              -- classes : TBasicType TUTF8
    IO CInt


deviceProviderFactoryHasClasses ::
    (MonadIO m, DeviceProviderFactoryK a) =>
    a                                       -- _obj
    -> Maybe (T.Text)                       -- classes
    -> m Bool                               -- result
deviceProviderFactoryHasClasses _obj classes = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybeClasses <- case classes of
        Nothing -> return nullPtr
        Just jClasses -> do
            jClasses' <- textToCString jClasses
            return jClasses'
    result <- gst_device_provider_factory_has_classes _obj' maybeClasses
    let result' = (/= 0) result
    touchManagedPtr _obj
    freeMem maybeClasses
    return result'

data DeviceProviderFactoryHasClassesMethodInfo
instance (signature ~ (Maybe (T.Text) -> m Bool), MonadIO m, DeviceProviderFactoryK a) => MethodInfo DeviceProviderFactoryHasClassesMethodInfo a signature where
    overloadedMethod _ = deviceProviderFactoryHasClasses

-- method DeviceProviderFactory::has_classesv
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "DeviceProviderFactory", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "classes", argType = TCArray True (-1) (-1) (TBasicType TUTF8), direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gst_device_provider_factory_has_classesv" gst_device_provider_factory_has_classesv :: 
    Ptr DeviceProviderFactory ->            -- _obj : TInterface "Gst" "DeviceProviderFactory"
    Ptr CString ->                          -- classes : TCArray True (-1) (-1) (TBasicType TUTF8)
    IO CInt


deviceProviderFactoryHasClassesv ::
    (MonadIO m, DeviceProviderFactoryK a) =>
    a                                       -- _obj
    -> Maybe ([T.Text])                     -- classes
    -> m Bool                               -- result
deviceProviderFactoryHasClassesv _obj classes = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybeClasses <- case classes of
        Nothing -> return nullPtr
        Just jClasses -> do
            jClasses' <- packZeroTerminatedUTF8CArray jClasses
            return jClasses'
    result <- gst_device_provider_factory_has_classesv _obj' maybeClasses
    let result' = (/= 0) result
    touchManagedPtr _obj
    mapZeroTerminatedCArray freeMem maybeClasses
    freeMem maybeClasses
    return result'

data DeviceProviderFactoryHasClassesvMethodInfo
instance (signature ~ (Maybe ([T.Text]) -> m Bool), MonadIO m, DeviceProviderFactoryK a) => MethodInfo DeviceProviderFactoryHasClassesvMethodInfo a signature where
    overloadedMethod _ = deviceProviderFactoryHasClassesv

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

foreign import ccall "gst_device_provider_factory_find" gst_device_provider_factory_find :: 
    CString ->                              -- name : TBasicType TUTF8
    IO (Ptr DeviceProviderFactory)


deviceProviderFactoryFind ::
    (MonadIO m) =>
    T.Text                                  -- name
    -> m DeviceProviderFactory              -- result
deviceProviderFactoryFind name = liftIO $ do
    name' <- textToCString name
    result <- gst_device_provider_factory_find name'
    checkUnexpectedReturnNULL "gst_device_provider_factory_find" result
    result' <- (wrapObject DeviceProviderFactory) result
    freeMem name'
    return result'

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

foreign import ccall "gst_device_provider_factory_get_by_name" gst_device_provider_factory_get_by_name :: 
    CString ->                              -- factoryname : TBasicType TUTF8
    IO (Ptr DeviceProvider)


deviceProviderFactoryGetByName ::
    (MonadIO m) =>
    T.Text                                  -- factoryname
    -> m DeviceProvider                     -- result
deviceProviderFactoryGetByName factoryname = liftIO $ do
    factoryname' <- textToCString factoryname
    result <- gst_device_provider_factory_get_by_name factoryname'
    checkUnexpectedReturnNULL "gst_device_provider_factory_get_by_name" result
    result' <- (wrapObject DeviceProvider) result
    freeMem factoryname'
    return result'

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

foreign import ccall "gst_device_provider_factory_list_get_device_providers" gst_device_provider_factory_list_get_device_providers :: 
    CUInt ->                                -- minrank : TInterface "Gst" "Rank"
    IO (Ptr (GList (Ptr DeviceProviderFactory)))


deviceProviderFactoryListGetDeviceProviders ::
    (MonadIO m) =>
    Rank                                    -- minrank
    -> m [DeviceProviderFactory]            -- result
deviceProviderFactoryListGetDeviceProviders minrank = liftIO $ do
    let minrank' = (fromIntegral . fromEnum) minrank
    result <- gst_device_provider_factory_list_get_device_providers minrank'
    checkUnexpectedReturnNULL "gst_device_provider_factory_list_get_device_providers" result
    result' <- unpackGList result
    result'' <- mapM (wrapObject DeviceProviderFactory) result'
    g_list_free result
    return result''