packages feed

gi-gst-0.1.6.13: GI/Gst/Structs/Poll.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)

A #GstPoll keeps track of file descriptors much like fd_set (used with
select()) or a struct pollfd array (used with poll()). Once created with
gst_poll_new(), the set can be used to wait for file descriptors to be
readable and/or writable. It is possible to make this wait be controlled
by specifying %TRUE for the @controllable flag when creating the set (or
later calling gst_poll_set_controllable()).

New file descriptors are added to the set using gst_poll_add_fd(), and
removed using gst_poll_remove_fd(). Controlling which file descriptors
should be waited for to become readable and/or writable are done using
gst_poll_fd_ctl_read() and gst_poll_fd_ctl_write().

Use gst_poll_wait() to wait for the file descriptors to actually become
readable and/or writable, or to timeout if no file descriptor is available
in time. The wait can be controlled by calling gst_poll_restart() and
gst_poll_set_flushing().

Once the file descriptor set has been waited for, one can use
gst_poll_fd_has_closed() to see if the file descriptor has been closed,
gst_poll_fd_has_error() to see if it has generated an error,
gst_poll_fd_can_read() to see if it is possible to read from the file
descriptor, and gst_poll_fd_can_write() to see if it is possible to
write to it.
-}

module GI.Gst.Structs.Poll
    ( 

-- * Exported types
    Poll(..)                                ,
    noPoll                                  ,


 -- * Methods
-- ** pollAddFd
    PollAddFdMethodInfo                     ,
    pollAddFd                               ,


-- ** pollFdCanRead
    PollFdCanReadMethodInfo                 ,
    pollFdCanRead                           ,


-- ** pollFdCanWrite
    PollFdCanWriteMethodInfo                ,
    pollFdCanWrite                          ,


-- ** pollFdCtlRead
    PollFdCtlReadMethodInfo                 ,
    pollFdCtlRead                           ,


-- ** pollFdCtlWrite
    PollFdCtlWriteMethodInfo                ,
    pollFdCtlWrite                          ,


-- ** pollFdHasClosed
    PollFdHasClosedMethodInfo               ,
    pollFdHasClosed                         ,


-- ** pollFdHasError
    PollFdHasErrorMethodInfo                ,
    pollFdHasError                          ,


-- ** pollFdIgnored
    PollFdIgnoredMethodInfo                 ,
    pollFdIgnored                           ,


-- ** pollFree
    PollFreeMethodInfo                      ,
    pollFree                                ,


-- ** pollGetReadGpollfd
    PollGetReadGpollfdMethodInfo            ,
    pollGetReadGpollfd                      ,


-- ** pollReadControl
    PollReadControlMethodInfo               ,
    pollReadControl                         ,


-- ** pollRemoveFd
    PollRemoveFdMethodInfo                  ,
    pollRemoveFd                            ,


-- ** pollRestart
    PollRestartMethodInfo                   ,
    pollRestart                             ,


-- ** pollSetControllable
    PollSetControllableMethodInfo           ,
    pollSetControllable                     ,


-- ** pollSetFlushing
    PollSetFlushingMethodInfo               ,
    pollSetFlushing                         ,


-- ** pollWait
    PollWaitMethodInfo                      ,
    pollWait                                ,


-- ** pollWriteControl
    PollWriteControlMethodInfo              ,
    pollWriteControl                        ,




    ) 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
import qualified GI.GLib as GLib

newtype Poll = Poll (ForeignPtr Poll)
noPoll :: Maybe Poll
noPoll = Nothing

-- method Poll::add_fd
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "Poll", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "fd", argType = TInterface "Gst" "PollFD", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gst_poll_add_fd" gst_poll_add_fd :: 
    Ptr Poll ->                             -- _obj : TInterface "Gst" "Poll"
    Ptr PollFD ->                           -- fd : TInterface "Gst" "PollFD"
    IO CInt


pollAddFd ::
    (MonadIO m) =>
    Poll                                    -- _obj
    -> PollFD                               -- fd
    -> m Bool                               -- result
pollAddFd _obj fd = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    let fd' = unsafeManagedPtrGetPtr fd
    result <- gst_poll_add_fd _obj' fd'
    let result' = (/= 0) result
    touchManagedPtr _obj
    touchManagedPtr fd
    return result'

