{-# LINE 1 "Bindings/APR/Poll.hsc" #-}

{-# LINE 2 "Bindings/APR/Poll.hsc" #-}

{-# LINE 3 "Bindings/APR/Poll.hsc" #-}

module Bindings.APR.Poll where
import Foreign.Ptr (Ptr,FunPtr,plusPtr)
import Foreign.Ptr (wordPtrToPtr,castPtrToFunPtr)
import Foreign.Storable
import Foreign.C.Types
import Foreign.C.String (CString,CStringLen,CWString,CWStringLen)
import Foreign.Marshal.Alloc (alloca)
import Foreign.Marshal.Array (peekArray,pokeArray)
import Data.Int
import Data.Word

{-# LINE 6 "Bindings/APR/Poll.hsc" #-}
import Bindings.APR
import Bindings.APR.ErrNo
import Bindings.APR.File.Types
import Bindings.APR.Network.IO
import Bindings.APR.Pools
import Bindings.APR.Time

c'APR_POLLIN = 1
c'APR_POLLIN :: (Num a) => a

{-# LINE 14 "Bindings/APR/Poll.hsc" #-}
c'APR_POLLPRI = 2
c'APR_POLLPRI :: (Num a) => a

{-# LINE 15 "Bindings/APR/Poll.hsc" #-}
c'APR_POLLOUT = 4
c'APR_POLLOUT :: (Num a) => a

{-# LINE 16 "Bindings/APR/Poll.hsc" #-}
c'APR_POLLERR = 16
c'APR_POLLERR :: (Num a) => a

{-# LINE 17 "Bindings/APR/Poll.hsc" #-}
c'APR_POLLHUP = 32
c'APR_POLLHUP :: (Num a) => a

{-# LINE 18 "Bindings/APR/Poll.hsc" #-}
c'APR_POLLNVAL = 64
c'APR_POLLNVAL :: (Num a) => a

{-# LINE 19 "Bindings/APR/Poll.hsc" #-}

c'APR_POLLSET_THREADSAFE = 1
c'APR_POLLSET_THREADSAFE :: (Num a) => a

{-# LINE 21 "Bindings/APR/Poll.hsc" #-}
c'APR_POLLSET_NOCOPY = 2
c'APR_POLLSET_NOCOPY :: (Num a) => a

{-# LINE 22 "Bindings/APR/Poll.hsc" #-}

type C'apr_datatype_e = CUInt

{-# LINE 24 "Bindings/APR/Poll.hsc" #-}
c'APR_NO_DESC = 0
c'APR_NO_DESC :: (Num a) => a

{-# LINE 25 "Bindings/APR/Poll.hsc" #-}
c'APR_POLL_SOCKET = 1
c'APR_POLL_SOCKET :: (Num a) => a

{-# LINE 26 "Bindings/APR/Poll.hsc" #-}
c'APR_POLL_FILE = 2
c'APR_POLL_FILE :: (Num a) => a

{-# LINE 27 "Bindings/APR/Poll.hsc" #-}
c'APR_POLL_LASTDESC = 3
c'APR_POLL_LASTDESC :: (Num a) => a

{-# LINE 28 "Bindings/APR/Poll.hsc" #-}

data C'apr_descriptor = C'apr_descriptor{
{-# LINE 30 "Bindings/APR/Poll.hsc" #-}

  c'apr_descriptor'f :: Ptr C'apr_file_t
{-# LINE 31 "Bindings/APR/Poll.hsc" #-}
,
  c'apr_descriptor's :: Ptr C'apr_socket_t
{-# LINE 32 "Bindings/APR/Poll.hsc" #-}

 } deriving (Eq,Show)
u'apr_descriptor'f v vf = alloca $ \p -> do
  poke p v
  pokeByteOff p 0 vf
  vu <- peek p
  return $ v 
    {c'apr_descriptor'f = c'apr_descriptor'f vu}
    {c'apr_descriptor's = c'apr_descriptor's vu}
u'apr_descriptor'f :: C'apr_descriptor -> Ptr C'apr_file_t -> IO C'apr_descriptor
u'apr_descriptor's v vf = alloca $ \p -> do
  poke p v
  pokeByteOff p 0 vf
  vu <- peek p
  return $ v 
    {c'apr_descriptor'f = c'apr_descriptor'f vu}
    {c'apr_descriptor's = c'apr_descriptor's vu}
u'apr_descriptor's :: C'apr_descriptor -> Ptr C'apr_socket_t -> IO C'apr_descriptor
instance Storable C'apr_descriptor where
  sizeOf _ = 4
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 0
    return $ C'apr_descriptor v0 v1
  poke p (C'apr_descriptor v0 v1) = do
    pokeByteOff p 0 v0
    pokeByteOff p 0 v1
    return ()

{-# LINE 33 "Bindings/APR/Poll.hsc" #-}

data C'apr_pollfd_t = C'apr_pollfd_t{
{-# LINE 35 "Bindings/APR/Poll.hsc" #-}

  c'apr_pollfd_t'p :: Ptr C'apr_pool_t
{-# LINE 36 "Bindings/APR/Poll.hsc" #-}
,
  c'apr_pollfd_t'desc_type :: C'apr_datatype_e
{-# LINE 37 "Bindings/APR/Poll.hsc" #-}
,
  c'apr_pollfd_t'reqevents :: C'apr_int16_t
{-# LINE 38 "Bindings/APR/Poll.hsc" #-}
,
  c'apr_pollfd_t'rtnevents :: C'apr_int16_t
{-# LINE 39 "Bindings/APR/Poll.hsc" #-}
,
  c'apr_pollfd_t'desc :: C'apr_descriptor
{-# LINE 40 "Bindings/APR/Poll.hsc" #-}
,
  c'apr_pollfd_t'client_data :: Ptr ()
{-# LINE 41 "Bindings/APR/Poll.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'apr_pollfd_t where
  sizeOf _ = 20
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 4
    v2 <- peekByteOff p 8
    v3 <- peekByteOff p 10
    v4 <- peekByteOff p 12
    v5 <- peekByteOff p 16
    return $ C'apr_pollfd_t v0 v1 v2 v3 v4 v5
  poke p (C'apr_pollfd_t v0 v1 v2 v3 v4 v5) = do
    pokeByteOff p 0 v0
    pokeByteOff p 4 v1
    pokeByteOff p 8 v2
    pokeByteOff p 10 v3
    pokeByteOff p 12 v4
    pokeByteOff p 16 v5
    return ()

{-# LINE 42 "Bindings/APR/Poll.hsc" #-}

data C'apr_pollset_t = C'apr_pollset_t

{-# LINE 44 "Bindings/APR/Poll.hsc" #-}

foreign import ccall "apr_pollset_create" c'apr_pollset_create
  :: Ptr (Ptr C'apr_pollset_t) -> C'apr_uint32_t -> Ptr C'apr_pool_t -> C'apr_uint32_t -> IO C'apr_status_t
foreign import ccall "&apr_pollset_create" p'apr_pollset_create
  :: FunPtr (Ptr (Ptr C'apr_pollset_t) -> C'apr_uint32_t -> Ptr C'apr_pool_t -> C'apr_uint32_t -> IO C'apr_status_t)

{-# LINE 46 "Bindings/APR/Poll.hsc" #-}
foreign import ccall "apr_pollset_destroy" c'apr_pollset_destroy
  :: Ptr C'apr_pollset_t -> IO C'apr_status_t
foreign import ccall "&apr_pollset_destroy" p'apr_pollset_destroy
  :: FunPtr (Ptr C'apr_pollset_t -> IO C'apr_status_t)

{-# LINE 47 "Bindings/APR/Poll.hsc" #-}
foreign import ccall "apr_pollset_add" c'apr_pollset_add
  :: Ptr C'apr_pollset_t -> Ptr C'apr_pollfd_t -> IO C'apr_status_t
foreign import ccall "&apr_pollset_add" p'apr_pollset_add
  :: FunPtr (Ptr C'apr_pollset_t -> Ptr C'apr_pollfd_t -> IO C'apr_status_t)

{-# LINE 48 "Bindings/APR/Poll.hsc" #-}
foreign import ccall "apr_pollset_remove" c'apr_pollset_remove
  :: Ptr C'apr_pollset_t -> Ptr C'apr_pollfd_t -> IO C'apr_status_t
foreign import ccall "&apr_pollset_remove" p'apr_pollset_remove
  :: FunPtr (Ptr C'apr_pollset_t -> Ptr C'apr_pollfd_t -> IO C'apr_status_t)

{-# LINE 49 "Bindings/APR/Poll.hsc" #-}
foreign import ccall "apr_pollset_poll" c'apr_pollset_poll
  :: Ptr C'apr_pollset_t -> C'apr_interval_time_t -> Ptr C'apr_int32_t -> Ptr (Ptr C'apr_pollfd_t) -> IO C'apr_status_t
foreign import ccall "&apr_pollset_poll" p'apr_pollset_poll
  :: FunPtr (Ptr C'apr_pollset_t -> C'apr_interval_time_t -> Ptr C'apr_int32_t -> Ptr (Ptr C'apr_pollfd_t) -> IO C'apr_status_t)

{-# LINE 50 "Bindings/APR/Poll.hsc" #-}

foreign import ccall "apr_poll" c'apr_poll
  :: Ptr C'apr_pollfd_t -> C'apr_int32_t -> Ptr C'apr_int32_t -> C'apr_interval_time_t -> IO C'apr_status_t
foreign import ccall "&apr_poll" p'apr_poll
  :: FunPtr (Ptr C'apr_pollfd_t -> C'apr_int32_t -> Ptr C'apr_int32_t -> C'apr_interval_time_t -> IO C'apr_status_t)

{-# LINE 52 "Bindings/APR/Poll.hsc" #-}

data C'apr_pollcb_t = C'apr_pollcb_t

{-# LINE 54 "Bindings/APR/Poll.hsc" #-}

foreign import ccall "apr_pollcb_create" c'apr_pollcb_create
  :: Ptr (Ptr C'apr_pollcb_t) -> C'apr_uint32_t -> Ptr C'apr_pool_t -> C'apr_uint32_t -> IO C'apr_status_t
foreign import ccall "&apr_pollcb_create" p'apr_pollcb_create
  :: FunPtr (Ptr (Ptr C'apr_pollcb_t) -> C'apr_uint32_t -> Ptr C'apr_pool_t -> C'apr_uint32_t -> IO C'apr_status_t)

{-# LINE 56 "Bindings/APR/Poll.hsc" #-}
foreign import ccall "apr_pollcb_add" c'apr_pollcb_add
  :: Ptr C'apr_pollcb_t -> Ptr C'apr_pollfd_t -> IO C'apr_status_t
foreign import ccall "&apr_pollcb_add" p'apr_pollcb_add
  :: FunPtr (Ptr C'apr_pollcb_t -> Ptr C'apr_pollfd_t -> IO C'apr_status_t)

{-# LINE 57 "Bindings/APR/Poll.hsc" #-}
foreign import ccall "apr_pollcb_remove" c'apr_pollcb_remove
  :: Ptr C'apr_pollcb_t -> Ptr C'apr_pollfd_t -> IO C'apr_status_t
foreign import ccall "&apr_pollcb_remove" p'apr_pollcb_remove
  :: FunPtr (Ptr C'apr_pollcb_t -> Ptr C'apr_pollfd_t -> IO C'apr_status_t)

{-# LINE 58 "Bindings/APR/Poll.hsc" #-}

type C'apr_pollcb_cb_t = FunPtr (Ptr () -> Ptr C'apr_pollfd_t -> IO C'apr_status_t)
foreign import ccall "wrapper" mk'apr_pollcb_cb_t
  :: (Ptr () -> Ptr C'apr_pollfd_t -> IO C'apr_status_t) -> IO C'apr_pollcb_cb_t
foreign import ccall "dynamic" mK'apr_pollcb_cb_t
  :: C'apr_pollcb_cb_t -> (Ptr () -> Ptr C'apr_pollfd_t -> IO C'apr_status_t)

{-# LINE 60 "Bindings/APR/Poll.hsc" #-}

foreign import ccall "apr_pollcb_poll" c'apr_pollcb_poll
  :: Ptr C'apr_pollcb_t -> C'apr_interval_time_t -> C'apr_pollcb_cb_t -> Ptr () -> IO C'apr_status_t
foreign import ccall "&apr_pollcb_poll" p'apr_pollcb_poll
  :: FunPtr (Ptr C'apr_pollcb_t -> C'apr_interval_time_t -> C'apr_pollcb_cb_t -> Ptr () -> IO C'apr_status_t)

{-# LINE 62 "Bindings/APR/Poll.hsc" #-}