{-# LANGUAGE TypeApplications #-}


-- | Copyright  : Will Thompson and Iñaki García Etxebarria
-- License    : LGPL-2.1
-- Maintainer : Iñaki García Etxebarria
-- 
-- The structure containing the format specification of the ringbuffer.

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

module GI.GstAudio.Structs.AudioRingBufferSpec
    ( 

-- * Exported types
    AudioRingBufferSpec(..)                 ,
    newZeroAudioRingBufferSpec              ,


 -- * Methods

#if defined(ENABLE_OVERLOADING)
    ResolveAudioRingBufferSpecMethod        ,
#endif



 -- * Properties


-- ** bufferTime #attr:bufferTime#
-- | the total buffer size in microseconds

#if defined(ENABLE_OVERLOADING)
    audioRingBufferSpec_bufferTime          ,
#endif
    getAudioRingBufferSpecBufferTime        ,
    setAudioRingBufferSpecBufferTime        ,


-- ** caps #attr:caps#
-- | The caps that generated the Spec.

#if defined(ENABLE_OVERLOADING)
    audioRingBufferSpec_caps                ,
#endif
    clearAudioRingBufferSpecCaps            ,
    getAudioRingBufferSpecCaps              ,
    setAudioRingBufferSpecCaps              ,


-- ** info #attr:info#
-- | the t'GI.GstAudio.Structs.AudioInfo.AudioInfo'

#if defined(ENABLE_OVERLOADING)
    audioRingBufferSpec_info                ,
#endif
    getAudioRingBufferSpecInfo              ,


-- ** latencyTime #attr:latencyTime#
-- | the latency in microseconds

#if defined(ENABLE_OVERLOADING)
    audioRingBufferSpec_latencyTime         ,
#endif
    getAudioRingBufferSpecLatencyTime       ,
    setAudioRingBufferSpecLatencyTime       ,


-- ** seglatency #attr:seglatency#
-- | number of segments queued in the lower level device,
--  defaults to segtotal

#if defined(ENABLE_OVERLOADING)
    audioRingBufferSpec_seglatency          ,
#endif
    getAudioRingBufferSpecSeglatency        ,
    setAudioRingBufferSpecSeglatency        ,


-- ** segsize #attr:segsize#
-- | the size of one segment in bytes

#if defined(ENABLE_OVERLOADING)
    audioRingBufferSpec_segsize             ,
#endif
    getAudioRingBufferSpecSegsize           ,
    setAudioRingBufferSpecSegsize           ,


-- ** segtotal #attr:segtotal#
-- | the total number of segments

#if defined(ENABLE_OVERLOADING)
    audioRingBufferSpec_segtotal            ,
#endif
    getAudioRingBufferSpecSegtotal          ,
    setAudioRingBufferSpecSegtotal          ,


-- ** type #attr:type#
-- | the sample type

#if defined(ENABLE_OVERLOADING)
    audioRingBufferSpec_type                ,
#endif
    getAudioRingBufferSpecType              ,
    setAudioRingBufferSpecType              ,




    ) 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.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.Gst.Structs.Caps as Gst.Caps
import {-# SOURCE #-} qualified GI.GstAudio.Enums as GstAudio.Enums
import {-# SOURCE #-} qualified GI.GstAudio.Structs.AudioInfo as GstAudio.AudioInfo

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

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

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


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

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


-- | Get the value of the “@caps@” field.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' audioRingBufferSpec #caps
-- @
getAudioRingBufferSpecCaps :: MonadIO m => AudioRingBufferSpec -> m (Maybe Gst.Caps.Caps)
getAudioRingBufferSpecCaps :: forall (m :: * -> *).
MonadIO m =>
AudioRingBufferSpec -> m (Maybe Caps)
getAudioRingBufferSpecCaps AudioRingBufferSpec
s = IO (Maybe Caps) -> m (Maybe Caps)
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Maybe Caps) -> m (Maybe Caps))
-> IO (Maybe Caps) -> m (Maybe Caps)
forall a b. (a -> b) -> a -> b
$ AudioRingBufferSpec
-> (Ptr AudioRingBufferSpec -> IO (Maybe Caps)) -> IO (Maybe Caps)
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr AudioRingBufferSpec
s ((Ptr AudioRingBufferSpec -> IO (Maybe Caps)) -> IO (Maybe Caps))
-> (Ptr AudioRingBufferSpec -> IO (Maybe Caps)) -> IO (Maybe Caps)
forall a b. (a -> b) -> a -> b
$ \Ptr AudioRingBufferSpec
ptr -> do
    Ptr Caps
val <- Ptr (Ptr Caps) -> IO (Ptr Caps)
forall a. Storable a => Ptr a -> IO a
peek (Ptr AudioRingBufferSpec
ptr Ptr AudioRingBufferSpec -> Int -> Ptr (Ptr Caps)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0) :: IO (Ptr Gst.Caps.Caps)
    Maybe Caps
result <- Ptr Caps -> (Ptr Caps -> IO Caps) -> IO (Maybe Caps)
forall a b. Ptr a -> (Ptr a -> IO b) -> IO (Maybe b)
SP.convertIfNonNull Ptr Caps
val ((Ptr Caps -> IO Caps) -> IO (Maybe Caps))
-> (Ptr Caps -> IO Caps) -> IO (Maybe Caps)
forall a b. (a -> b) -> a -> b
$ \Ptr Caps
val' -> do
        Caps
val'' <- ((ManagedPtr Caps -> Caps) -> Ptr Caps -> IO Caps
forall a.
(HasCallStack, GBoxed a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
newBoxed ManagedPtr Caps -> Caps
Gst.Caps.Caps) Ptr Caps
val'
        Caps -> IO Caps
forall (m :: * -> *) a. Monad m => a -> m a
return Caps
val''
    Maybe Caps -> IO (Maybe Caps)
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe Caps
result

-- | Set the value of the “@caps@” field.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' audioRingBufferSpec [ #caps 'Data.GI.Base.Attributes.:=' value ]
-- @
setAudioRingBufferSpecCaps :: MonadIO m => AudioRingBufferSpec -> Ptr Gst.Caps.Caps -> m ()
setAudioRingBufferSpecCaps :: forall (m :: * -> *).
MonadIO m =>
AudioRingBufferSpec -> Ptr Caps -> m ()
setAudioRingBufferSpecCaps AudioRingBufferSpec
s Ptr Caps
val = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ AudioRingBufferSpec -> (Ptr AudioRingBufferSpec -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr AudioRingBufferSpec
s ((Ptr AudioRingBufferSpec -> IO ()) -> IO ())
-> (Ptr AudioRingBufferSpec -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr AudioRingBufferSpec
ptr -> do
    Ptr (Ptr Caps) -> Ptr Caps -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr AudioRingBufferSpec
ptr Ptr AudioRingBufferSpec -> Int -> Ptr (Ptr Caps)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0) (Ptr Caps
val :: Ptr Gst.Caps.Caps)

-- | Set the value of the “@caps@” field to `Nothing`.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.clear' #caps
-- @
clearAudioRingBufferSpecCaps :: MonadIO m => AudioRingBufferSpec -> m ()
clearAudioRingBufferSpecCaps :: forall (m :: * -> *). MonadIO m => AudioRingBufferSpec -> m ()
clearAudioRingBufferSpecCaps AudioRingBufferSpec
s = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ AudioRingBufferSpec -> (Ptr AudioRingBufferSpec -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr AudioRingBufferSpec
s ((Ptr AudioRingBufferSpec -> IO ()) -> IO ())
-> (Ptr AudioRingBufferSpec -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr AudioRingBufferSpec
ptr -> do
    Ptr (Ptr Caps) -> Ptr Caps -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr AudioRingBufferSpec
ptr Ptr AudioRingBufferSpec -> Int -> Ptr (Ptr Caps)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0) (Ptr Caps
forall a. Ptr a
FP.nullPtr :: Ptr Gst.Caps.Caps)

#if defined(ENABLE_OVERLOADING)
data AudioRingBufferSpecCapsFieldInfo
instance AttrInfo AudioRingBufferSpecCapsFieldInfo where
    type AttrBaseTypeConstraint AudioRingBufferSpecCapsFieldInfo = (~) AudioRingBufferSpec
    type AttrAllowedOps AudioRingBufferSpecCapsFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint AudioRingBufferSpecCapsFieldInfo = (~) (Ptr Gst.Caps.Caps)
    type AttrTransferTypeConstraint AudioRingBufferSpecCapsFieldInfo = (~)(Ptr Gst.Caps.Caps)
    type AttrTransferType AudioRingBufferSpecCapsFieldInfo = (Ptr Gst.Caps.Caps)
    type AttrGetType AudioRingBufferSpecCapsFieldInfo = Maybe Gst.Caps.Caps
    type AttrLabel AudioRingBufferSpecCapsFieldInfo = "caps"
    type AttrOrigin AudioRingBufferSpecCapsFieldInfo = AudioRingBufferSpec
    attrGet = getAudioRingBufferSpecCaps
    attrSet = setAudioRingBufferSpecCaps
    attrConstruct = undefined
    attrClear = clearAudioRingBufferSpecCaps
    attrTransfer _ v = do
        return v
    dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstAudio.Structs.AudioRingBufferSpec.caps"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstaudio-1.0.24/docs/GI-GstAudio-Structs-AudioRingBufferSpec.html#g:attr:caps"
        })

audioRingBufferSpec_caps :: AttrLabelProxy "caps"
audioRingBufferSpec_caps = AttrLabelProxy

#endif


-- | Get the value of the “@type@” field.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' audioRingBufferSpec #type
-- @
getAudioRingBufferSpecType :: MonadIO m => AudioRingBufferSpec -> m GstAudio.Enums.AudioRingBufferFormatType
getAudioRingBufferSpecType :: forall (m :: * -> *).
MonadIO m =>
AudioRingBufferSpec -> m AudioRingBufferFormatType
getAudioRingBufferSpecType AudioRingBufferSpec
s = IO AudioRingBufferFormatType -> m AudioRingBufferFormatType
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO AudioRingBufferFormatType -> m AudioRingBufferFormatType)
-> IO AudioRingBufferFormatType -> m AudioRingBufferFormatType
forall a b. (a -> b) -> a -> b
$ AudioRingBufferSpec
-> (Ptr AudioRingBufferSpec -> IO AudioRingBufferFormatType)
-> IO AudioRingBufferFormatType
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr AudioRingBufferSpec
s ((Ptr AudioRingBufferSpec -> IO AudioRingBufferFormatType)
 -> IO AudioRingBufferFormatType)
-> (Ptr AudioRingBufferSpec -> IO AudioRingBufferFormatType)
-> IO AudioRingBufferFormatType
forall a b. (a -> b) -> a -> b
$ \Ptr AudioRingBufferSpec
ptr -> do
    CUInt
val <- Ptr CUInt -> IO CUInt
forall a. Storable a => Ptr a -> IO a
peek (Ptr AudioRingBufferSpec
ptr Ptr AudioRingBufferSpec -> Int -> Ptr CUInt
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8) :: IO CUInt
    let val' :: AudioRingBufferFormatType
val' = (Int -> AudioRingBufferFormatType
forall a. Enum a => Int -> a
toEnum (Int -> AudioRingBufferFormatType)
-> (CUInt -> Int) -> CUInt -> AudioRingBufferFormatType
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CUInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral) CUInt
val
    AudioRingBufferFormatType -> IO AudioRingBufferFormatType
