gi-gst-1.0.18: GI/Gst/Objects/DynamicTypeFactory.hs
{- |
Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte
License : LGPL-2.1
Maintainer : Iñaki García Etxebarria (inaki@blueleaf.cc)
'GI.Gst.Objects.DynamicTypeFactory.DynamicTypeFactory' is used to represent a type that can be
automatically loaded the first time it is used. For example,
a non-standard type for use in caps fields.
In general, applications and plugins don\'t need to use the factory
beyond registering the type in a plugin init function. Once that is
done, the type is stored in the registry, and ready as soon as the
registry is loaded.
== Registering a type for dynamic loading
=== /C code/
>
>
>static gboolean
>plugin_init (GstPlugin * plugin)
>{
> return gst_dynamic_type_register (plugin, GST_TYPE_CUSTOM_CAPS_FIELD);
>}
-}
#define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \
&& !defined(__HADDOCK_VERSION__))
module GI.Gst.Objects.DynamicTypeFactory
(
-- * Exported types
DynamicTypeFactory(..) ,
IsDynamicTypeFactory ,
toDynamicTypeFactory ,
noDynamicTypeFactory ,
-- * Methods
-- ** load #method:load#
dynamicTypeFactoryLoad ,
) where
import Data.GI.Base.ShortPrelude
import qualified Data.GI.Base.ShortPrelude as SP
import qualified Data.GI.Base.Overloading as O
import qualified Prelude as P
import qualified Data.GI.Base.Attributes as GI.Attributes
import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GClosure as B.GClosure
import qualified Data.GI.Base.GError as B.GError
import qualified Data.GI.Base.GVariant as B.GVariant
import qualified Data.GI.Base.GValue as B.GValue
import qualified Data.GI.Base.GParamSpec as B.GParamSpec
import qualified Data.GI.Base.CallStack as B.CallStack
import qualified Data.GI.Base.Properties as B.Properties
import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map
import qualified Foreign.Ptr as FP
import qualified GHC.OverloadedLabels as OL
import qualified GI.GObject.Objects.Object as GObject.Object
import {-# SOURCE #-} qualified GI.Gst.Objects.Object as Gst.Object
import {-# SOURCE #-} qualified GI.Gst.Objects.PluginFeature as Gst.PluginFeature
-- | Memory-managed wrapper type.
newtype DynamicTypeFactory = DynamicTypeFactory (ManagedPtr DynamicTypeFactory)
foreign import ccall "gst_dynamic_type_factory_get_type"
c_gst_dynamic_type_factory_get_type :: IO GType
instance GObject DynamicTypeFactory where
gobjectType = c_gst_dynamic_type_factory_get_type
-- | Type class for types which can be safely cast to `DynamicTypeFactory`, for instance with `toDynamicTypeFactory`.
class (GObject o, O.IsDescendantOf DynamicTypeFactory o) => IsDynamicTypeFactory o
instance (GObject o, O.IsDescendantOf DynamicTypeFactory o) => IsDynamicTypeFactory o
instance O.HasParentTypes DynamicTypeFactory
type instance O.ParentTypes DynamicTypeFactory = '[Gst.PluginFeature.PluginFeature, Gst.Object.Object, GObject.Object.Object]
-- | Cast to `DynamicTypeFactory`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`.
toDynamicTypeFactory :: (MonadIO m, IsDynamicTypeFactory o) => o -> m DynamicTypeFactory
toDynamicTypeFactory = liftIO . unsafeCastTo DynamicTypeFactory
-- | A convenience alias for `Nothing` :: `Maybe` `DynamicTypeFactory`.
noDynamicTypeFactory :: Maybe DynamicTypeFactory
noDynamicTypeFactory = Nothing
#if ENABLE_OVERLOADING
type family ResolveDynamicTypeFactoryMethod (t :: Symbol) (o :: *) :: * where
ResolveDynamicTypeFactoryMethod "addControlBinding" o = Gst.Object.ObjectAddControlBindingMethodInfo
ResolveDynamicTypeFactoryMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
ResolveDynamicTypeFactoryMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
ResolveDynamicTypeFactoryMethod "checkVersion" o = Gst.PluginFeature.PluginFeatureCheckVersionMethodInfo
ResolveDynamicTypeFactoryMethod "defaultError" o = Gst.Object.ObjectDefaultErrorMethodInfo
ResolveDynamicTypeFactoryMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
ResolveDynamicTypeFactoryMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
ResolveDynamicTypeFactoryMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
ResolveDynamicTypeFactoryMethod "hasActiveControlBindings" o = Gst.Object.ObjectHasActiveControlBindingsMethodInfo
ResolveDynamicTypeFactoryMethod "hasAncestor" o = Gst.Object.ObjectHasAncestorMethodInfo
ResolveDynamicTypeFactoryMethod "hasAsAncestor" o = Gst.Object.ObjectHasAsAncestorMethodInfo
ResolveDynamicTypeFactoryMethod "hasAsParent" o = Gst.Object.ObjectHasAsParentMethodInfo
ResolveDynamicTypeFactoryMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
ResolveDynamicTypeFactoryMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
ResolveDynamicTypeFactoryMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
ResolveDynamicTypeFactoryMethod "ref" o = Gst.Object.ObjectRefMethodInfo
ResolveDynamicTypeFactoryMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
ResolveDynamicTypeFactoryMethod "removeControlBinding" o = Gst.Object.ObjectRemoveControlBindingMethodInfo
ResolveDynamicTypeFactoryMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
ResolveDynamicTypeFactoryMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
ResolveDynamicTypeFactoryMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
ResolveDynamicTypeFactoryMethod "suggestNextSync" o = Gst.Object.ObjectSuggestNextSyncMethodInfo
ResolveDynamicTypeFactoryMethod "syncValues" o = Gst.Object.ObjectSyncValuesMethodInfo
ResolveDynamicTypeFactoryMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
ResolveDynamicTypeFactoryMethod "unparent" o = Gst.Object.ObjectUnparentMethodInfo
ResolveDynamicTypeFactoryMethod "unref" o = Gst.Object.ObjectUnrefMethodInfo
ResolveDynamicTypeFactoryMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
ResolveDynamicTypeFactoryMethod "getControlBinding" o = Gst.Object.ObjectGetControlBindingMethodInfo
ResolveDynamicTypeFactoryMethod "getControlRate" o = Gst.Object.ObjectGetControlRateMethodInfo
ResolveDynamicTypeFactoryMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
ResolveDynamicTypeFactoryMethod "getGValueArray" o = Gst.Object.ObjectGetGValueArrayMethodInfo
ResolveDynamicTypeFactoryMethod "getName" o = Gst.Object.ObjectGetNameMethodInfo
ResolveDynamicTypeFactoryMethod "getParent" o = Gst.Object.ObjectGetParentMethodInfo
ResolveDynamicTypeFactoryMethod "getPathString" o = Gst.Object.ObjectGetPathStringMethodInfo
ResolveDynamicTypeFactoryMethod "getPlugin" o = Gst.PluginFeature.PluginFeatureGetPluginMethodInfo
ResolveDynamicTypeFactoryMethod "getPluginName" o = Gst.PluginFeature.PluginFeatureGetPluginNameMethodInfo
ResolveDynamicTypeFactoryMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
ResolveDynamicTypeFactoryMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
ResolveDynamicTypeFactoryMethod "getRank" o = Gst.PluginFeature.PluginFeatureGetRankMethodInfo
ResolveDynamicTypeFactoryMethod "getValue" o = Gst.Object.ObjectGetValueMethodInfo
ResolveDynamicTypeFactoryMethod "setControlBindingDisabled" o = Gst.Object.ObjectSetControlBindingDisabledMethodInfo
ResolveDynamicTypeFactoryMethod "setControlBindingsDisabled" o = Gst.Object.ObjectSetControlBindingsDisabledMethodInfo
ResolveDynamicTypeFactoryMethod "setControlRate" o = Gst.Object.ObjectSetControlRateMethodInfo
ResolveDynamicTypeFactoryMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
ResolveDynamicTypeFactoryMethod "setName" o = Gst.Object.ObjectSetNameMethodInfo
ResolveDynamicTypeFactoryMethod "setParent" o = Gst.Object.ObjectSetParentMethodInfo
ResolveDynamicTypeFactoryMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
ResolveDynamicTypeFactoryMethod "setRank" o = Gst.PluginFeature.PluginFeatureSetRankMethodInfo
ResolveDynamicTypeFactoryMethod l o = O.MethodResolutionFailed l o
instance (info ~ ResolveDynamicTypeFactoryMethod t DynamicTypeFactory, O.MethodInfo info DynamicTypeFactory p) => OL.IsLabel t (DynamicTypeFactory -> p) where
#if MIN_VERSION_base(4,10,0)
fromLabel = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#else
fromLabel _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#endif
#endif
#if ENABLE_OVERLOADING
instance O.HasAttributeList DynamicTypeFactory
type instance O.AttributeList DynamicTypeFactory = DynamicTypeFactoryAttributeList
type DynamicTypeFactoryAttributeList = ('[ '("name", Gst.Object.ObjectNamePropertyInfo), '("parent", Gst.Object.ObjectParentPropertyInfo)] :: [(Symbol, *)])
#endif
#if ENABLE_OVERLOADING
#endif
#if ENABLE_OVERLOADING
type instance O.SignalList DynamicTypeFactory = DynamicTypeFactorySignalList
type DynamicTypeFactorySignalList = ('[ '("deepNotify", Gst.Object.ObjectDeepNotifySignalInfo), '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, *)])
#endif
-- method DynamicTypeFactory::load
-- method type : MemberFunction
-- Args : [Arg {argCName = "factoryname", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TGType)
-- throws : False
-- Skip return : False
foreign import ccall "gst_dynamic_type_factory_load" gst_dynamic_type_factory_load ::
CString -> -- factoryname : TBasicType TUTF8
IO CGType
{- |
/No description available in the introspection data./
-}
dynamicTypeFactoryLoad ::
(B.CallStack.HasCallStack, MonadIO m) =>
T.Text
-> m GType
dynamicTypeFactoryLoad factoryname = liftIO $ do
factoryname' <- textToCString factoryname
result <- gst_dynamic_type_factory_load factoryname'
let result' = GType result
freeMem factoryname'
return result'
#if ENABLE_OVERLOADING
#endif