module Mpv.Data.SubDelay where

import Polysemy.Time.Json (json)
import Polysemy.Time (NanoSeconds)

newtype SubDelay =
  SubDelay { SubDelay -> NanoSeconds
unSubDelay :: NanoSeconds }
  deriving stock (SubDelay -> SubDelay -> Bool
(SubDelay -> SubDelay -> Bool)
-> (SubDelay -> SubDelay -> Bool) -> Eq SubDelay
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SubDelay -> SubDelay -> Bool
$c/= :: SubDelay -> SubDelay -> Bool
== :: SubDelay -> SubDelay -> Bool
$c== :: SubDelay -> SubDelay -> Bool
Eq, Int -> SubDelay -> ShowS
[SubDelay] -> ShowS
SubDelay -> String
(Int -> SubDelay -> ShowS)
-> (SubDelay -> String) -> ([SubDelay] -> ShowS) -> Show SubDelay
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SubDelay] -> ShowS
$cshowList :: [SubDelay] -> ShowS
show :: SubDelay -> String
$cshow :: SubDelay -> String
showsPrec :: Int -> SubDelay -> ShowS
$cshowsPrec :: Int -> SubDelay -> ShowS
Show, (forall x. SubDelay -> Rep SubDelay x)
-> (forall x. Rep SubDelay x -> SubDelay) -> Generic SubDelay
forall x. Rep SubDelay x -> SubDelay
forall x. SubDelay -> Rep SubDelay x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep SubDelay x -> SubDelay
$cfrom :: forall x. SubDelay -> Rep SubDelay x
Generic)
  deriving newtype (Integer -> SubDelay
SubDelay -> SubDelay
SubDelay -> SubDelay -> SubDelay
(SubDelay -> SubDelay -> SubDelay)
-> (SubDelay -> SubDelay -> SubDelay)
-> (SubDelay -> SubDelay -> SubDelay)
-> (SubDelay -> SubDelay)
-> (SubDelay -> SubDelay)
-> (SubDelay -> SubDelay)
-> (Integer -> SubDelay)
-> Num SubDelay
forall a.
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> a)
-> (a -> a)
-> (Integer -> a)
-> Num a
fromInteger :: Integer -> SubDelay
$cfromInteger :: Integer -> SubDelay
signum :: SubDelay -> SubDelay
$csignum :: SubDelay -> SubDelay
abs :: SubDelay -> SubDelay
$cabs :: SubDelay -> SubDelay
negate :: SubDelay -> SubDelay
$cnegate :: SubDelay -> SubDelay
* :: SubDelay -> SubDelay -> SubDelay
$c* :: SubDelay -> SubDelay -> SubDelay
- :: SubDelay -> SubDelay -> SubDelay
$c- :: SubDelay -> SubDelay -> SubDelay
+ :: SubDelay -> SubDelay -> SubDelay
$c+ :: SubDelay -> SubDelay -> SubDelay
Num, Eq SubDelay
Eq SubDelay
-> (SubDelay -> SubDelay -> Ordering)
-> (SubDelay -> SubDelay -> Bool)
-> (SubDelay -> SubDelay -> Bool)
-> (SubDelay -> SubDelay -> Bool)
-> (SubDelay -> SubDelay -> Bool)
-> (SubDelay -> SubDelay -> SubDelay)
-> (SubDelay -> SubDelay -> SubDelay)
-> Ord SubDelay
SubDelay -> SubDelay -> Bool
SubDelay -> SubDelay -> Ordering
SubDelay -> SubDelay -> SubDelay
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: SubDelay -> SubDelay -> SubDelay
$cmin :: SubDelay -> SubDelay -> SubDelay
max :: SubDelay -> SubDelay -> SubDelay
$cmax :: SubDelay -> SubDelay -> SubDelay
>= :: SubDelay -> SubDelay -> Bool
$c>= :: SubDelay -> SubDelay -> Bool
> :: SubDelay -> SubDelay -> Bool
$c> :: SubDelay -> SubDelay -> Bool
<= :: SubDelay -> SubDelay -> Bool
$c<= :: SubDelay -> SubDelay -> Bool
< :: SubDelay -> SubDelay -> Bool
$c< :: SubDelay -> SubDelay -> Bool
compare :: SubDelay -> SubDelay -> Ordering
$ccompare :: SubDelay -> SubDelay -> Ordering
Ord, Int -> SubDelay
SubDelay -> Int
SubDelay -> [SubDelay]
SubDelay -> SubDelay
SubDelay -> SubDelay -> [SubDelay]
SubDelay -> SubDelay -> SubDelay -> [SubDelay]
(SubDelay -> SubDelay)
-> (SubDelay -> SubDelay)
-> (Int -> SubDelay)
-> (SubDelay -> Int)
-> (SubDelay -> [SubDelay])
-> (SubDelay -> SubDelay -> [SubDelay])
-> (SubDelay -> SubDelay -> [SubDelay])
-> (SubDelay -> SubDelay -> SubDelay -> [SubDelay])
-> Enum SubDelay
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
enumFromThenTo :: SubDelay -> SubDelay -> SubDelay -> [SubDelay]
$cenumFromThenTo :: SubDelay -> SubDelay -> SubDelay -> [SubDelay]
enumFromTo :: SubDelay -> SubDelay -> [SubDelay]
$cenumFromTo :: SubDelay -> SubDelay -> [SubDelay]
enumFromThen :: SubDelay -> SubDelay -> [SubDelay]
$cenumFromThen :: SubDelay -> SubDelay -> [SubDelay]
enumFrom :: SubDelay -> [SubDelay]
$cenumFrom :: SubDelay -> [SubDelay]
fromEnum :: SubDelay -> Int
$cfromEnum :: SubDelay -> Int
toEnum :: Int -> SubDelay
$ctoEnum :: Int -> SubDelay
pred :: SubDelay -> SubDelay
$cpred :: SubDelay -> SubDelay
succ :: SubDelay -> SubDelay
$csucc :: SubDelay -> SubDelay
Enum, Num SubDelay
Ord SubDelay
Num SubDelay
-> Ord SubDelay -> (SubDelay -> Rational) -> Real SubDelay
SubDelay -> Rational
forall a. Num a -> Ord a -> (a -> Rational) -> Real a
toRational :: SubDelay -> Rational
$ctoRational :: SubDelay -> Rational
Real, Num SubDelay
Num SubDelay
-> (SubDelay -> SubDelay -> SubDelay)
-> (SubDelay -> SubDelay)
-> (Rational -> SubDelay)
-> Fractional SubDelay
Rational -> SubDelay
SubDelay -> SubDelay
SubDelay -> SubDelay -> SubDelay
forall a.
Num a
-> (a -> a -> a) -> (a -> a) -> (Rational -> a) -> Fractional a
fromRational :: Rational -> SubDelay
$cfromRational :: Rational -> SubDelay
recip :: SubDelay -> SubDelay
$crecip :: SubDelay -> SubDelay
/ :: SubDelay -> SubDelay -> SubDelay
$c/ :: SubDelay -> SubDelay -> SubDelay
Fractional)

json ''SubDelay