forall (m :: * -> *) a. Monad m => a -> m a
return AudioRingBufferFormatType
val'

-- | Set the value of the “@type@” field.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' audioRingBufferSpec [ #type 'Data.GI.Base.Attributes.:=' value ]
-- @
setAudioRingBufferSpecType :: MonadIO m => AudioRingBufferSpec -> GstAudio.Enums.AudioRingBufferFormatType -> m ()
setAudioRingBufferSpecType :: forall (m :: * -> *).
MonadIO m =>
AudioRingBufferSpec -> AudioRingBufferFormatType -> m ()
setAudioRingBufferSpecType AudioRingBufferSpec
s AudioRingBufferFormatType
val = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ AudioRingBufferSpec -> (Ptr AudioRingBufferSpec -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr AudioRingBufferSpec
s ((Ptr AudioRingBufferSpec -> IO ()) -> IO ())
-> (Ptr AudioRingBufferSpec -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr AudioRingBufferSpec
ptr -> do
    let val' :: CUInt
val' = (Int -> CUInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CUInt)
-> (AudioRingBufferFormatType -> Int)
-> AudioRingBufferFormatType
-> CUInt
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AudioRingBufferFormatType -> Int
forall a. Enum a => a -> Int
fromEnum) AudioRingBufferFormatType
val
    Ptr CUInt -> CUInt -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr AudioRingBufferSpec
ptr Ptr AudioRingBufferSpec -> Int -> Ptr CUInt
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8) (CUInt
val' :: CUInt)

#if defined(ENABLE_OVERLOADING)
data AudioRingBufferSpecTypeFieldInfo
instance AttrInfo AudioRingBufferSpecTypeFieldInfo where
    type AttrBaseTypeConstraint AudioRingBufferSpecTypeFieldInfo = (~) AudioRingBufferSpec
    type AttrAllowedOps AudioRingBufferSpecTypeFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint AudioRingBufferSpecTypeFieldInfo = (~) GstAudio.Enums.AudioRingBufferFormatType
    type AttrTransferTypeConstraint AudioRingBufferSpecTypeFieldInfo = (~)GstAudio.Enums.AudioRingBufferFormatType
    type AttrTransferType AudioRingBufferSpecTypeFieldInfo = GstAudio.Enums.AudioRingBufferFormatType
    type AttrGetType AudioRingBufferSpecTypeFieldInfo = GstAudio.Enums.AudioRingBufferFormatType
    type AttrLabel AudioRingBufferSpecTypeFieldInfo = "type"
    type AttrOrigin AudioRingBufferSpecTypeFieldInfo = AudioRingBufferSpec
    attrGet = getAudioRingBufferSpecType
    attrSet = setAudioRingBufferSpecType
    attrConstruct = undefined
    attrClear = undefined
    attrTransfer _ v = do
        return v
    dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstAudio.Structs.AudioRingBufferSpec.type"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstaudio-1.0.24/docs/GI-GstAudio-Structs-AudioRingBufferSpec.html#g:attr:type"
        })

