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


{-# LINE 1 "src/Heystone/CPU/Sparc.chs" #-}
{-# LANGUAGE ForeignFunctionInterface #-}

{-|
Module      : Heystone.CPU.Sparc
Description : Definitions for the SPARC architecture.
Copyright   : (C) Adrian Herrera, 2016
License     : GPL-2

Definitions for the SPARC architecture.
-}
module Heystone.CPU.Sparc
    (
      Error(..)
    ) where




{-# LINE 16 "src/Heystone/CPU/Sparc.chs" #-}




-- | SPARC errors.
data Error = Invalidoperand
           | Missingfeature
           | Mnemonicfail
  deriving (Int -> Error -> ShowS
[Error] -> ShowS
Error -> String
(Int -> Error -> ShowS)
-> (Error -> String) -> ([Error] -> ShowS) -> Show Error
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Error] -> ShowS
$cshowList :: [Error] -> ShowS
show :: Error -> String
$cshow :: Error -> String
showsPrec :: Int -> Error -> ShowS
$cshowsPrec :: Int -> Error -> ShowS
Show,Error -> Error -> Bool
(Error -> Error -> Bool) -> (Error -> Error -> Bool) -> Eq Error
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Error -> Error -> Bool
$c/= :: Error -> Error -> Bool
== :: Error -> Error -> Bool
$c== :: Error -> Error -> Bool
Eq,Error
Error -> Error -> Bounded Error
forall a. a -> a -> Bounded a
maxBound :: Error
$cmaxBound :: Error
minBound :: Error
$cminBound :: Error
Bounded)
instance Enum Error where
  succ :: Error -> Error
succ Error
Invalidoperand = Error
Missingfeature
  succ Error
Missingfeature = Error
Mnemonicfail
  succ Error
Mnemonicfail = String -> Error
forall a. HasCallStack => String -> a
error String
"Error.succ: Mnemonicfail has no successor"

  pred :: Error -> Error
pred Error
Missingfeature = Error
Invalidoperand
  pred Error
Mnemonicfail = Error
Missingfeature
  pred Error
Invalidoperand = String -> Error
forall a. HasCallStack => String -> a
error String
"Error.pred: Invalidoperand has no predecessor"

  enumFromTo :: Error -> Error -> [Error]
enumFromTo Error
from Error
to = Error -> [Error]
go Error
from
    where
      end :: Int
end = Error -> Int
forall a. Enum a => a -> Int
fromEnum Error
to
      go :: Error -> [Error]
go Error
v = case Int -> Int -> Ordering
forall a. Ord a => a -> a -> Ordering
compare (Error -> Int
forall a. Enum a => a -> Int
fromEnum Error
v) Int
end of
                 Ordering
LT -> Error
v Error -> [Error] -> [Error]
forall a. a -> [a] -> [a]
: Error -> [Error]
go (Error -> Error
forall a. Enum a => a -> a
succ Error
v)
                 Ordering
EQ -> [Error
v]
                 Ordering
GT -> []

  enumFrom :: Error -> [Error]
enumFrom Error
from = Error -> Error -> [Error]
forall a. Enum a => a -> a -> [a]
enumFromTo Error
from Error
Mnemonicfail

  fromEnum :: Error -> Int
fromEnum Error
Invalidoperand = Int
512
  fromEnum Error
Missingfeature = Int
513
  fromEnum Error
Mnemonicfail = Int
514

  toEnum :: Int -> Error
toEnum Int
512 = Error
Invalidoperand
  toEnum Int
513 = Error
Missingfeature
  toEnum Int
514 = Error
Mnemonicfail
  toEnum Int
unmatched = String -> Error
forall a. HasCallStack => String -> a
error (String
"Error.toEnum: Cannot match " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Int -> String
forall a. Show a => a -> String
show Int
unmatched)

{-# LINE 24 "src/Heystone/CPU/Sparc.chs" #-}