{-# LANGUAGE TypeApplications #-}
#if (MIN_VERSION_haskell_gi_overloading(1,0,0) && !defined(__HADDOCK_VERSION__))
#define ENABLE_OVERLOADING
#endif
module GI.Gst.Objects.Tracer
(
Tracer(..) ,
IsTracer ,
toTracer ,
#if defined(ENABLE_OVERLOADING)
ResolveTracerMethod ,
#endif
tracerRegister ,
#if defined(ENABLE_OVERLOADING)
TracerParamsPropertyInfo ,
#endif
clearTracerParams ,
constructTracerParams ,
getTracerParams ,
setTracerParams ,
#if defined(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.BasicTypes as B.Types
import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GArray as B.GArray
import qualified Data.GI.Base.GClosure as B.GClosure
import qualified Data.GI.Base.GError as B.GError
import qualified Data.GI.Base.GHashTable as B.GHT
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.GI.Base.Signals as B.Signals
import qualified Control.Monad.IO.Class as MIO
import qualified Data.Coerce as Coerce
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 GHC.Records as R
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.Plugin as Gst.Plugin
newtype Tracer = Tracer (SP.ManagedPtr Tracer)
deriving (Tracer -> Tracer -> Bool
(Tracer -> Tracer -> Bool)
-> (Tracer -> Tracer -> Bool) -> Eq Tracer
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Tracer -> Tracer -> Bool
== :: Tracer -> Tracer -> Bool
$c/= :: Tracer -> Tracer -> Bool
/= :: Tracer -> Tracer -> Bool
Eq)
instance SP.ManagedPtrNewtype Tracer where
toManagedPtr :: Tracer -> ManagedPtr Tracer
toManagedPtr (Tracer ManagedPtr Tracer
p) = ManagedPtr Tracer
p
foreign import ccall "gst_tracer_get_type"
c_gst_tracer_get_type :: IO B.Types.GType
instance B.Types.TypedObject Tracer where
glibType :: IO GType
glibType = IO GType
c_gst_tracer_get_type
instance B.Types.GObject Tracer
class (SP.GObject o, O.IsDescendantOf Tracer o) => IsTracer o
instance (SP.GObject o, O.IsDescendantOf Tracer o) => IsTracer o
instance O.HasParentTypes Tracer
type instance O.ParentTypes Tracer = '[Gst.Object.Object, GObject.Object.Object]
toTracer :: (MIO.MonadIO m, IsTracer o) => o -> m Tracer
toTracer :: forall (m :: * -> *) o. (MonadIO m, IsTracer o) => o -> m Tracer
toTracer = IO Tracer -> m Tracer
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO Tracer -> m Tracer) -> (o -> IO Tracer) -> o -> m Tracer
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ManagedPtr Tracer -> Tracer) -> o -> IO Tracer
forall o o'.
(HasCallStack, ManagedPtrNewtype o, TypedObject o,
ManagedPtrNewtype o', TypedObject o') =>
(ManagedPtr o' -> o') -> o -> IO o'
B.ManagedPtr.unsafeCastTo ManagedPtr Tracer -> Tracer
Tracer
instance B.GValue.IsGValue (Maybe Tracer) where
gvalueGType_ :: IO GType
gvalueGType_ = IO GType
c_gst_tracer_get_type
gvalueSet_ :: Ptr GValue -> Maybe Tracer -> IO ()
gvalueSet_ Ptr GValue
gv Maybe Tracer
P.Nothing = Ptr GValue -> Ptr Tracer -> IO ()
forall a. GObject a => Ptr GValue -> Ptr a -> IO ()
B.GValue.set_object Ptr GValue
gv (Ptr Tracer
forall a. Ptr a
FP.nullPtr :: FP.Ptr Tracer)
gvalueSet_ Ptr GValue
gv (P.Just Tracer
obj) = Tracer -> (Ptr Tracer -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
B.ManagedPtr.withManagedPtr Tracer
obj (Ptr GValue -> Ptr Tracer -> IO ()
forall a. GObject a => Ptr GValue -> Ptr a -> IO ()
B.GValue.set_object Ptr GValue
gv)
gvalueGet_ :: Ptr GValue -> IO (Maybe Tracer)
gvalueGet_ Ptr GValue
gv = do
Ptr Tracer
ptr <- Ptr GValue -> IO (Ptr Tracer)
forall a. GObject a => Ptr GValue -> IO (Ptr a)
B.GValue.get_object Ptr GValue
gv :: IO (FP.Ptr Tracer)
if Ptr Tracer
ptr Ptr Tracer -> Ptr Tracer -> Bool
forall a. Eq a => a -> a -> Bool
/= Ptr Tracer
forall a. Ptr a
FP.nullPtr
then Tracer -> Maybe Tracer
forall a. a -> Maybe a
P.Just (Tracer -> Maybe Tracer) -> IO Tracer -> IO (Maybe Tracer)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (ManagedPtr Tracer -> Tracer) -> Ptr Tracer -> IO Tracer
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
B.ManagedPtr.newObject ManagedPtr Tracer -> Tracer
Tracer Ptr Tracer
ptr
else Maybe Tracer -> IO (Maybe Tracer)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe Tracer
forall a. Maybe a
P.Nothing
#if defined(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 "setDataFull" o = GObject.Object.ObjectSetDataFullMethodInfo
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.OverloadedMethod info Tracer p) => OL.IsLabel t (Tracer -> p) where
#if MIN_VERSION_base(4,10,0)
fromLabel = O.overloadedMethod @info
#else
fromLabel _ = O.overloadedMethod @info
#endif
#if MIN_VERSION_base(4,13,0)
instance (info ~ ResolveTracerMethod t Tracer, O.OverloadedMethod info Tracer p, R.HasField t Tracer p) => R.HasField t Tracer p where
getField = O.overloadedMethod @info
#endif
instance (info ~ ResolveTracerMethod t Tracer, O.OverloadedMethodInfo info Tracer) => OL.IsLabel t (O.MethodProxy info Tracer) where
#if MIN_VERSION_base(4,10,0)
fromLabel = O.MethodProxy
#else
fromLabel _ = O.MethodProxy
#endif
#endif
getTracerParams :: (MonadIO m, IsTracer o) => o -> m (Maybe T.Text)
getTracerParams :: forall (m :: * -> *) o.
(MonadIO m, IsTracer o) =>
o -> m (Maybe Text)
getTracerParams o
obj = IO (Maybe Text) -> m (Maybe Text)
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO (Maybe Text) -> m (Maybe Text))
-> IO (Maybe Text) -> m (Maybe Text)
forall a b. (a -> b) -> a -> b
$ o -> String -> IO (Maybe Text)
forall a. GObject a => a -> String -> IO (Maybe Text)
B.Properties.getObjectPropertyString o
obj String
"params"
setTracerParams :: (MonadIO m, IsTracer o) => o -> T.Text -> m ()
setTracerParams :: forall (m :: * -> *) o.
(MonadIO m, IsTracer o) =>
o -> Text -> m ()
setTracerParams o
obj Text
val = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
o -> String -> Maybe Text -> IO ()
forall a. GObject a => a -> String -> Maybe Text -> IO ()
B.Properties.setObjectPropertyString o
obj String
"params" (Text -> Maybe Text
forall a. a -> Maybe a
Just Text
val)
constructTracerParams :: (IsTracer o, MIO.MonadIO m) => T.Text -> m (GValueConstruct o)
constructTracerParams :: forall o (m :: * -> *).
(IsTracer o, MonadIO m) =>
Text -> m (GValueConstruct o)
constructTracerParams Text
val = IO (GValueConstruct o) -> m (GValueConstruct o)
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO (GValueConstruct o) -> m (GValueConstruct o))
-> IO (GValueConstruct o) -> m (GValueConstruct o)
forall a b. (a -> b) -> a -> b
$ do
IO (GValueConstruct o) -> IO (GValueConstruct o)
forall a. IO a -> IO a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO (GValueConstruct o) -> IO (GValueConstruct o))
-> IO (GValueConstruct o) -> IO (GValueConstruct o)
forall a b. (a -> b) -> a -> b
$ String -> Maybe Text -> IO (GValueConstruct o)
forall o. String -> Maybe Text -> IO (GValueConstruct o)
B.Properties.constructObjectPropertyString String
"params" (Text -> Maybe Text
forall a. a -> Maybe a
P.Just Text
val)
clearTracerParams :: (MonadIO m, IsTracer o) => o -> m ()
clearTracerParams :: forall (m :: * -> *) o. (MonadIO m, IsTracer o) => o -> m ()
clearTracerParams o
obj = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ o -> String -> Maybe Text -> IO ()
forall a. GObject a => a -> String -> Maybe Text -> IO ()
B.Properties.setObjectPropertyString o
obj String
"params" (Maybe Text
forall a. Maybe a
Nothing :: Maybe T.Text)
#if defined(ENABLE_OVERLOADING)
data TracerParamsPropertyInfo
instance AttrInfo TracerParamsPropertyInfo where
type AttrAllowedOps TracerParamsPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet, 'AttrClear]
type AttrBaseTypeConstraint TracerParamsPropertyInfo = IsTracer
type AttrSetTypeConstraint TracerParamsPropertyInfo = (~) T.Text
type AttrTransferTypeConstraint TracerParamsPropertyInfo = (~) T.Text
type AttrTransferType TracerParamsPropertyInfo = T.Text
type AttrGetType TracerParamsPropertyInfo = (Maybe T.Text)
type AttrLabel TracerParamsPropertyInfo = "params"
type AttrOrigin TracerParamsPropertyInfo = Tracer
attrGet = getTracerParams
attrSet = setTracerParams
attrTransfer _ v = do
return v
attrConstruct = constructTracerParams
attrClear = clearTracerParams
dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.Gst.Objects.Tracer.params"
, O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gst-1.0.26/docs/GI-Gst-Objects-Tracer.html#g:attr:params"
})
#endif
#if defined(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 defined(ENABLE_OVERLOADING)
tracerParams :: AttrLabelProxy "params"
tracerParams = AttrLabelProxy
#endif
#if defined(ENABLE_OVERLOADING)
type instance O.SignalList Tracer = TracerSignalList
type TracerSignalList = ('[ '("deepNotify", Gst.Object.ObjectDeepNotifySignalInfo), '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, *)])
#endif
foreign import ccall "gst_tracer_register" gst_tracer_register ::
Ptr Gst.Plugin.Plugin ->
CString ->
CGType ->
IO CInt
tracerRegister ::
(B.CallStack.HasCallStack, MonadIO m, Gst.Plugin.IsPlugin a) =>
Maybe (a)
-> T.Text
-> GType
-> m Bool
tracerRegister :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsPlugin a) =>
Maybe a -> Text -> GType -> m Bool
tracerRegister Maybe a
plugin Text
name GType
type_ = IO Bool -> m Bool
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
forall a b. (a -> b) -> a -> b
$ do
Ptr Plugin
maybePlugin <- case Maybe a
plugin of
Maybe a
Nothing -> Ptr Plugin -> IO (Ptr Plugin)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr Plugin
forall a. Ptr a
nullPtr
Just a
jPlugin -> do
Ptr Plugin
jPlugin' <- a -> IO (Ptr Plugin)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
jPlugin
Ptr Plugin -> IO (Ptr Plugin)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr Plugin
jPlugin'
CString
name' <- Text -> IO CString
textToCString Text
name
let type_' :: CGType
type_' = GType -> CGType
gtypeToCGType GType
type_
CInt
result <- Ptr Plugin -> CString -> CGType -> IO CInt
gst_tracer_register Ptr Plugin
maybePlugin CString
name' CGType
type_'
let result' :: Bool
result' = (CInt -> CInt -> Bool
forall a. Eq a => a -> a -> Bool
/= CInt
0) CInt
result
Maybe a -> (a -> IO ()) -> IO ()
forall (m :: * -> *) a. Monad m => Maybe a -> (a -> m ()) -> m ()
whenJust Maybe a
plugin a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr
CString -> IO ()
forall a. Ptr a -> IO ()
freeMem CString
name'
Bool -> IO Bool
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Bool
result'
#if defined(ENABLE_OVERLOADING)
#endif