audioRingBufferSpec_type :: AttrLabelProxy "type"
audioRingBufferSpec_type = AttrLabelProxy

#endif


-- | Get the value of the “@info@” field.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' audioRingBufferSpec #info
-- @
getAudioRingBufferSpecInfo :: MonadIO m => AudioRingBufferSpec -> m GstAudio.AudioInfo.AudioInfo
getAudioRingBufferSpecInfo :: forall (m :: * -> *).
MonadIO m =>
AudioRingBufferSpec -> m AudioInfo
getAudioRingBufferSpecInfo AudioRingBufferSpec
s = IO AudioInfo -> m AudioInfo
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO AudioInfo -> m AudioInfo) -> IO AudioInfo -> m AudioInfo
forall a b. (a -> b) -> a -> b
$ AudioRingBufferSpec
-> (Ptr AudioRingBufferSpec -> IO AudioInfo) -> IO AudioInfo
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr AudioRingBufferSpec
s ((Ptr AudioRingBufferSpec -> IO AudioInfo) -> IO AudioInfo)
-> (Ptr AudioRingBufferSpec -> IO AudioInfo) -> IO AudioInfo
forall a b. (a -> b) -> a -> b
$ \Ptr AudioRingBufferSpec
ptr -> do
    let val :: Ptr AudioInfo
