{- | Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte License : LGPL-2.1 Maintainer : Iñaki García Etxebarria (inaki@blueleaf.cc) Tracing modules will subclass 'GI.Gst.Objects.Tracer.Tracer' and register through @/gst_tracer_register()/@. Modules can attach to various hook-types - see @/gst_tracing_register_hook()/@. When invoked they receive hook specific contextual data, which they must not modify. /Since: 1.8/ -} #define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \ && !defined(__HADDOCK_VERSION__)) module GI.Gst.Objects.Tracer ( -- * Exported types Tracer(..) , IsTracer , toTracer , noTracer , -- * Properties -- ** params #attr:params# {- | /No description available in the introspection data./ -} #if ENABLE_OVERLOADING TracerParamsPropertyInfo , #endif clearTracerParams , constructTracerParams , getTracerParams , setTracerParams , #if ENABLE_OVERLOADING tracerParams , #endif ) 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 -- | Memory-managed wrapper type. newtype Tracer = Tracer (ManagedPtr Tracer) foreign import ccall "gst_tracer_get_type" c_gst_tracer_get_type :: IO GType instance GObject Tracer where gobjectType = c_gst_tracer_get_type -- | Type class for types which can be safely cast to `Tracer`, for instance with `toTracer`. class (GObject o, O.IsDescendantOf Tracer o) => IsTracer o instance (GObject o, O.IsDescendantOf Tracer o) => IsTracer o instance O.HasParentTypes Tracer type instance O.ParentTypes Tracer = '[Gst.Object.Object, GObject.Object.Object] -- | Cast to `Tracer`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`. toTracer :: (MonadIO m, IsTracer o) => o -> m Tracer toTracer = liftIO . unsafeCastTo Tracer -- | A convenience alias for `Nothing` :: `Maybe` `Tracer`. noTracer :: Maybe Tracer noTracer = Nothing #if ENABLE_OVERLOADING type family ResolveTracerMethod (t :: Symbol) (o :: *) :: * where ResolveTracerMethod "addControlBinding" o = Gst.Object.ObjectAddControlBindingMethodInfo ResolveTracerMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo ResolveTracerMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo ResolveTracerMethod "defaultError" o = Gst.Object.ObjectDefaultErrorMethodInfo ResolveTracerMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo ResolveTracerMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo ResolveTracerMethod "getv" o = GObject.Object.ObjectGetvMethodInfo ResolveTracerMethod "hasActiveControlBindings" o = Gst.Object.ObjectHasActiveControlBindingsMethodInfo ResolveTracerMethod "hasAncestor" o = Gst.Object.ObjectHasAncestorMethodInfo ResolveTracerMethod "hasAsAncestor" o = Gst.Object.ObjectHasAsAncestorMethodInfo ResolveTracerMethod "hasAsParent" o = Gst.Object.ObjectHasAsParentMethodInfo ResolveTracerMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo ResolveTracerMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo ResolveTracerMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo ResolveTracerMethod "ref" o = Gst.Object.ObjectRefMethodInfo ResolveTracerMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo ResolveTracerMethod "removeControlBinding" o = Gst.Object.ObjectRemoveControlBindingMethodInfo ResolveTracerMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo ResolveTracerMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo ResolveTracerMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo ResolveTracerMethod "suggestNextSync" o = Gst.Object.ObjectSuggestNextSyncMethodInfo ResolveTracerMethod "syncValues" o = Gst.Object.ObjectSyncValuesMethodInfo ResolveTracerMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo ResolveTracerMethod "unparent" o = Gst.Object.ObjectUnparentMethodInfo ResolveTracerMethod "unref" o = Gst.Object.ObjectUnrefMethodInfo ResolveTracerMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo ResolveTracerMethod "getControlBinding" o = Gst.Object.ObjectGetControlBindingMethodInfo ResolveTracerMethod "getControlRate" o = Gst.Object.ObjectGetControlRateMethodInfo ResolveTracerMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo ResolveTracerMethod "getGValueArray" o = Gst.Object.ObjectGetGValueArrayMethodInfo ResolveTracerMethod "getName" o = Gst.Object.ObjectGetNameMethodInfo ResolveTracerMethod "getParent" o = Gst.Object.ObjectGetParentMethodInfo ResolveTracerMethod "getPathString" o = Gst.Object.ObjectGetPathStringMethodInfo ResolveTracerMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo ResolveTracerMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo ResolveTracerMethod "getValue" o = Gst.Object.ObjectGetValueMethodInfo ResolveTracerMethod "setControlBindingDisabled" o = Gst.Object.ObjectSetControlBindingDisabledMethodInfo ResolveTracerMethod "setControlBindingsDisabled" o = Gst.Object.ObjectSetControlBindingsDisabledMethodInfo ResolveTracerMethod "setControlRate" o = Gst.Object.ObjectSetControlRateMethodInfo ResolveTracerMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo ResolveTracerMethod "setName" o = Gst.Object.ObjectSetNameMethodInfo ResolveTracerMethod "setParent" o = Gst.Object.ObjectSetParentMethodInfo ResolveTracerMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo ResolveTracerMethod l o = O.MethodResolutionFailed l o instance (info ~ ResolveTracerMethod t Tracer, O.MethodInfo info Tracer p) => OL.IsLabel t (Tracer -> 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 -- VVV Prop "params" -- Type: TBasicType TUTF8 -- Flags: [PropertyReadable,PropertyWritable,PropertyConstruct] -- Nullable: (Nothing,Nothing) {- | Get the value of the “@params@” property. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.get' tracer #params @ -} getTracerParams :: (MonadIO m, IsTracer o) => o -> m (Maybe T.Text) getTracerParams obj = liftIO $ B.Properties.getObjectPropertyString obj "params" {- | Set the value of the “@params@” property. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.set' tracer [ #params 'Data.GI.Base.Attributes.:=' value ] @ -} setTracerParams :: (MonadIO m, IsTracer o) => o -> T.Text -> m () setTracerParams obj val = liftIO $ B.Properties.setObjectPropertyString obj "params" (Just val) {- | Construct a `GValueConstruct` with valid value for the “@params@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`. -} constructTracerParams :: (IsTracer o) => T.Text -> IO (GValueConstruct o) constructTracerParams val = B.Properties.constructObjectPropertyString "params" (Just val) {- | Set the value of the “@params@” property to `Nothing`. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.clear' #params @ -} clearTracerParams :: (MonadIO m, IsTracer o) => o -> m () clearTracerParams obj = liftIO $ B.Properties.setObjectPropertyString obj "params" (Nothing :: Maybe T.Text) #if ENABLE_OVERLOADING data TracerParamsPropertyInfo instance AttrInfo TracerParamsPropertyInfo where type AttrAllowedOps TracerParamsPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet, 'AttrClear] type AttrSetTypeConstraint TracerParamsPropertyInfo = (~) T.Text type AttrBaseTypeConstraint TracerParamsPropertyInfo = IsTracer type AttrGetType TracerParamsPropertyInfo = (Maybe T.Text) type AttrLabel TracerParamsPropertyInfo = "params" type AttrOrigin TracerParamsPropertyInfo = Tracer attrGet _ = getTracerParams attrSet _ = setTracerParams attrConstruct _ = constructTracerParams attrClear _ = clearTracerParams #endif #if ENABLE_OVERLOADING instance O.HasAttributeList Tracer type instance O.AttributeList Tracer = TracerAttributeList type TracerAttributeList = ('[ '("name", Gst.Object.ObjectNamePropertyInfo), '("params", TracerParamsPropertyInfo), '("parent", Gst.Object.ObjectParentPropertyInfo)] :: [(Symbol, *)]) #endif #if ENABLE_OVERLOADING tracerParams :: AttrLabelProxy "params" tracerParams = AttrLabelProxy #endif #if ENABLE_OVERLOADING type instance O.SignalList Tracer = TracerSignalList type TracerSignalList = ('[ '("deepNotify", Gst.Object.ObjectDeepNotifySignalInfo), '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, *)]) #endif