{-# LINE 1 "lib/CPython/Protocols/Object/Enums.chs" #-}
module CPython.Protocols.Object.Enums where
data HSCPythonComparisonEnum = HSCPYTHON_LT
| HSCPYTHON_LE
| HSCPYTHON_EQ
| HSCPYTHON_NE
| HSCPYTHON_GT
| HSCPYTHON_GE
instance Enum HSCPythonComparisonEnum where
succ :: HSCPythonComparisonEnum -> HSCPythonComparisonEnum
succ HSCPythonComparisonEnum
HSCPYTHON_LT = HSCPythonComparisonEnum
HSCPYTHON_LE
succ HSCPythonComparisonEnum
HSCPYTHON_LE = HSCPythonComparisonEnum
HSCPYTHON_EQ
succ HSCPythonComparisonEnum
HSCPYTHON_EQ = HSCPythonComparisonEnum
HSCPYTHON_NE
succ HSCPythonComparisonEnum
HSCPYTHON_NE = HSCPythonComparisonEnum
HSCPYTHON_GT
succ HSCPythonComparisonEnum
HSCPYTHON_GT = HSCPythonComparisonEnum
HSCPYTHON_GE
succ HSCPythonComparisonEnum
HSCPYTHON_GE = [Char] -> HSCPythonComparisonEnum
forall a. HasCallStack => [Char] -> a
error [Char]
"HSCPythonComparisonEnum.succ: HSCPYTHON_GE has no successor"
pred :: HSCPythonComparisonEnum -> HSCPythonComparisonEnum
pred HSCPythonComparisonEnum
HSCPYTHON_LE = HSCPythonComparisonEnum
HSCPYTHON_LT
pred HSCPythonComparisonEnum
HSCPYTHON_EQ = HSCPythonComparisonEnum
HSCPYTHON_LE
pred HSCPythonComparisonEnum
HSCPYTHON_NE = HSCPythonComparisonEnum
HSCPYTHON_EQ
pred HSCPythonComparisonEnum
HSCPYTHON_GT = HSCPythonComparisonEnum
HSCPYTHON_NE
pred HSCPythonComparisonEnum
HSCPYTHON_GE = HSCPythonComparisonEnum
HSCPYTHON_GT
pred HSCPythonComparisonEnum
HSCPYTHON_LT = [Char] -> HSCPythonComparisonEnum
forall a. HasCallStack => [Char] -> a
error [Char]
"HSCPythonComparisonEnum.pred: HSCPYTHON_LT has no predecessor"
enumFromTo :: HSCPythonComparisonEnum
-> HSCPythonComparisonEnum -> [HSCPythonComparisonEnum]
enumFromTo HSCPythonComparisonEnum
from HSCPythonComparisonEnum
to = HSCPythonComparisonEnum -> [HSCPythonComparisonEnum]
forall {t}. Enum t => t -> [t]
go HSCPythonComparisonEnum
from
where
end :: Int
end = HSCPythonComparisonEnum -> Int
forall a. Enum a => a -> Int
fromEnum HSCPythonComparisonEnum
to
go :: t -> [t]
go t
v = case Int -> Int -> Ordering
forall a. Ord a => a -> a -> Ordering
compare (t -> Int
forall a. Enum a => a -> Int
fromEnum t
v) Int
end of
Ordering
LT -> t
v t -> [t] -> [t]
forall a. a -> [a] -> [a]
: t -> [t]
go (t -> t
forall a. Enum a => a -> a
succ t
v)
Ordering
EQ -> [t
v]
Ordering
GT -> []
enumFrom :: HSCPythonComparisonEnum -> [HSCPythonComparisonEnum]
enumFrom HSCPythonComparisonEnum
from = HSCPythonComparisonEnum
-> HSCPythonComparisonEnum -> [HSCPythonComparisonEnum]
forall a. Enum a => a -> a -> [a]
enumFromTo HSCPythonComparisonEnum
from HSCPythonComparisonEnum
HSCPYTHON_GE
fromEnum :: HSCPythonComparisonEnum -> Int
fromEnum HSCPythonComparisonEnum
HSCPYTHON_LT = Int
0
fromEnum HSCPythonComparisonEnum
HSCPYTHON_LE = Int
1
fromEnum HSCPythonComparisonEnum
HSCPYTHON_EQ = Int
2
fromEnum HSCPythonComparisonEnum
HSCPYTHON_NE = Int
3
fromEnum HSCPythonComparisonEnum
HSCPYTHON_GT = Int
4
fromEnum HSCPythonComparisonEnum
HSCPYTHON_GE = Int
5
toEnum :: Int -> HSCPythonComparisonEnum
toEnum Int
0 = HSCPythonComparisonEnum
HSCPYTHON_LT
toEnum Int
1 = HSCPythonComparisonEnum
HSCPYTHON_LE
toEnum Int
2 = HSCPythonComparisonEnum
HSCPYTHON_EQ
toEnum Int
3 = HSCPythonComparisonEnum
HSCPYTHON_NE
toEnum Int
4 = HSCPythonComparisonEnum
HSCPYTHON_GT
toEnum Int
5 = HSCPythonComparisonEnum
HSCPYTHON_GE
toEnum Int
unmatched = [Char] -> HSCPythonComparisonEnum
forall a. HasCallStack => [Char] -> a
error ([Char]
"HSCPythonComparisonEnum.toEnum: Cannot match " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ Int -> [Char]
forall a. Show a => a -> [Char]
show Int
unmatched)
{-# LINE 20 "lib/CPython/Protocols/Object/Enums.chs" #-}