val = Ptr AudioRingBufferSpec
ptr Ptr AudioRingBufferSpec -> Int -> Ptr AudioInfo
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: (Ptr GstAudio.AudioInfo.AudioInfo)
    AudioInfo
val' <- ((ManagedPtr AudioInfo -> AudioInfo)
-> Ptr AudioInfo -> IO AudioInfo
forall a.
(HasCallStack, GBoxed a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
newBoxed ManagedPtr AudioInfo -> AudioInfo
GstAudio.AudioInfo.AudioInfo) Ptr AudioInfo
val
    AudioInfo -> IO AudioInfo
forall (m :: * -> *) a. Monad m => a -> m a
return AudioInfo
val'

#if defined(ENABLE_OVERLOADING)
data AudioRingBufferSpecInfoFieldInfo
instance AttrInfo AudioRingBufferSpecInfoFieldInfo where
    type AttrBaseTypeConstraint AudioRingBufferSpecInfoFieldInfo = (~) AudioRingBufferSpec
    type AttrAllowedOps AudioRingBufferSpecInfoFieldInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint AudioRingBufferSpecInfoFieldInfo = (~) (Ptr GstAudio.AudioInfo.AudioInfo)
    type AttrTransferTypeConstraint AudioRingBufferSpecInfoFieldInfo = (~)(Ptr GstAudio.AudioInfo.AudioInfo)
    type AttrTransferType AudioRingBufferSpecInfoFieldInfo = (Ptr GstAudio.AudioInfo.AudioInfo)
    type AttrGetType AudioRingBufferSpecInfoFieldInfo = GstAudio.AudioInfo.AudioInfo
    type AttrLabel AudioRingBufferSpecInfoFieldInfo = "info"
    type AttrOrigin AudioRingBufferSpecInfoFieldInfo = AudioRingBufferSpec
    attrGet = getAudioRingBufferSpecInfo
    attrSet = undefined
    attrConstruct = undefined
    attrClear = undefined
    attrTransfer = undefined
    dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstAudio.Structs.AudioRingBufferSpec.info"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstaudio-1.0.24/docs/GI-GstAudio-Structs-AudioRingBufferSpec.html#g:attr:info"
        })