data PollAddFdMethodInfo
instance (signature ~ (PollFD -> m Bool), MonadIO m) => MethodInfo PollAddFdMethodInfo Poll signature where
    overloadedMethod _ = pollAddFd

-- method Poll::fd_can_read
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "Poll", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "fd", argType = TInterface "Gst" "PollFD", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gst_poll_fd_can_read" gst_poll_fd_can_read :: 
    Ptr Poll ->                             -- _obj : TInterface "Gst" "Poll"
    Ptr PollFD ->                           -- fd : TInterface "Gst" "PollFD"
    IO CInt


pollFdCanRead ::
    (MonadIO m) =>
    Poll                                    -- _obj
    -> PollFD                               -- fd
    -> m Bool                               -- result
pollFdCanRead _obj fd = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    let fd' = unsafeManagedPtrGetPtr fd
    result <- gst_poll_fd_can_read _obj' fd'
    let result' = (/= 0) result
    touchManagedPtr _obj
    touchManagedPtr fd
    return result'

data PollFdCanReadMethodInfo
instance (signature ~ (PollFD -> m Bool), MonadIO m) => MethodInfo PollFdCanReadMethodInfo Poll signature where
    overloadedMethod _ = pollFdCanRead

-- method Poll::fd_can_write
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "Poll", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "fd", argType = TInterface "Gst" "PollFD", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gst_poll_fd_can_write" gst_poll_fd_can_write :: 
    Ptr Poll ->                             -- _obj : TInterface "Gst" "Poll"
    Ptr PollFD ->                           -- fd : TInterface "Gst" "PollFD"
    IO CInt


pollFdCanWrite ::
    (MonadIO m) =>
    Poll                                    -- _obj
    -> PollFD                               -- fd
    -> m Bool                               -- result
pollFdCanWrite _obj fd = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    let fd' = unsafeManagedPtrGetPtr fd
    result <- gst_poll_fd_can_write _obj' fd'
    let result' = (/= 0) result
    touchManagedPtr _obj
    touchManagedPtr fd
    return result'

data PollFdCanWriteMethodInfo
instance (signature ~ (PollFD -> m Bool), MonadIO m) => MethodInfo PollFdCanWriteMethodInfo Poll signature where
    overloadedMethod _ = pollFdCanWrite

-- method Poll::fd_ctl_read
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "Poll", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "fd", argType = TInterface "Gst" "PollFD", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "active", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gst_poll_fd_ctl_read" gst_poll_fd_ctl_read :: 
    Ptr Poll ->                             -- _obj : TInterface "Gst" "Poll"
    Ptr PollFD ->                           -- fd : TInterface "Gst" "PollFD"
    CInt ->                                 -- active : TBasicType TBoolean
    IO CInt


pollFdCtlRead ::
    (MonadIO m) =>
    Poll                                    -- _obj
    -> PollFD                               -- fd
    -> Bool                                 -- active
    -> m Bool                               -- result
pollFdCtlRead _obj fd active = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    let fd' = unsafeManagedPtrGetPtr fd
    let active' = (fromIntegral . fromEnum) active
    result <- gst_poll_fd_ctl_read _obj' fd' active'
    let result' = (/= 0) result
    touchManagedPtr _obj
    touchManagedPtr fd
    return result'

data PollFdCtlReadMethodInfo
instance (signature ~ (PollFD -> Bool -> m Bool), MonadIO m) => MethodInfo PollFdCtlReadMethodInfo Poll signature where
    overloadedMethod _ = pollFdCtlRead

-- method Poll::fd_ctl_write
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "Poll", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "fd", argType = TInterface "Gst" "PollFD", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "active", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gst_poll_fd_ctl_write" gst_poll_fd_ctl_write :: 
    Ptr Poll ->                             -- _obj : TInterface "Gst" "Poll"
    Ptr PollFD ->                           -- fd : TInterface "Gst" "PollFD"
    CInt ->                                 -- active : TBasicType TBoolean
    IO CInt


pollFdCtlWrite ::
    (MonadIO m) =>
    Poll                                    -- _obj
    -> PollFD                               -- fd
    -> Bool                                 -- active
    -> m Bool                               -- result
