gi-gst-0.1.6.13: GI/Gst/Structs/AtomicQueue.hs
{- |
Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte
License : LGPL-2.1
Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
The #GstAtomicQueue object implements a queue that can be used from multiple
threads without performing any blocking operations.
-}
module GI.Gst.Structs.AtomicQueue
(
-- * Exported types
AtomicQueue(..) ,
noAtomicQueue ,
-- * Methods
-- ** atomicQueueLength
AtomicQueueLengthMethodInfo ,
atomicQueueLength ,
-- ** atomicQueueNew
atomicQueueNew ,
-- ** atomicQueuePeek
AtomicQueuePeekMethodInfo ,
atomicQueuePeek ,
-- ** atomicQueuePop
AtomicQueuePopMethodInfo ,
atomicQueuePop ,
-- ** atomicQueuePush
AtomicQueuePushMethodInfo ,
atomicQueuePush ,
-- ** atomicQueueRef
AtomicQueueRefMethodInfo ,
atomicQueueRef ,
-- ** atomicQueueUnref
AtomicQueueUnrefMethodInfo ,
atomicQueueUnref ,
) where
import Prelude ()
import Data.GI.Base.ShortPrelude
import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map
import GI.Gst.Types
import GI.Gst.Callbacks
newtype AtomicQueue = AtomicQueue (ForeignPtr AtomicQueue)
foreign import ccall "gst_atomic_queue_get_type" c_gst_atomic_queue_get_type ::
IO GType
instance BoxedObject AtomicQueue where
boxedType _ = c_gst_atomic_queue_get_type
noAtomicQueue :: Maybe AtomicQueue
noAtomicQueue = Nothing
-- method AtomicQueue::new
-- method type : Constructor
-- Args : [Arg {argCName = "initial_size", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TInterface "Gst" "AtomicQueue"
-- throws : False
-- Skip return : False
foreign import ccall "gst_atomic_queue_new" gst_atomic_queue_new ::
Word32 -> -- initial_size : TBasicType TUInt32
IO (Ptr AtomicQueue)
atomicQueueNew ::
(MonadIO m) =>
Word32 -- initialSize
-> m AtomicQueue -- result
atomicQueueNew initialSize = liftIO $ do
result <- gst_atomic_queue_new initialSize
checkUnexpectedReturnNULL "gst_atomic_queue_new" result
result' <- (wrapBoxed AtomicQueue) result
return result'
-- method AtomicQueue::length
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "AtomicQueue", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TUInt32
-- throws : False
-- Skip return : False
foreign import ccall "gst_atomic_queue_length" gst_atomic_queue_length ::
Ptr AtomicQueue -> -- _obj : TInterface "Gst" "AtomicQueue"
IO Word32
atomicQueueLength ::
(MonadIO m) =>
AtomicQueue -- _obj
-> m Word32 -- result
atomicQueueLength _obj = liftIO $ do
let _obj' = unsafeManagedPtrGetPtr _obj
result <- gst_atomic_queue_length _obj'
touchManagedPtr _obj
return result
data AtomicQueueLengthMethodInfo
instance (signature ~ (m Word32), MonadIO m) => MethodInfo AtomicQueueLengthMethodInfo AtomicQueue signature where
overloadedMethod _ = atomicQueueLength
-- method AtomicQueue::peek
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "AtomicQueue", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False
foreign import ccall "gst_atomic_queue_peek" gst_atomic_queue_peek ::
Ptr AtomicQueue -> -- _obj : TInterface "Gst" "AtomicQueue"
IO ()
atomicQueuePeek ::
(MonadIO m) =>
AtomicQueue -- _obj
-> m () -- result
atomicQueuePeek _obj = liftIO $ do
let _obj' = unsafeManagedPtrGetPtr _obj
gst_atomic_queue_peek _obj'
touchManagedPtr _obj
return ()
data AtomicQueuePeekMethodInfo
instance (signature ~ (m ()), MonadIO m) => MethodInfo AtomicQueuePeekMethodInfo AtomicQueue signature where
overloadedMethod _ = atomicQueuePeek
-- method AtomicQueue::pop
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "AtomicQueue", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False
foreign import ccall "gst_atomic_queue_pop" gst_atomic_queue_pop ::
Ptr AtomicQueue -> -- _obj : TInterface "Gst" "AtomicQueue"
IO ()
atomicQueuePop ::
(MonadIO m) =>
AtomicQueue -- _obj
-> m () -- result
atomicQueuePop _obj = liftIO $ do
let _obj' = unsafeManagedPtrGetPtr _obj
gst_atomic_queue_pop _obj'
touchManagedPtr _obj
return ()
data AtomicQueuePopMethodInfo
instance (signature ~ (m ()), MonadIO m) => MethodInfo AtomicQueuePopMethodInfo AtomicQueue signature where
overloadedMethod _ = atomicQueuePop
-- method AtomicQueue::push
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "AtomicQueue", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False
foreign import ccall "gst_atomic_queue_push" gst_atomic_queue_push ::
Ptr AtomicQueue -> -- _obj : TInterface "Gst" "AtomicQueue"
Ptr () -> -- data : TBasicType TVoid
IO ()
atomicQueuePush ::
(MonadIO m) =>
AtomicQueue -- _obj
-> Ptr () -- data_
-> m () -- result
atomicQueuePush _obj data_ = liftIO $ do
let _obj' = unsafeManagedPtrGetPtr _obj
gst_atomic_queue_push _obj' data_
touchManagedPtr _obj
return ()
data AtomicQueuePushMethodInfo
instance (signature ~ (Ptr () -> m ()), MonadIO m) => MethodInfo AtomicQueuePushMethodInfo AtomicQueue signature where
overloadedMethod _ = atomicQueuePush
-- method AtomicQueue::ref
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "AtomicQueue", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False
foreign import ccall "gst_atomic_queue_ref" gst_atomic_queue_ref ::
Ptr AtomicQueue -> -- _obj : TInterface "Gst" "AtomicQueue"
IO ()
atomicQueueRef ::
(MonadIO m) =>
AtomicQueue -- _obj
-> m () -- result
atomicQueueRef _obj = liftIO $ do
let _obj' = unsafeManagedPtrGetPtr _obj
gst_atomic_queue_ref _obj'
touchManagedPtr _obj
return ()
data AtomicQueueRefMethodInfo
instance (signature ~ (m ()), MonadIO m) => MethodInfo AtomicQueueRefMethodInfo AtomicQueue signature where
overloadedMethod _ = atomicQueueRef
-- method AtomicQueue::unref
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "AtomicQueue", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False
foreign import ccall "gst_atomic_queue_unref" gst_atomic_queue_unref ::
Ptr AtomicQueue -> -- _obj : TInterface "Gst" "AtomicQueue"
IO ()
atomicQueueUnref ::
(MonadIO m) =>
AtomicQueue -- _obj
-> m () -- result
atomicQueueUnref _obj = liftIO $ do
let _obj' = unsafeManagedPtrGetPtr _obj
gst_atomic_queue_unref _obj'
touchManagedPtr _obj
return ()
data AtomicQueueUnrefMethodInfo
instance (signature ~ (m ()), MonadIO m) => MethodInfo AtomicQueueUnrefMethodInfo AtomicQueue signature where
overloadedMethod _ = atomicQueueUnref
type family ResolveAtomicQueueMethod (t :: Symbol) (o :: *) :: * where
ResolveAtomicQueueMethod "length" o = AtomicQueueLengthMethodInfo
ResolveAtomicQueueMethod "peek" o = AtomicQueuePeekMethodInfo
ResolveAtomicQueueMethod "pop" o = AtomicQueuePopMethodInfo
ResolveAtomicQueueMethod "push" o = AtomicQueuePushMethodInfo
ResolveAtomicQueueMethod "ref" o = AtomicQueueRefMethodInfo
ResolveAtomicQueueMethod "unref" o = AtomicQueueUnrefMethodInfo
ResolveAtomicQueueMethod l o = MethodResolutionFailed l o
instance (info ~ ResolveAtomicQueueMethod t AtomicQueue, MethodInfo info AtomicQueue p) => IsLabelProxy t (AtomicQueue -> p) where
fromLabelProxy _ = overloadedMethod (MethodProxy :: MethodProxy info)
#if MIN_VERSION_base(4,9,0)
instance (info ~ ResolveAtomicQueueMethod t AtomicQueue, MethodInfo info AtomicQueue p) => IsLabel t (AtomicQueue -> p) where
fromLabel _ = overloadedMethod (MethodProxy :: MethodProxy info)
#endif