{-# LANGUAGE TypeApplications #-}


-- | Copyright  : Will Thompson and Iñaki García Etxebarria
-- License    : LGPL-2.1
-- Maintainer : Iñaki García Etxebarria
-- 
-- H.264 H.265 metadata from SEI User Data Unregistered messages
-- 
-- /Since: 1.22/

#if (MIN_VERSION_haskell_gi_overloading(1,0,0) && !defined(__HADDOCK_VERSION__))
#define ENABLE_OVERLOADING
#endif

module GI.GstVideo.Structs.VideoSEIUserDataUnregisteredMeta
    ( 

-- * Exported types
    VideoSEIUserDataUnregisteredMeta(..)    ,
    newZeroVideoSEIUserDataUnregisteredMeta ,


 -- * Methods

#if defined(ENABLE_OVERLOADING)
    ResolveVideoSEIUserDataUnregisteredMetaMethod,
#endif

-- ** getInfo #method:getInfo#

    videoSEIUserDataUnregisteredMetaGetInfo ,




 -- * Properties


-- ** data #attr:data#
-- | Unparsed data buffer

    getVideoSEIUserDataUnregisteredMetaData ,
    setVideoSEIUserDataUnregisteredMetaData ,
#if defined(ENABLE_OVERLOADING)
    videoSEIUserDataUnregisteredMeta_data   ,
#endif


-- ** meta #attr:meta#
-- | parent t'GI.Gst.Structs.Meta.Meta'

    getVideoSEIUserDataUnregisteredMetaMeta ,
#if defined(ENABLE_OVERLOADING)
    videoSEIUserDataUnregisteredMeta_meta   ,
#endif


-- ** size #attr:size#
-- | Size of the data buffer

    getVideoSEIUserDataUnregisteredMetaSize ,
    setVideoSEIUserDataUnregisteredMetaSize ,
#if defined(ENABLE_OVERLOADING)
    videoSEIUserDataUnregisteredMeta_size   ,
#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.Kind as DK
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.Gst.Structs.Meta as Gst.Meta
import qualified GI.Gst.Structs.MetaInfo as Gst.MetaInfo

-- | Memory-managed wrapper type.
newtype VideoSEIUserDataUnregisteredMeta = VideoSEIUserDataUnregisteredMeta (SP.ManagedPtr VideoSEIUserDataUnregisteredMeta)
    deriving (VideoSEIUserDataUnregisteredMeta
-> VideoSEIUserDataUnregisteredMeta -> Bool
(VideoSEIUserDataUnregisteredMeta
 -> VideoSEIUserDataUnregisteredMeta -> Bool)
-> (VideoSEIUserDataUnregisteredMeta
    -> VideoSEIUserDataUnregisteredMeta -> Bool)
-> Eq VideoSEIUserDataUnregisteredMeta
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: VideoSEIUserDataUnregisteredMeta
-> VideoSEIUserDataUnregisteredMeta -> Bool
== :: VideoSEIUserDataUnregisteredMeta
-> VideoSEIUserDataUnregisteredMeta -> Bool
$c/= :: VideoSEIUserDataUnregisteredMeta
-> VideoSEIUserDataUnregisteredMeta -> Bool
/= :: VideoSEIUserDataUnregisteredMeta
-> VideoSEIUserDataUnregisteredMeta -> Bool
Eq)

instance SP.ManagedPtrNewtype VideoSEIUserDataUnregisteredMeta where
    toManagedPtr :: VideoSEIUserDataUnregisteredMeta
-> ManagedPtr VideoSEIUserDataUnregisteredMeta
toManagedPtr (VideoSEIUserDataUnregisteredMeta ManagedPtr VideoSEIUserDataUnregisteredMeta
p) = ManagedPtr VideoSEIUserDataUnregisteredMeta
p

instance BoxedPtr VideoSEIUserDataUnregisteredMeta where
    boxedPtrCopy :: VideoSEIUserDataUnregisteredMeta
-> IO VideoSEIUserDataUnregisteredMeta
boxedPtrCopy = \VideoSEIUserDataUnregisteredMeta
p -> VideoSEIUserDataUnregisteredMeta
-> (Ptr VideoSEIUserDataUnregisteredMeta
    -> IO VideoSEIUserDataUnregisteredMeta)
-> IO VideoSEIUserDataUnregisteredMeta
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
B.ManagedPtr.withManagedPtr VideoSEIUserDataUnregisteredMeta
p (Int
-> Ptr VideoSEIUserDataUnregisteredMeta
-> IO (Ptr VideoSEIUserDataUnregisteredMeta)
forall a. (HasCallStack, CallocPtr a) => Int -> Ptr a -> IO (Ptr a)
copyBytes Int
48 (Ptr VideoSEIUserDataUnregisteredMeta
 -> IO (Ptr VideoSEIUserDataUnregisteredMeta))
-> (Ptr VideoSEIUserDataUnregisteredMeta
    -> IO VideoSEIUserDataUnregisteredMeta)
-> Ptr VideoSEIUserDataUnregisteredMeta
-> IO VideoSEIUserDataUnregisteredMeta
forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> (ManagedPtr VideoSEIUserDataUnregisteredMeta
 -> VideoSEIUserDataUnregisteredMeta)
-> Ptr VideoSEIUserDataUnregisteredMeta
-> IO VideoSEIUserDataUnregisteredMeta
forall a.
(HasCallStack, BoxedPtr a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
B.ManagedPtr.wrapPtr ManagedPtr VideoSEIUserDataUnregisteredMeta
-> VideoSEIUserDataUnregisteredMeta
VideoSEIUserDataUnregisteredMeta)
    boxedPtrFree :: VideoSEIUserDataUnregisteredMeta -> IO ()
boxedPtrFree = \VideoSEIUserDataUnregisteredMeta
x -> VideoSEIUserDataUnregisteredMeta
-> (Ptr VideoSEIUserDataUnregisteredMeta -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
SP.withManagedPtr VideoSEIUserDataUnregisteredMeta
x Ptr VideoSEIUserDataUnregisteredMeta -> IO ()
forall a. Ptr a -> IO ()
SP.freeMem
instance CallocPtr VideoSEIUserDataUnregisteredMeta where
    boxedPtrCalloc :: IO (Ptr VideoSEIUserDataUnregisteredMeta)
boxedPtrCalloc = Int -> IO (Ptr VideoSEIUserDataUnregisteredMeta)
forall a. Int -> IO (Ptr a)
callocBytes Int
48


-- | Construct a `VideoSEIUserDataUnregisteredMeta` struct initialized to zero.
newZeroVideoSEIUserDataUnregisteredMeta :: MonadIO m => m VideoSEIUserDataUnregisteredMeta
newZeroVideoSEIUserDataUnregisteredMeta :: forall (m :: * -> *).
MonadIO m =>
m VideoSEIUserDataUnregisteredMeta
newZeroVideoSEIUserDataUnregisteredMeta = IO VideoSEIUserDataUnregisteredMeta
-> m VideoSEIUserDataUnregisteredMeta
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO VideoSEIUserDataUnregisteredMeta
 -> m VideoSEIUserDataUnregisteredMeta)
-> IO VideoSEIUserDataUnregisteredMeta
-> m VideoSEIUserDataUnregisteredMeta
forall a b. (a -> b) -> a -> b
$ IO (Ptr VideoSEIUserDataUnregisteredMeta)
forall a. CallocPtr a => IO (Ptr a)
boxedPtrCalloc IO (Ptr VideoSEIUserDataUnregisteredMeta)
-> (Ptr VideoSEIUserDataUnregisteredMeta
    -> IO VideoSEIUserDataUnregisteredMeta)
-> IO VideoSEIUserDataUnregisteredMeta
forall a b. IO a -> (a -> IO b) -> IO b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (ManagedPtr VideoSEIUserDataUnregisteredMeta
 -> VideoSEIUserDataUnregisteredMeta)
-> Ptr VideoSEIUserDataUnregisteredMeta
-> IO VideoSEIUserDataUnregisteredMeta
forall a.
(HasCallStack, BoxedPtr a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
wrapPtr ManagedPtr VideoSEIUserDataUnregisteredMeta
-> VideoSEIUserDataUnregisteredMeta
VideoSEIUserDataUnregisteredMeta

instance tag ~ 'AttrSet => Constructible VideoSEIUserDataUnregisteredMeta tag where
    new :: forall (m :: * -> *).
MonadIO m =>
(ManagedPtr VideoSEIUserDataUnregisteredMeta
 -> VideoSEIUserDataUnregisteredMeta)
-> [AttrOp VideoSEIUserDataUnregisteredMeta tag]
-> m VideoSEIUserDataUnregisteredMeta
new ManagedPtr VideoSEIUserDataUnregisteredMeta
-> VideoSEIUserDataUnregisteredMeta
_ [AttrOp VideoSEIUserDataUnregisteredMeta tag]
attrs = do
        VideoSEIUserDataUnregisteredMeta
o <- m VideoSEIUserDataUnregisteredMeta
forall (m :: * -> *).
MonadIO m =>
m VideoSEIUserDataUnregisteredMeta
newZeroVideoSEIUserDataUnregisteredMeta
        VideoSEIUserDataUnregisteredMeta
-> [AttrOp VideoSEIUserDataUnregisteredMeta 'AttrSet] -> m ()
forall o (m :: * -> *).
MonadIO m =>
o -> [AttrOp o 'AttrSet] -> m ()
GI.Attributes.set VideoSEIUserDataUnregisteredMeta
o [AttrOp VideoSEIUserDataUnregisteredMeta tag]
[AttrOp VideoSEIUserDataUnregisteredMeta 'AttrSet]
attrs
        VideoSEIUserDataUnregisteredMeta
-> m VideoSEIUserDataUnregisteredMeta
forall a. a -> m a
forall (m :: * -> *) a. Monad m => a -> m a
return VideoSEIUserDataUnregisteredMeta
o


-- | Get the value of the “@meta@” field.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' videoSEIUserDataUnregisteredMeta #meta
-- @
getVideoSEIUserDataUnregisteredMetaMeta :: MonadIO m => VideoSEIUserDataUnregisteredMeta -> m Gst.Meta.Meta
getVideoSEIUserDataUnregisteredMetaMeta :: forall (m :: * -> *).
MonadIO m =>
VideoSEIUserDataUnregisteredMeta -> m Meta
getVideoSEIUserDataUnregisteredMetaMeta VideoSEIUserDataUnregisteredMeta
s = IO Meta -> m Meta
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Meta -> m Meta) -> IO Meta -> m Meta
forall a b. (a -> b) -> a -> b
$ VideoSEIUserDataUnregisteredMeta
-> (Ptr VideoSEIUserDataUnregisteredMeta -> IO Meta) -> IO Meta
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr VideoSEIUserDataUnregisteredMeta
s ((Ptr VideoSEIUserDataUnregisteredMeta -> IO Meta) -> IO Meta)
-> (Ptr VideoSEIUserDataUnregisteredMeta -> IO Meta) -> IO Meta
forall a b. (a -> b) -> a -> b
$ \Ptr VideoSEIUserDataUnregisteredMeta
ptr -> do
    let val :: Ptr Meta
val = Ptr VideoSEIUserDataUnregisteredMeta
ptr Ptr VideoSEIUserDataUnregisteredMeta -> Int -> Ptr Meta
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: (Ptr Gst.Meta.Meta)
    Meta
val' <- ((ManagedPtr Meta -> Meta) -> Ptr Meta -> IO Meta
forall a.
(HasCallStack, BoxedPtr a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
newPtr ManagedPtr Meta -> Meta
Gst.Meta.Meta) Ptr Meta
val
    Meta -> IO Meta
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Meta
val'

#if defined(ENABLE_OVERLOADING)
data VideoSEIUserDataUnregisteredMetaMetaFieldInfo
instance AttrInfo VideoSEIUserDataUnregisteredMetaMetaFieldInfo where
    type AttrBaseTypeConstraint VideoSEIUserDataUnregisteredMetaMetaFieldInfo = (~) VideoSEIUserDataUnregisteredMeta
    type AttrAllowedOps VideoSEIUserDataUnregisteredMetaMetaFieldInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint VideoSEIUserDataUnregisteredMetaMetaFieldInfo = (~) (Ptr Gst.Meta.Meta)
    type AttrTransferTypeConstraint VideoSEIUserDataUnregisteredMetaMetaFieldInfo = (~)(Ptr Gst.Meta.Meta)
    type AttrTransferType VideoSEIUserDataUnregisteredMetaMetaFieldInfo = (Ptr Gst.Meta.Meta)
    type AttrGetType VideoSEIUserDataUnregisteredMetaMetaFieldInfo = Gst.Meta.Meta
    type AttrLabel VideoSEIUserDataUnregisteredMetaMetaFieldInfo = "meta"
    type AttrOrigin VideoSEIUserDataUnregisteredMetaMetaFieldInfo = VideoSEIUserDataUnregisteredMeta
    attrGet = getVideoSEIUserDataUnregisteredMetaMeta
    attrSet = undefined
    attrConstruct = undefined
    attrClear = undefined
    attrTransfer = undefined
    dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstVideo.Structs.VideoSEIUserDataUnregisteredMeta.meta"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstvideo-1.0.28/docs/GI-GstVideo-Structs-VideoSEIUserDataUnregisteredMeta.html#g:attr:meta"
        })

videoSEIUserDataUnregisteredMeta_meta :: AttrLabelProxy "meta"
videoSEIUserDataUnregisteredMeta_meta = AttrLabelProxy

#endif


-- XXX Skipped attribute for "VideoSEIUserDataUnregisteredMeta:uuid"
-- Not implemented: Don't know how to unpack C array of type TCArray False 16 (-1) (TBasicType TUInt8)
-- | Get the value of the “@data@” field.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' videoSEIUserDataUnregisteredMeta #data
-- @
getVideoSEIUserDataUnregisteredMetaData :: MonadIO m => VideoSEIUserDataUnregisteredMeta -> m Word8
getVideoSEIUserDataUnregisteredMetaData :: forall (m :: * -> *).
MonadIO m =>
VideoSEIUserDataUnregisteredMeta -> m Word8
getVideoSEIUserDataUnregisteredMetaData VideoSEIUserDataUnregisteredMeta
s = IO Word8 -> m Word8
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Word8 -> m Word8) -> IO Word8 -> m Word8
forall a b. (a -> b) -> a -> b
$ VideoSEIUserDataUnregisteredMeta
-> (Ptr VideoSEIUserDataUnregisteredMeta -> IO Word8) -> IO Word8
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr VideoSEIUserDataUnregisteredMeta
s ((Ptr VideoSEIUserDataUnregisteredMeta -> IO Word8) -> IO Word8)
-> (Ptr VideoSEIUserDataUnregisteredMeta -> IO Word8) -> IO Word8
forall a b. (a -> b) -> a -> b
$ \Ptr VideoSEIUserDataUnregisteredMeta
ptr -> do
    Word8
val <- Ptr Word8 -> IO Word8
forall a. Storable a => Ptr a -> IO a
peek (Ptr VideoSEIUserDataUnregisteredMeta
ptr Ptr VideoSEIUserDataUnregisteredMeta -> Int -> Ptr Word8
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32) :: IO Word8
    Word8 -> IO Word8
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Word8
val

-- | Set the value of the “@data@” field.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' videoSEIUserDataUnregisteredMeta [ #data 'Data.GI.Base.Attributes.:=' value ]
-- @
setVideoSEIUserDataUnregisteredMetaData :: MonadIO m => VideoSEIUserDataUnregisteredMeta -> Word8 -> m ()
setVideoSEIUserDataUnregisteredMetaData :: forall (m :: * -> *).
MonadIO m =>
VideoSEIUserDataUnregisteredMeta -> Word8 -> m ()
setVideoSEIUserDataUnregisteredMetaData VideoSEIUserDataUnregisteredMeta
s Word8
val = 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
$ VideoSEIUserDataUnregisteredMeta
-> (Ptr VideoSEIUserDataUnregisteredMeta -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr VideoSEIUserDataUnregisteredMeta
s ((Ptr VideoSEIUserDataUnregisteredMeta -> IO ()) -> IO ())
-> (Ptr VideoSEIUserDataUnregisteredMeta -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr VideoSEIUserDataUnregisteredMeta
ptr -> do
    Ptr Word8 -> Word8 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr VideoSEIUserDataUnregisteredMeta
ptr Ptr VideoSEIUserDataUnregisteredMeta -> Int -> Ptr Word8
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32) (Word8
val :: Word8)

#if defined(ENABLE_OVERLOADING)
data VideoSEIUserDataUnregisteredMetaDataFieldInfo
instance AttrInfo VideoSEIUserDataUnregisteredMetaDataFieldInfo where
    type AttrBaseTypeConstraint VideoSEIUserDataUnregisteredMetaDataFieldInfo = (~) VideoSEIUserDataUnregisteredMeta
    type AttrAllowedOps VideoSEIUserDataUnregisteredMetaDataFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint VideoSEIUserDataUnregisteredMetaDataFieldInfo = (~) Word8
    type AttrTransferTypeConstraint VideoSEIUserDataUnregisteredMetaDataFieldInfo = (~)Word8
    type AttrTransferType VideoSEIUserDataUnregisteredMetaDataFieldInfo = Word8
    type AttrGetType VideoSEIUserDataUnregisteredMetaDataFieldInfo = Word8
    type AttrLabel VideoSEIUserDataUnregisteredMetaDataFieldInfo = "data"
    type AttrOrigin VideoSEIUserDataUnregisteredMetaDataFieldInfo = VideoSEIUserDataUnregisteredMeta
    attrGet = getVideoSEIUserDataUnregisteredMetaData
    attrSet = setVideoSEIUserDataUnregisteredMetaData
    attrConstruct = undefined
    attrClear = undefined
    attrTransfer _ v = do
        return v
    dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstVideo.Structs.VideoSEIUserDataUnregisteredMeta.data"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstvideo-1.0.28/docs/GI-GstVideo-Structs-VideoSEIUserDataUnregisteredMeta.html#g:attr:data"
        })

videoSEIUserDataUnregisteredMeta_data :: AttrLabelProxy "data"
videoSEIUserDataUnregisteredMeta_data = AttrLabelProxy

#endif


-- | Get the value of the “@size@” field.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' videoSEIUserDataUnregisteredMeta #size
-- @
getVideoSEIUserDataUnregisteredMetaSize :: MonadIO m => VideoSEIUserDataUnregisteredMeta -> m Word64
getVideoSEIUserDataUnregisteredMetaSize :: forall (m :: * -> *).
MonadIO m =>
VideoSEIUserDataUnregisteredMeta -> m Word64
getVideoSEIUserDataUnregisteredMetaSize VideoSEIUserDataUnregisteredMeta
s = IO Word64 -> m Word64
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Word64 -> m Word64) -> IO Word64 -> m Word64
forall a b. (a -> b) -> a -> b
$ VideoSEIUserDataUnregisteredMeta
-> (Ptr VideoSEIUserDataUnregisteredMeta -> IO Word64) -> IO Word64
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr VideoSEIUserDataUnregisteredMeta
s ((Ptr VideoSEIUserDataUnregisteredMeta -> IO Word64) -> IO Word64)
-> (Ptr VideoSEIUserDataUnregisteredMeta -> IO Word64) -> IO Word64
forall a b. (a -> b) -> a -> b
$ \Ptr VideoSEIUserDataUnregisteredMeta
ptr -> do
    Word64
val <- Ptr Word64 -> IO Word64
forall a. Storable a => Ptr a -> IO a
peek (Ptr VideoSEIUserDataUnregisteredMeta
ptr Ptr VideoSEIUserDataUnregisteredMeta -> Int -> Ptr Word64
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40) :: IO Word64
    Word64 -> IO Word64
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Word64
val

-- | Set the value of the “@size@” field.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' videoSEIUserDataUnregisteredMeta [ #size 'Data.GI.Base.Attributes.:=' value ]
-- @
setVideoSEIUserDataUnregisteredMetaSize :: MonadIO m => VideoSEIUserDataUnregisteredMeta -> Word64 -> m ()
setVideoSEIUserDataUnregisteredMetaSize :: forall (m :: * -> *).
MonadIO m =>
VideoSEIUserDataUnregisteredMeta -> Word64 -> m ()
setVideoSEIUserDataUnregisteredMetaSize VideoSEIUserDataUnregisteredMeta
s Word64
val = 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
$ VideoSEIUserDataUnregisteredMeta
-> (Ptr VideoSEIUserDataUnregisteredMeta -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr VideoSEIUserDataUnregisteredMeta
s ((Ptr VideoSEIUserDataUnregisteredMeta -> IO ()) -> IO ())
-> (Ptr VideoSEIUserDataUnregisteredMeta -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr VideoSEIUserDataUnregisteredMeta
ptr -> do
    Ptr Word64 -> Word64 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr VideoSEIUserDataUnregisteredMeta
ptr Ptr VideoSEIUserDataUnregisteredMeta -> Int -> Ptr Word64
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40) (Word64
val :: Word64)

#if defined(ENABLE_OVERLOADING)
data VideoSEIUserDataUnregisteredMetaSizeFieldInfo
instance AttrInfo VideoSEIUserDataUnregisteredMetaSizeFieldInfo where
    type AttrBaseTypeConstraint VideoSEIUserDataUnregisteredMetaSizeFieldInfo = (~) VideoSEIUserDataUnregisteredMeta
    type AttrAllowedOps VideoSEIUserDataUnregisteredMetaSizeFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint VideoSEIUserDataUnregisteredMetaSizeFieldInfo = (~) Word64
    type AttrTransferTypeConstraint VideoSEIUserDataUnregisteredMetaSizeFieldInfo = (~)Word64
    type AttrTransferType VideoSEIUserDataUnregisteredMetaSizeFieldInfo = Word64
    type AttrGetType VideoSEIUserDataUnregisteredMetaSizeFieldInfo = Word64
    type AttrLabel VideoSEIUserDataUnregisteredMetaSizeFieldInfo = "size"
    type AttrOrigin VideoSEIUserDataUnregisteredMetaSizeFieldInfo = VideoSEIUserDataUnregisteredMeta
    attrGet = getVideoSEIUserDataUnregisteredMetaSize
    attrSet = setVideoSEIUserDataUnregisteredMetaSize
    attrConstruct = undefined
    attrClear = undefined
    attrTransfer _ v = do
        return v
    dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstVideo.Structs.VideoSEIUserDataUnregisteredMeta.size"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstvideo-1.0.28/docs/GI-GstVideo-Structs-VideoSEIUserDataUnregisteredMeta.html#g:attr:size"
        })