pollFdCtlWrite _obj fd active = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    let fd' = unsafeManagedPtrGetPtr fd
    let active' = (fromIntegral . fromEnum) active
    result <- gst_poll_fd_ctl_write _obj' fd' active'
    let result' = (/= 0) result
    touchManagedPtr _obj
    touchManagedPtr fd
    return result'

data PollFdCtlWriteMethodInfo
instance (signature ~ (PollFD -> Bool -> m Bool), MonadIO m) => MethodInfo PollFdCtlWriteMethodInfo Poll signature where
    overloadedMethod _ = pollFdCtlWrite

-- method Poll::fd_has_closed
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "Poll", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "fd", argType = TInterface "Gst" "PollFD", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gst_poll_fd_has_closed" gst_poll_fd_has_closed :: 
    Ptr Poll ->                             -- _obj : TInterface "Gst" "Poll"
    Ptr PollFD ->                           -- fd : TInterface "Gst" "PollFD"
    IO CInt


pollFdHasClosed ::
    (MonadIO m) =>
    Poll                                    -- _obj
    -> PollFD                               -- fd
    -> m Bool                               -- result
pollFdHasClosed _obj fd = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    let fd' = unsafeManagedPtrGetPtr fd
    result <- gst_poll_fd_has_closed _obj' fd'
    let result' = (/= 0) result
    touchManagedPtr _obj
    touchManagedPtr fd
    return result'

data PollFdHasClosedMethodInfo
instance (signature ~ (PollFD -> m Bool), MonadIO m) => MethodInfo PollFdHasClosedMethodInfo Poll signature where
    overloadedMethod _ = pollFdHasClosed

-- method Poll::fd_has_error
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "Poll", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "fd", argType = TInterface "Gst" "PollFD", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gst_poll_fd_has_error" gst_poll_fd_has_error :: 
    Ptr Poll ->                             -- _obj : TInterface "Gst" "Poll"
    Ptr PollFD ->                           -- fd : TInterface "Gst" "PollFD"
    IO CInt


pollFdHasError ::
    (MonadIO m) =>
    Poll                                    -- _obj
    -> PollFD                               -- fd
    -> m Bool                               -- result
pollFdHasError _obj fd = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    let fd' = unsafeManagedPtrGetPtr fd
    result <- gst_poll_fd_has_error _obj' fd'
    let result' = (/= 0) result
    touchManagedPtr _obj
    touchManagedPtr fd
    return result'

data PollFdHasErrorMethodInfo
instance (signature ~ (PollFD -> m Bool), MonadIO m) => MethodInfo PollFdHasErrorMethodInfo Poll signature where
    overloadedMethod _ = pollFdHasError

-- method Poll::fd_ignored
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "Poll", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "fd", argType = TInterface "Gst" "PollFD", 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_poll_fd_ignored" gst_poll_fd_ignored :: 
    Ptr Poll ->                             -- _obj : TInterface "Gst" "Poll"
    Ptr PollFD ->                           -- fd : TInterface "Gst" "PollFD"
    IO ()


pollFdIgnored ::
    (MonadIO m) =>
    Poll                                    -- _obj
    -> PollFD                               -- fd
    -> m ()                                 -- result
pollFdIgnored _obj fd = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    let fd' = unsafeManagedPtrGetPtr fd
    gst_poll_fd_ignored _obj' fd'
    touchManagedPtr _obj
    touchManagedPtr fd
    return ()

data PollFdIgnoredMethodInfo
instance (signature ~ (PollFD -> m ()), MonadIO m) => MethodInfo PollFdIgnoredMethodInfo Poll signature where
    overloadedMethod _ = pollFdIgnored

-- method Poll::free
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "Poll", 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_poll_free" gst_poll_free :: 
    Ptr Poll ->                             -- _obj : TInterface "Gst" "Poll"
    IO ()


pollFree ::
    (MonadIO m) =>
    Poll                                    -- _obj
    -> m ()                                 -- result
pollFree _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    gst_poll_free _obj'
    touchManagedPtr _obj
    return ()

data PollFreeMethodInfo
instance (signature ~ (m ()), MonadIO m) => MethodInfo PollFreeMethodInfo Poll signature where
    overloadedMethod _ = pollFree