audioRingBufferSpec_info :: AttrLabelProxy "info"
audioRingBufferSpec_info = AttrLabelProxy

#endif


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

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

#if defined(ENABLE_OVERLOADING)
data AudioRingBufferSpecLatencyTimeFieldInfo
instance AttrInfo AudioRingBufferSpecLatencyTimeFieldInfo where
    type AttrBaseTypeConstraint AudioRingBufferSpecLatencyTimeFieldInfo = (~) AudioRingBufferSpec
    type AttrAllowedOps AudioRingBufferSpecLatencyTimeFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint AudioRingBufferSpecLatencyTimeFieldInfo = (~) Word64
    type AttrTransferTypeConstraint AudioRingBufferSpecLatencyTimeFieldInfo = (~)Word64
    type AttrTransferType AudioRingBufferSpecLatencyTimeFieldInfo = Word64
    type AttrGetType AudioRingBufferSpecLatencyTimeFieldInfo = Word64
    type AttrLabel AudioRingBufferSpecLatencyTimeFieldInfo = "latency_time"
    type AttrOrigin AudioRingBufferSpecLatencyTimeFieldInfo = AudioRingBufferSpec
    attrGet = getAudioRingBufferSpecLatencyTime
    attrSet = setAudioRingBufferSpecLatencyTime
    attrConstruct = undefined
    attrClear = undefined
    attrTransfer _ v = do
        return v
    dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstAudio.Structs.AudioRingBufferSpec.latencyTime"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstaudio-1.0.24/docs/GI-GstAudio-Structs-AudioRingBufferSpec.html#g:attr:latencyTime"
        })

audioRingBufferSpec_latencyTime :: AttrLabelProxy "latencyTime"
audioRingBufferSpec_latencyTime = AttrLabelProxy

#endif


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

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

#if defined(ENABLE_OVERLOADING)
data AudioRingBufferSpecBufferTimeFieldInfo
instance AttrInfo AudioRingBufferSpecBufferTimeFieldInfo where
    type AttrBaseTypeConstraint AudioRingBufferSpecBufferTimeFieldInfo = (~) AudioRingBufferSpec
    type AttrAllowedOps AudioRingBufferSpecBufferTimeFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint AudioRingBufferSpecBufferTimeFieldInfo = (~) Word64
    type AttrTransferTypeConstraint AudioRingBufferSpecBufferTimeFieldInfo = (~)Word64
    type AttrTransferType AudioRingBufferSpecBufferTimeFieldInfo = Word64
    type AttrGetType AudioRingBufferSpecBufferTimeFieldInfo = Word64
    type AttrLabel AudioRingBufferSpecBufferTimeFieldInfo = "buffer_time"
    type AttrOrigin AudioRingBufferSpecBufferTimeFieldInfo = AudioRingBufferSpec
    attrGet = getAudioRingBufferSpecBufferTime
    attrSet = setAudioRingBufferSpecBufferTime
    attrConstruct = undefined
    attrClear = undefined
    attrTransfer _ v = do
        return v
    dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstAudio.Structs.AudioRingBufferSpec.bufferTime"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstaudio-1.0.24/docs/GI-GstAudio-Structs-AudioRingBufferSpec.html#g:attr:bufferTime"
        })

audioRingBufferSpec_bufferTime :: AttrLabelProxy "bufferTime"
audioRingBufferSpec_bufferTime = AttrLabelProxy

#endif


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