videoSEIUserDataUnregisteredMeta_size :: AttrLabelProxy "size"
videoSEIUserDataUnregisteredMeta_size = AttrLabelProxy

#endif



#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList VideoSEIUserDataUnregisteredMeta
type instance O.AttributeList VideoSEIUserDataUnregisteredMeta = VideoSEIUserDataUnregisteredMetaAttributeList
type VideoSEIUserDataUnregisteredMetaAttributeList = ('[ '("meta", VideoSEIUserDataUnregisteredMetaMetaFieldInfo), '("data", VideoSEIUserDataUnregisteredMetaDataFieldInfo), '("size", VideoSEIUserDataUnregisteredMetaSizeFieldInfo)] :: [(Symbol, DK.Type)])
#endif

-- method VideoSEIUserDataUnregisteredMeta::get_info
-- method type : MemberFunction
-- Args: []
-- Lengths: []
-- returnType: Just (TInterface Name { namespace = "Gst" , name = "MetaInfo" })
-- throws : False
-- Skip return : False

foreign import ccall "gst_video_sei_user_data_unregistered_meta_get_info" gst_video_sei_user_data_unregistered_meta_get_info :: 
    IO (Ptr Gst.MetaInfo.MetaInfo)

-- | /No description available in the introspection data./
-- 
-- /Since: 1.22/
videoSEIUserDataUnregisteredMetaGetInfo ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    m Gst.MetaInfo.MetaInfo
    -- ^ __Returns:__ t'GI.Gst.Structs.MetaInfo.MetaInfo' pointer that describes t'GI.GstVideo.Structs.VideoSEIUserDataUnregisteredMeta.VideoSEIUserDataUnregisteredMeta'.
