-- GENERATED by C->Haskell Compiler, version 0.28.8 Switcheroo, 25 November 2017 (Haskell)
-- Edit the ORIGNAL .chs file instead!


{-# LINE 1 "lib/CPython/Protocols/Object/Enums.chs" #-}
-- Copyright (C) 2009 John Millikin <jmillikin@gmail.com>
--
-- This program is free software: you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation, either version 3 of the License, or
-- any later version.
--
-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-- GNU General Public License for more details.
--
-- You should have received a copy of the GNU General Public License
-- along with this program.  If not, see <http://www.gnu.org/licenses/>.

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" #-}