-- | Set the value of the “@segsize@” field.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' audioRingBufferSpec [ #segsize 'Data.GI.Base.Attributes.:=' value ]
-- @
setAudioRingBufferSpecSegsize :: MonadIO m => AudioRingBufferSpec -> Int32 -> m ()
setAudioRingBufferSpecSegsize :: forall (m :: * -> *).
MonadIO m =>
AudioRingBufferSpec -> Int32 -> m ()
setAudioRingBufferSpecSegsize AudioRingBufferSpec
s Int32
val = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ AudioRingBufferSpec -> (Ptr AudioRingBufferSpec -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr AudioRingBufferSpec
s ((Ptr AudioRingBufferSpec -> IO ()) -> IO ())
-> (Ptr AudioRingBufferSpec -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr AudioRingBufferSpec
ptr -> do
    Ptr Int32 -> Int32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr AudioRingBufferSpec
ptr Ptr AudioRingBufferSpec -> Int -> Ptr Int32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
352) (Int32
val :: Int32)

#if defined(ENABLE_OVERLOADING)
data AudioRingBufferSpecSegsizeFieldInfo
instance AttrInfo AudioRingBufferSpecSegsizeFieldInfo where
    type AttrBaseTypeConstraint AudioRingBufferSpecSegsizeFieldInfo = (~) AudioRingBufferSpec
    type AttrAllowedOps AudioRingBufferSpecSegsizeFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint AudioRingBufferSpecSegsizeFieldInfo = (~) Int32
    type AttrTransferTypeConstraint AudioRingBufferSpecSegsizeFieldInfo = (~)Int32
    type AttrTransferType AudioRingBufferSpecSegsizeFieldInfo = Int32
    type AttrGetType AudioRingBufferSpecSegsizeFieldInfo = Int32
    type AttrLabel AudioRingBufferSpecSegsizeFieldInfo = "segsize"
    type AttrOrigin AudioRingBufferSpecSegsizeFieldInfo = AudioRingBufferSpec
    attrGet = getAudioRingBufferSpecSegsize
    attrSet = setAudioRingBufferSpecSegsize
    attrConstruct = undefined
    attrClear = undefined
    attrTransfer _ v = do
        return v
    dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstAudio.Structs.AudioRingBufferSpec.segsize"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstaudio-1.0.24/docs/GI-GstAudio-Structs-AudioRingBufferSpec.html#g:attr:segsize"
        })

audioRingBufferSpec_segsize :: AttrLabelProxy "segsize"
audioRingBufferSpec_segsize = AttrLabelProxy

#endif


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

-- | Set the value of the “@segtotal@” field.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' audioRingBufferSpec [ #segtotal 'Data.GI.Base.Attributes.:=' value ]
-- @
setAudioRingBufferSpecSegtotal :: MonadIO m => AudioRingBufferSpec -> Int32 -> m ()
setAudioRingBufferSpecSegtotal :: forall (m :: * -> *).
MonadIO m =>
AudioRingBufferSpec -> Int32 -> m ()
setAudioRingBufferSpecSegtotal AudioRingBufferSpec
s Int32
val = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ AudioRingBufferSpec -> (Ptr AudioRingBufferSpec -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr AudioRingBufferSpec
s ((Ptr AudioRingBufferSpec -> IO ()) -> IO ())
-> (Ptr AudioRingBufferSpec -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr AudioRingBufferSpec
ptr -> do
    Ptr Int32 -> Int32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr AudioRingBufferSpec
ptr Ptr AudioRingBufferSpec -> Int -> Ptr Int32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
356) (Int32
val :: Int32)

#if defined(ENABLE_OVERLOADING)
data AudioRingBufferSpecSegtotalFieldInfo
instance AttrInfo AudioRingBufferSpecSegtotalFieldInfo where
    type AttrBaseTypeConstraint AudioRingBufferSpecSegtotalFieldInfo = (~) AudioRingBufferSpec
    type AttrAllowedOps AudioRingBufferSpecSegtotalFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint AudioRingBufferSpecSegtotalFieldInfo = (~) Int32
    type AttrTransferTypeConstraint AudioRingBufferSpecSegtotalFieldInfo = (~)Int32
    type AttrTransferType AudioRingBufferSpecSegtotalFieldInfo = Int32
    type AttrGetType AudioRingBufferSpecSegtotalFieldInfo = Int32
    type AttrLabel AudioRingBufferSpecSegtotalFieldInfo = "segtotal"
    type AttrOrigin AudioRingBufferSpecSegtotalFieldInfo = AudioRingBufferSpec
    attrGet = getAudioRingBufferSpecSegtotal
    attrSet = setAudioRingBufferSpecSegtotal
    attrConstruct = undefined
    attrClear = undefined
    attrTransfer _ v = do
        return v
    dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstAudio.Structs.AudioRingBufferSpec.segtotal"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstaudio-1.0.24/docs/GI-GstAudio-Structs-AudioRingBufferSpec.html#g:attr:segtotal"
        })

