{-# LINE 1 "Data/UnixTime/Types.hsc" #-} module Data.UnixTime.Types where {-# LINE 2 "Data/UnixTime/Types.hsc" #-} import Control.Applicative ((<$>), (<*>)) import Data.ByteString import Data.ByteString.Char8 () import Data.Int import Foreign.C.Types import Foreign.Storable {-# LINE 10 "Data/UnixTime/Types.hsc" #-} import Data.Binary {-# LINE 12 "Data/UnixTime/Types.hsc" #-} {-# LINE 14 "Data/UnixTime/Types.hsc" #-} {-# LINE 16 "Data/UnixTime/Types.hsc" #-} -- | -- Data structure for Unix time. data UnixTime = UnixTime { -- | Seconds from 1st Jan 1970 utSeconds :: {-# UNPACK #-} !CTime -- | Micro seconds (i.e. 10^(-6)) , utMicroSeconds :: {-# UNPACK #-} !Int32 } deriving (Eq,Ord,Show) instance Storable UnixTime where sizeOf _ = ((16)) {-# LINE 28 "Data/UnixTime/Types.hsc" #-} alignment _ = (8) {-# LINE 29 "Data/UnixTime/Types.hsc" #-} peek ptr = UnixTime <$> ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr {-# LINE 31 "Data/UnixTime/Types.hsc" #-} <*> ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr {-# LINE 32 "Data/UnixTime/Types.hsc" #-} poke ptr ut = do ((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr (utSeconds ut) {-# LINE 34 "Data/UnixTime/Types.hsc" #-} ((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr (utMicroSeconds ut) {-# LINE 35 "Data/UnixTime/Types.hsc" #-} {-# LINE 37 "Data/UnixTime/Types.hsc" #-} instance Binary UnixTime where put (UnixTime (CTime sec) msec) = do put sec put msec get = UnixTime <$> (CTime `fmap` get) <*> get {-# LINE 43 "Data/UnixTime/Types.hsc" #-} -- | -- Format of the strptime()/strftime() style. type Format = ByteString -- | -- Data structure for UnixTime diff. -- -- >>> (3 :: UnixDiffTime) + 2 -- UnixDiffTime {udtSeconds = 5, udtMicroSecnods = 0} -- >>> (2 :: UnixDiffTime) - 5 -- UnixDiffTime {udtSeconds = -3, udtMicroSecnods = 0} -- >>> (3 :: UnixDiffTime) * 2 -- UnixDiffTime {udtSeconds = 6, udtMicroSecnods = 0} data UnixDiffTime = UnixDiffTime { -- | Seconds from 1st Jan 1970 udtSeconds :: {-# UNPACK #-} !CTime -- | Micro seconds (i.e. 10^(-6)) , udtMicroSecnods :: {-# UNPACK #-} !Int32 } deriving (Eq,Ord,Show)