videoSEIUserDataUnregisteredMetaGetInfo :: forall (m :: * -> *). (HasCallStack, MonadIO m) => m MetaInfo
videoSEIUserDataUnregisteredMetaGetInfo  = IO MetaInfo -> m MetaInfo
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO MetaInfo -> m MetaInfo) -> IO MetaInfo -> m MetaInfo
forall a b. (a -> b) -> a -> b
$ do
    Ptr MetaInfo
result <- IO (Ptr MetaInfo)
gst_video_sei_user_data_unregistered_meta_get_info
    Text -> Ptr MetaInfo -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"videoSEIUserDataUnregisteredMetaGetInfo" Ptr MetaInfo
result
    MetaInfo
result' <- ((ManagedPtr MetaInfo -> MetaInfo) -> Ptr MetaInfo -> IO MetaInfo
forall a.
(HasCallStack, BoxedPtr a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
newPtr ManagedPtr MetaInfo -> MetaInfo
Gst.MetaInfo.MetaInfo) Ptr MetaInfo
result
    MetaInfo -> IO MetaInfo
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return MetaInfo
result'

#if defined(ENABLE_OVERLOADING)
#endif

#if defined(ENABLE_OVERLOADING)
type family ResolveVideoSEIUserDataUnregisteredMetaMethod (t :: Symbol) (o :: DK.Type) :: DK.Type where
    ResolveVideoSEIUserDataUnregisteredMetaMethod l o = O.MethodResolutionFailed l o

instance (info ~ ResolveVideoSEIUserDataUnregisteredMetaMethod t VideoSEIUserDataUnregisteredMeta, O.OverloadedMethod info VideoSEIUserDataUnregisteredMeta p) => OL.IsLabel t (VideoSEIUserDataUnregisteredMeta -> 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 ~ ResolveVideoSEIUserDataUnregisteredMetaMethod t VideoSEIUserDataUnregisteredMeta, O.OverloadedMethod info VideoSEIUserDataUnregisteredMeta p, R.HasField t VideoSEIUserDataUnregisteredMeta p) => R.HasField t VideoSEIUserDataUnregisteredMeta p where
    getField = O.overloadedMethod @info

#endif

instance (info ~ ResolveVideoSEIUserDataUnregisteredMetaMethod t VideoSEIUserDataUnregisteredMeta, O.OverloadedMethodInfo info VideoSEIUserDataUnregisteredMeta) => OL.IsLabel t (O.MethodProxy info VideoSEIUserDataUnregisteredMeta) where
#if MIN_VERSION_base(4,10,0)
    fromLabel = O.MethodProxy
#else
    fromLabel _ = O.MethodProxy
#endif

#endif