{-# LINE 1 "src/Heystone/CPU/Arm64.chs" #-}
{-# LANGUAGE ForeignFunctionInterface #-}
module Heystone.CPU.Arm64
(
Error(..)
) where
{-# LINE 16 "src/Heystone/CPU/Arm64.chs" #-}
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 25 "src/Heystone/CPU/Arm64.chs" #-}