-- method Poll::get_read_gpollfd
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "Poll", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "fd", argType = TInterface "GLib" "PollFD", 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_poll_get_read_gpollfd" gst_poll_get_read_gpollfd :: 
    Ptr Poll ->                             -- _obj : TInterface "Gst" "Poll"
    Ptr GLib.PollFD ->                      -- fd : TInterface "GLib" "PollFD"
    IO ()


pollGetReadGpollfd ::
    (MonadIO m) =>
    Poll                                    -- _obj
    -> GLib.PollFD                          -- fd
    -> m ()                                 -- result
pollGetReadGpollfd _obj fd = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    let fd' = unsafeManagedPtrGetPtr fd
    gst_poll_get_read_gpollfd _obj' fd'
    touchManagedPtr _obj
    touchManagedPtr fd
    return ()

data PollGetReadGpollfdMethodInfo
instance (signature ~ (GLib.PollFD -> m ()), MonadIO m) => MethodInfo PollGetReadGpollfdMethodInfo Poll signature where
    overloadedMethod _ = pollGetReadGpollfd

-- method Poll::read_control
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "Poll", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gst_poll_read_control" gst_poll_read_control :: 
    Ptr Poll ->                             -- _obj : TInterface "Gst" "Poll"
    IO CInt


pollReadControl ::
    (MonadIO m) =>
    Poll                                    -- _obj
    -> m Bool                               -- result
pollReadControl _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- gst_poll_read_control _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

data PollReadControlMethodInfo
instance (signature ~ (m Bool), MonadIO m) => MethodInfo PollReadControlMethodInfo Poll signature where
    overloadedMethod _ = pollReadControl

-- method Poll::remove_fd
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "Poll", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "fd", argType = TInterface "Gst" "PollFD", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gst_poll_remove_fd" gst_poll_remove_fd :: 
    Ptr Poll ->                             -- _obj : TInterface "Gst" "Poll"
    Ptr PollFD ->                           -- fd : TInterface "Gst" "PollFD"
    IO CInt


pollRemoveFd ::
    (MonadIO m) =>
    Poll                                    -- _obj
    -> PollFD                               -- fd
    -> m Bool                               -- result
pollRemoveFd _obj fd = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    let fd' = unsafeManagedPtrGetPtr fd
    result <- gst_poll_remove_fd _obj' fd'
    let result' = (/= 0) result
    touchManagedPtr _obj
    touchManagedPtr fd
    return result'

data PollRemoveFdMethodInfo
instance (signature ~ (PollFD -> m Bool), MonadIO m) => MethodInfo PollRemoveFdMethodInfo Poll signature where
    overloadedMethod _ = pollRemoveFd

-- method Poll::restart
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "Poll", 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_poll_restart" gst_poll_restart :: 
    Ptr Poll ->                             -- _obj : TInterface "Gst" "Poll"
    IO ()


pollRestart ::
    (MonadIO m) =>
    Poll                                    -- _obj
    -> m ()                                 -- result
pollRestart _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    gst_poll_restart _obj'
    touchManagedPtr _obj
    return ()

data PollRestartMethodInfo
instance (signature ~ (m ()), MonadIO m) => MethodInfo PollRestartMethodInfo Poll signature where
    overloadedMethod _ = pollRestart

-- method Poll::set_controllable
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "Poll", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "controllable", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gst_poll_set_controllable" gst_poll_set_controllable :: 
    Ptr Poll ->                             -- _obj : TInterface "Gst" "Poll"
    CInt ->                                 -- controllable : TBasicType TBoolean
    IO CInt


pollSetControllable ::
    (MonadIO m) =>
    Poll                                    -- _obj
    -> Bool                                 -- controllable
    -> m Bool                               -- result
pollSetControllable _obj controllable = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    let controllable' = (fromIntegral . fromEnum) controllable
    result <- gst_poll_set_controllable _obj' controllable'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

data PollSetControllableMethodInfo
instance (signature ~ (Bool -> m Bool), MonadIO m) => MethodInfo PollSetControllableMethodInfo Poll signature where
    overloadedMethod _ = pollSetControllable

