module Bindings.C (

    Timeval

  ) where

import Foreign.C
import Foreign
import Data.Int

data Timeval = Timeval {timeval'tv_sec, timeval'tv_usec :: CLong}

instance Storable Timeval where

    sizeOf _ = fromIntegral size_of_timeval

    alignment = sizeOf

    peek p =
        with 0 $ \p1 ->
        with 0 $ \p2 ->

        c2hs_timeval p p1 p2 >>

        peek p1 >>= \v1 ->
        peek p2 >>= \v2 ->

        return $ Timeval {timeval'tv_sec = v1, timeval'tv_usec = v2}

    poke p v = hs2c_timeval p (timeval'tv_sec v) (timeval'tv_usec v)

foreign import ccall "size_of_timeval" size_of_timeval
    :: CInt

foreign import ccall "hs2c_timeval" hs2c_timeval
    :: Ptr Timeval -> CLong -> CLong -> IO ()

foreign import ccall "c2hs_timeval" c2hs_timeval
    :: Ptr Timeval -> Ptr CLong -> Ptr CLong -> IO ()