{-# LANGUAGE CPP #-}
{-# LANGUAGE TemplateHaskellQuotes #-}
module Data.Time.Clock.Compat (
UniversalTime(..),
DiffTime,
pattern Picoseconds,
pattern Seconds,
pattern Minutes,
pattern Hours,
secondsToDiffTime,
picosecondsToDiffTime,
diffTimeToPicoseconds,
UTCTime (..),
NominalDiffTime,
pattern Nominal,
secondsToNominalDiffTime,
nominalDiffTimeToSeconds,
nominalDay,
addUTCTime,
diffUTCTime,
getCurrentTime,
getTime_resolution,
Year,
MonthOfYear,
DayOfMonth,
) where
import Data.Time.Orphans ()
import Data.Time.Calendar.Types
import Data.Time.Clock
import Data.Fixed (Pico, Fixed (MkFixed))
import Debug.Trace
#if !MIN_VERSION_time(1,15,0)
pattern Picoseconds :: Integer -> DiffTime
pattern $mPicoseconds :: forall {r}. DiffTime -> (Integer -> r) -> ((# #) -> r) -> r
$bPicoseconds :: Integer -> DiffTime
Picoseconds a <- (diffTimeToPicoseconds -> a)
where
Picoseconds Integer
a = Integer -> DiffTime
picosecondsToDiffTime Integer
a
{-# COMPLETE Picoseconds #-}
pattern Seconds :: Pico -> DiffTime
pattern $mSeconds :: forall {r}. DiffTime -> (Pico -> r) -> ((# #) -> r) -> r
$bSeconds :: Pico -> DiffTime
Seconds a <- (MkFixed . diffTimeToPicoseconds -> a)
where
Seconds Pico
a = Integer -> DiffTime
picosecondsToDiffTime (case Pico
a of MkFixed Integer
a' -> Integer
a')
{-# COMPLETE Seconds #-}
pattern Minutes :: Pico -> DiffTime
pattern $mMinutes :: forall {r}. DiffTime -> (Pico -> r) -> ((# #) -> r) -> r
$bMinutes :: Pico -> DiffTime
Minutes a <- Seconds ((/ 60) -> a)
where
Minutes Pico
a = Pico -> DiffTime
Seconds (Pico -> DiffTime) -> Pico -> DiffTime
forall a b. (a -> b) -> a -> b
$ Pico
a Pico -> Pico -> Pico
forall a. Num a => a -> a -> a
* Pico
60
{-# COMPLETE Minutes #-}
pattern Hours :: Pico -> DiffTime
pattern $mHours :: forall {r}. DiffTime -> (Pico -> r) -> ((# #) -> r) -> r
$bHours :: Pico -> DiffTime
Hours a <- Minutes ((/ 60) -> a)
where
Hours Pico
a = Pico -> DiffTime
Minutes (Pico -> DiffTime) -> Pico -> DiffTime
forall a b. (a -> b) -> a -> b
$ Pico
a Pico -> Pico -> Pico
forall a. Num a => a -> a -> a
* Pico
60
{-# COMPLETE Hours #-}
pattern Nominal :: DiffTime -> NominalDiffTime
pattern $mNominal :: forall {r}. NominalDiffTime -> (DiffTime -> r) -> ((# #) -> r) -> r
$bNominal :: DiffTime -> NominalDiffTime
Nominal dt <- (Seconds . nominalDiffTimeToSeconds -> dt)
where
Nominal DiffTime
dt = Pico -> NominalDiffTime
secondsToNominalDiffTime (case DiffTime
dt of Seconds Pico
dt' -> Pico
dt')
{-# COMPLETE Nominal #-}
#endif
#if !MIN_VERSION_time(1,9,1)
secondsToNominalDiffTime :: Pico -> NominalDiffTime
secondsToNominalDiffTime = realToFrac
nominalDiffTimeToSeconds :: NominalDiffTime -> Pico
nominalDiffTimeToSeconds = realToFrac
#endif