-- method Poll::set_flushing
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "Poll", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "flushing", argType = TBasicType TBoolean, 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_poll_set_flushing" gst_poll_set_flushing :: 
    Ptr Poll ->                             -- _obj : TInterface "Gst" "Poll"
    CInt ->                                 -- flushing : TBasicType TBoolean
    IO ()


pollSetFlushing ::
    (MonadIO m) =>
    Poll                                    -- _obj
    -> Bool                                 -- flushing
    -> m ()                                 -- result
pollSetFlushing _obj flushing = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    let flushing' = (fromIntegral . fromEnum) flushing
    gst_poll_set_flushing _obj' flushing'
    touchManagedPtr _obj
    return ()

data PollSetFlushingMethodInfo
instance (signature ~ (Bool -> m ()), MonadIO m) => MethodInfo PollSetFlushingMethodInfo Poll signature where
    overloadedMethod _ = pollSetFlushing

-- method Poll::wait
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "Poll", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "timeout", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "gst_poll_wait" gst_poll_wait :: 
    Ptr Poll ->                             -- _obj : TInterface "Gst" "Poll"
    Word64 ->                               -- timeout : TBasicType TUInt64
    IO Int32


pollWait ::
    (MonadIO m) =>
    Poll                                    -- _obj
    -> Word64                               -- timeout
    -> m Int32                              -- result
pollWait _obj timeout = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- gst_poll_wait _obj' timeout
    touchManagedPtr _obj
    return result

data PollWaitMethodInfo
instance (signature ~ (Word64 -> m Int32), MonadIO m) => MethodInfo PollWaitMethodInfo Poll signature where
    overloadedMethod _ = pollWait

-- method Poll::write_control
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "Poll", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gst_poll_write_control" gst_poll_write_control :: 
    Ptr Poll ->                             -- _obj : TInterface "Gst" "Poll"
    IO CInt


pollWriteControl ::
    (MonadIO m) =>
    Poll                                    -- _obj
    -> m Bool                               -- result
pollWriteControl _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- gst_poll_write_control _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

data PollWriteControlMethodInfo
instance (signature ~ (m Bool), MonadIO m) => MethodInfo PollWriteControlMethodInfo Poll signature where
    overloadedMethod _ = pollWriteControl

type family ResolvePollMethod (t :: Symbol) (o :: *) :: * where
    ResolvePollMethod "addFd" o = PollAddFdMethodInfo
    ResolvePollMethod "fdCanRead" o = PollFdCanReadMethodInfo
    ResolvePollMethod "fdCanWrite" o = PollFdCanWriteMethodInfo
    ResolvePollMethod "fdCtlRead" o = PollFdCtlReadMethodInfo
    ResolvePollMethod "fdCtlWrite" o = PollFdCtlWriteMethodInfo
    ResolvePollMethod "fdHasClosed" o = PollFdHasClosedMethodInfo
    ResolvePollMethod "fdHasError" o = PollFdHasErrorMethodInfo
    ResolvePollMethod "fdIgnored" o = PollFdIgnoredMethodInfo
    ResolvePollMethod "free" o = PollFreeMethodInfo
    ResolvePollMethod "readControl" o = PollReadControlMethodInfo
    ResolvePollMethod "removeFd" o = PollRemoveFdMethodInfo
    ResolvePollMethod "restart" o = PollRestartMethodInfo
    ResolvePollMethod "wait" o = PollWaitMethodInfo
    ResolvePollMethod "writeControl" o = PollWriteControlMethodInfo
    ResolvePollMethod "getReadGpollfd" o = PollGetReadGpollfdMethodInfo
    ResolvePollMethod "setControllable" o = PollSetControllableMethodInfo
    ResolvePollMethod "setFlushing" o = PollSetFlushingMethodInfo
    ResolvePollMethod l o = MethodResolutionFailed l o

instance (info ~ ResolvePollMethod t Poll, MethodInfo info Poll p) => IsLabelProxy t (Poll -> p) where
    fromLabelProxy _ = overloadedMethod (MethodProxy :: MethodProxy info)

#if MIN_VERSION_base(4,9,0)
instance (info ~ ResolvePollMethod t Poll, MethodInfo info Poll p) => IsLabel t (Poll -> p) where
    fromLabel _ = overloadedMethod (MethodProxy :: MethodProxy info)
#endif