{- | Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte License : LGPL-2.1 Maintainer : Iñaki García Etxebarria (inaki@blueleaf.cc) Structure used by the collect_pads. -} #define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \ && !defined(__HADDOCK_VERSION__)) module GI.GstBase.Structs.CollectData ( -- * Exported types CollectData(..) , newZeroCollectData , noCollectData , -- * Properties -- ** buffer #attr:buffer# {- | currently queued buffer. -} clearCollectDataBuffer , #if ENABLE_OVERLOADING collectData_buffer , #endif getCollectDataBuffer , setCollectDataBuffer , -- ** collect #attr:collect# {- | owner 'GI.GstBase.Objects.CollectPads.CollectPads' -} clearCollectDataCollect , #if ENABLE_OVERLOADING collectData_collect , #endif getCollectDataCollect , setCollectDataCollect , -- ** pad #attr:pad# {- | 'GI.Gst.Objects.Pad.Pad' managed by this data -} clearCollectDataPad , #if ENABLE_OVERLOADING collectData_pad , #endif getCollectDataPad , setCollectDataPad , -- ** pos #attr:pos# {- | position in the buffer -} #if ENABLE_OVERLOADING collectData_pos , #endif getCollectDataPos , setCollectDataPos , -- ** segment #attr:segment# {- | last segment received. -} #if ENABLE_OVERLOADING collectData_segment , #endif getCollectDataSegment , ) 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.Gst.Objects.Pad as Gst.Pad import qualified GI.Gst.Structs.Buffer as Gst.Buffer import qualified GI.Gst.Structs.Segment as Gst.Segment import {-# SOURCE #-} qualified GI.GstBase.Objects.CollectPads as GstBase.CollectPads -- | Memory-managed wrapper type. newtype CollectData = CollectData (ManagedPtr CollectData) instance WrappedPtr CollectData where wrappedPtrCalloc = callocBytes 168 wrappedPtrCopy = \p -> withManagedPtr p (copyBytes 168 >=> wrapPtr CollectData) wrappedPtrFree = Just ptr_to_g_free -- | Construct a `CollectData` struct initialized to zero. newZeroCollectData :: MonadIO m => m CollectData newZeroCollectData = liftIO $ wrappedPtrCalloc >>= wrapPtr CollectData instance tag ~ 'AttrSet => Constructible CollectData tag where new _ attrs = do o <- newZeroCollectData GI.Attributes.set o attrs return o -- | A convenience alias for `Nothing` :: `Maybe` `CollectData`. noCollectData :: Maybe CollectData noCollectData = Nothing {- | Get the value of the “@collect@” field. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.get' collectData #collect @ -} getCollectDataCollect :: MonadIO m => CollectData -> m (Maybe GstBase.CollectPads.CollectPads) getCollectDataCollect s = liftIO $ withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 0) :: IO (Ptr GstBase.CollectPads.CollectPads) result <- SP.convertIfNonNull val $ \val' -> do val'' <- (newObject GstBase.CollectPads.CollectPads) val' return val'' return result {- | Set the value of the “@collect@” field. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.set' collectData [ #collect 'Data.GI.Base.Attributes.:=' value ] @ -} setCollectDataCollect :: MonadIO m => CollectData -> Ptr GstBase.CollectPads.CollectPads -> m () setCollectDataCollect s val = liftIO $ withManagedPtr s $ \ptr -> do poke (ptr `plusPtr` 0) (val :: Ptr GstBase.CollectPads.CollectPads) {- | Set the value of the “@collect@” field to `Nothing`. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.clear' #collect @ -} clearCollectDataCollect :: MonadIO m => CollectData -> m () clearCollectDataCollect s = liftIO $ withManagedPtr s $ \ptr -> do poke (ptr `plusPtr` 0) (FP.nullPtr :: Ptr GstBase.CollectPads.CollectPads) #if ENABLE_OVERLOADING data CollectDataCollectFieldInfo instance AttrInfo CollectDataCollectFieldInfo where type AttrAllowedOps CollectDataCollectFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear] type AttrSetTypeConstraint CollectDataCollectFieldInfo = (~) (Ptr GstBase.CollectPads.CollectPads) type AttrBaseTypeConstraint CollectDataCollectFieldInfo = (~) CollectData type AttrGetType CollectDataCollectFieldInfo = Maybe GstBase.CollectPads.CollectPads type AttrLabel CollectDataCollectFieldInfo = "collect" type AttrOrigin CollectDataCollectFieldInfo = CollectData attrGet _ = getCollectDataCollect attrSet _ = setCollectDataCollect attrConstruct = undefined attrClear _ = clearCollectDataCollect collectData_collect :: AttrLabelProxy "collect" collectData_collect = AttrLabelProxy #endif {- | Get the value of the “@pad@” field. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.get' collectData #pad @ -} getCollectDataPad :: MonadIO m => CollectData -> m (Maybe Gst.Pad.Pad) getCollectDataPad s = liftIO $ withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 8) :: IO (Ptr Gst.Pad.Pad) result <- SP.convertIfNonNull val $ \val' -> do val'' <- (newObject Gst.Pad.Pad) val' return val'' return result {- | Set the value of the “@pad@” field. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.set' collectData [ #pad 'Data.GI.Base.Attributes.:=' value ] @ -} setCollectDataPad :: MonadIO m => CollectData -> Ptr Gst.Pad.Pad -> m () setCollectDataPad s val = liftIO $ withManagedPtr s $ \ptr -> do poke (ptr `plusPtr` 8) (val :: Ptr Gst.Pad.Pad) {- | Set the value of the “@pad@” field to `Nothing`. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.clear' #pad @ -} clearCollectDataPad :: MonadIO m => CollectData -> m () clearCollectDataPad s = liftIO $ withManagedPtr s $ \ptr -> do poke (ptr `plusPtr` 8) (FP.nullPtr :: Ptr Gst.Pad.Pad) #if ENABLE_OVERLOADING data CollectDataPadFieldInfo instance AttrInfo CollectDataPadFieldInfo where type AttrAllowedOps CollectDataPadFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear] type AttrSetTypeConstraint CollectDataPadFieldInfo = (~) (Ptr Gst.Pad.Pad) type AttrBaseTypeConstraint CollectDataPadFieldInfo = (~) CollectData type AttrGetType CollectDataPadFieldInfo = Maybe Gst.Pad.Pad type AttrLabel CollectDataPadFieldInfo = "pad" type AttrOrigin CollectDataPadFieldInfo = CollectData attrGet _ = getCollectDataPad attrSet _ = setCollectDataPad attrConstruct = undefined attrClear _ = clearCollectDataPad collectData_pad :: AttrLabelProxy "pad" collectData_pad = AttrLabelProxy #endif {- | Get the value of the “@buffer@” field. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.get' collectData #buffer @ -} getCollectDataBuffer :: MonadIO m => CollectData -> m (Maybe Gst.Buffer.Buffer) getCollectDataBuffer s = liftIO $ withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 16) :: IO (Ptr Gst.Buffer.Buffer) result <- SP.convertIfNonNull val $ \val' -> do val'' <- (newBoxed Gst.Buffer.Buffer) val' return val'' return result {- | Set the value of the “@buffer@” field. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.set' collectData [ #buffer 'Data.GI.Base.Attributes.:=' value ] @ -} setCollectDataBuffer :: MonadIO m => CollectData -> Ptr Gst.Buffer.Buffer -> m () setCollectDataBuffer s val = liftIO $ withManagedPtr s $ \ptr -> do poke (ptr `plusPtr` 16) (val :: Ptr Gst.Buffer.Buffer) {- | Set the value of the “@buffer@” field to `Nothing`. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.clear' #buffer @ -} clearCollectDataBuffer :: MonadIO m => CollectData -> m () clearCollectDataBuffer s = liftIO $ withManagedPtr s $ \ptr -> do poke (ptr `plusPtr` 16) (FP.nullPtr :: Ptr Gst.Buffer.Buffer) #if ENABLE_OVERLOADING data CollectDataBufferFieldInfo instance AttrInfo CollectDataBufferFieldInfo where type AttrAllowedOps CollectDataBufferFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear] type AttrSetTypeConstraint CollectDataBufferFieldInfo = (~) (Ptr Gst.Buffer.Buffer) type AttrBaseTypeConstraint CollectDataBufferFieldInfo = (~) CollectData type AttrGetType CollectDataBufferFieldInfo = Maybe Gst.Buffer.Buffer type AttrLabel CollectDataBufferFieldInfo = "buffer" type AttrOrigin CollectDataBufferFieldInfo = CollectData attrGet _ = getCollectDataBuffer attrSet _ = setCollectDataBuffer attrConstruct = undefined attrClear _ = clearCollectDataBuffer collectData_buffer :: AttrLabelProxy "buffer" collectData_buffer = AttrLabelProxy #endif {- | Get the value of the “@pos@” field. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.get' collectData #pos @ -} getCollectDataPos :: MonadIO m => CollectData -> m Word32 getCollectDataPos s = liftIO $ withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 24) :: IO Word32 return val {- | Set the value of the “@pos@” field. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.set' collectData [ #pos 'Data.GI.Base.Attributes.:=' value ] @ -} setCollectDataPos :: MonadIO m => CollectData -> Word32 -> m () setCollectDataPos s val = liftIO $ withManagedPtr s $ \ptr -> do poke (ptr `plusPtr` 24) (val :: Word32) #if ENABLE_OVERLOADING data CollectDataPosFieldInfo instance AttrInfo CollectDataPosFieldInfo where type AttrAllowedOps CollectDataPosFieldInfo = '[ 'AttrSet, 'AttrGet] type AttrSetTypeConstraint CollectDataPosFieldInfo = (~) Word32 type AttrBaseTypeConstraint CollectDataPosFieldInfo = (~) CollectData type AttrGetType CollectDataPosFieldInfo = Word32 type AttrLabel CollectDataPosFieldInfo = "pos" type AttrOrigin CollectDataPosFieldInfo = CollectData attrGet _ = getCollectDataPos attrSet _ = setCollectDataPos attrConstruct = undefined attrClear _ = undefined collectData_pos :: AttrLabelProxy "pos" collectData_pos = AttrLabelProxy #endif {- | Get the value of the “@segment@” field. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.get' collectData #segment @ -} getCollectDataSegment :: MonadIO m => CollectData -> m Gst.Segment.Segment getCollectDataSegment s = liftIO $ withManagedPtr s $ \ptr -> do let val = ptr `plusPtr` 32 :: (Ptr Gst.Segment.Segment) val' <- (newBoxed Gst.Segment.Segment) val return val' #if ENABLE_OVERLOADING data CollectDataSegmentFieldInfo instance AttrInfo CollectDataSegmentFieldInfo where type AttrAllowedOps CollectDataSegmentFieldInfo = '[ 'AttrGet] type AttrSetTypeConstraint CollectDataSegmentFieldInfo = (~) (Ptr Gst.Segment.Segment) type AttrBaseTypeConstraint CollectDataSegmentFieldInfo = (~) CollectData type AttrGetType CollectDataSegmentFieldInfo = Gst.Segment.Segment type AttrLabel CollectDataSegmentFieldInfo = "segment" type AttrOrigin CollectDataSegmentFieldInfo = CollectData attrGet _ = getCollectDataSegment attrSet _ = undefined attrConstruct = undefined attrClear _ = undefined collectData_segment :: AttrLabelProxy "segment" collectData_segment = AttrLabelProxy #endif #if ENABLE_OVERLOADING instance O.HasAttributeList CollectData type instance O.AttributeList CollectData = CollectDataAttributeList type CollectDataAttributeList = ('[ '("collect", CollectDataCollectFieldInfo), '("pad", CollectDataPadFieldInfo), '("buffer", CollectDataBufferFieldInfo), '("pos", CollectDataPosFieldInfo), '("segment", CollectDataSegmentFieldInfo)] :: [(Symbol, *)]) #endif #if ENABLE_OVERLOADING type family ResolveCollectDataMethod (t :: Symbol) (o :: *) :: * where ResolveCollectDataMethod l o = O.MethodResolutionFailed l o instance (info ~ ResolveCollectDataMethod t CollectData, O.MethodInfo info CollectData p) => OL.IsLabel t (CollectData -> 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