audioRingBufferSpec_segtotal :: AttrLabelProxy "segtotal"
audioRingBufferSpec_segtotal = AttrLabelProxy

#endif


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

-- | Set the value of the “@seglatency@” field.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' audioRingBufferSpec [ #seglatency 'Data.GI.Base.Attributes.:=' value ]
-- @
setAudioRingBufferSpecSeglatency :: MonadIO m => AudioRingBufferSpec -> Int32 -> m ()
setAudioRingBufferSpecSeglatency :: forall (m :: * -> *).
MonadIO m =>
AudioRingBufferSpec -> Int32 -> m ()
setAudioRingBufferSpecSeglatency AudioRingBufferSpec
s Int32
val = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ AudioRingBufferSpec -> (Ptr AudioRingBufferSpec -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr AudioRingBufferSpec
s ((Ptr AudioRingBufferSpec -> IO ()) -> IO ())
-> (Ptr AudioRingBufferSpec -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr AudioRingBufferSpec
ptr -> do
    Ptr Int32 -> Int32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr AudioRingBufferSpec
ptr Ptr AudioRingBufferSpec -> Int -> Ptr Int32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
360) (Int32
val :: Int32)

#if defined(ENABLE_OVERLOADING)
data AudioRingBufferSpecSeglatencyFieldInfo
instance AttrInfo AudioRingBufferSpecSeglatencyFieldInfo where
    type AttrBaseTypeConstraint AudioRingBufferSpecSeglatencyFieldInfo = (~) AudioRingBufferSpec
    type AttrAllowedOps AudioRingBufferSpecSeglatencyFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint AudioRingBufferSpecSeglatencyFieldInfo = (~) Int32
    type AttrTransferTypeConstraint AudioRingBufferSpecSeglatencyFieldInfo = (~)Int32
    type AttrTransferType AudioRingBufferSpecSeglatencyFieldInfo = Int32
    type AttrGetType AudioRingBufferSpecSeglatencyFieldInfo = Int32
    type AttrLabel AudioRingBufferSpecSeglatencyFieldInfo = "seglatency"
    type AttrOrigin AudioRingBufferSpecSeglatencyFieldInfo = AudioRingBufferSpec
    attrGet = getAudioRingBufferSpecSeglatency
    attrSet = setAudioRingBufferSpecSeglatency
    attrConstruct = undefined
    attrClear = undefined
    attrTransfer _ v = do
        return v
    dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstAudio.Structs.AudioRingBufferSpec.seglatency"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstaudio-1.0.24/docs/GI-GstAudio-Structs-AudioRingBufferSpec.html#g:attr:seglatency"
        })

audioRingBufferSpec_seglatency :: AttrLabelProxy "seglatency"
audioRingBufferSpec_seglatency = AttrLabelProxy

#endif



#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList AudioRingBufferSpec
type instance O.AttributeList AudioRingBufferSpec = AudioRingBufferSpecAttributeList
type AudioRingBufferSpecAttributeList = ('[ '("caps", AudioRingBufferSpecCapsFieldInfo), '("type", AudioRingBufferSpecTypeFieldInfo), '("info", AudioRingBufferSpecInfoFieldInfo), '("latencyTime", AudioRingBufferSpecLatencyTimeFieldInfo), '("bufferTime", AudioRingBufferSpecBufferTimeFieldInfo), '("segsize", AudioRingBufferSpecSegsizeFieldInfo), '("segtotal", AudioRingBufferSpecSegtotalFieldInfo), '("seglatency", AudioRingBufferSpecSeglatencyFieldInfo)] :: [(Symbol, *)])
#endif

#if defined(ENABLE_OVERLOADING)
type family ResolveAudioRingBufferSpecMethod (t :: Symbol) (o :: *) :: * where
    ResolveAudioRingBufferSpecMethod l o = O.MethodResolutionFailed l o

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

#endif

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

#endif