{-# OPTIONS_GHC -Wno-unused-top-binds #-}
module Morley.Tezos.Address.Kinds
( AddressKind(..)
, SingAddressKind(..)
, forEachAddressKind
) where
import Fmt (Buildable(..))
import Language.Haskell.TH (ExpQ)
import Morley.Util.Sing
data AddressKind
= AddressKindImplicit
| AddressKindContract
| AddressKindSmartRollup
deriving stock (AddressKind -> AddressKind -> Bool
(AddressKind -> AddressKind -> Bool)
-> (AddressKind -> AddressKind -> Bool) -> Eq AddressKind
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: AddressKind -> AddressKind -> Bool
== :: AddressKind -> AddressKind -> Bool
$c/= :: AddressKind -> AddressKind -> Bool
/= :: AddressKind -> AddressKind -> Bool
Eq, AddressKind
AddressKind -> AddressKind -> Bounded AddressKind
forall a. a -> a -> Bounded a
$cminBound :: AddressKind
minBound :: AddressKind
$cmaxBound :: AddressKind
maxBound :: AddressKind
Bounded, Int -> AddressKind
AddressKind -> Int
AddressKind -> [AddressKind]
AddressKind -> AddressKind
AddressKind -> AddressKind -> [AddressKind]
AddressKind -> AddressKind -> AddressKind -> [AddressKind]
(AddressKind -> AddressKind)
-> (AddressKind -> AddressKind)
-> (Int -> AddressKind)
-> (AddressKind -> Int)
-> (AddressKind -> [AddressKind])
-> (AddressKind -> AddressKind -> [AddressKind])
-> (AddressKind -> AddressKind -> [AddressKind])
-> (AddressKind -> AddressKind -> AddressKind -> [AddressKind])
-> Enum AddressKind
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
$csucc :: AddressKind -> AddressKind
succ :: AddressKind -> AddressKind
$cpred :: AddressKind -> AddressKind
pred :: AddressKind -> AddressKind
$ctoEnum :: Int -> AddressKind
toEnum :: Int -> AddressKind
$cfromEnum :: AddressKind -> Int
fromEnum :: AddressKind -> Int
$cenumFrom :: AddressKind -> [AddressKind]
enumFrom :: AddressKind -> [AddressKind]
$cenumFromThen :: AddressKind -> AddressKind -> [AddressKind]
enumFromThen :: AddressKind -> AddressKind -> [AddressKind]
$cenumFromTo :: AddressKind -> AddressKind -> [AddressKind]
enumFromTo :: AddressKind -> AddressKind -> [AddressKind]
$cenumFromThenTo :: AddressKind -> AddressKind -> AddressKind -> [AddressKind]
enumFromThenTo :: AddressKind -> AddressKind -> AddressKind -> [AddressKind]
Enum, Eq AddressKind
Eq AddressKind
-> (AddressKind -> AddressKind -> Ordering)
-> (AddressKind -> AddressKind -> Bool)
-> (AddressKind -> AddressKind -> Bool)
-> (AddressKind -> AddressKind -> Bool)
-> (AddressKind -> AddressKind -> Bool)
-> (AddressKind -> AddressKind -> AddressKind)
-> (AddressKind -> AddressKind -> AddressKind)
-> Ord AddressKind
AddressKind -> AddressKind -> Bool
AddressKind -> AddressKind -> Ordering
AddressKind -> AddressKind -> AddressKind
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
$ccompare :: AddressKind -> AddressKind -> Ordering
compare :: AddressKind -> AddressKind -> Ordering
$c< :: AddressKind -> AddressKind -> Bool
< :: AddressKind -> AddressKind -> Bool
$c<= :: AddressKind -> AddressKind -> Bool
<= :: AddressKind -> AddressKind -> Bool
$c> :: AddressKind -> AddressKind -> Bool
> :: AddressKind -> AddressKind -> Bool
$c>= :: AddressKind -> AddressKind -> Bool
>= :: AddressKind -> AddressKind -> Bool
$cmax :: AddressKind -> AddressKind -> AddressKind
max :: AddressKind -> AddressKind -> AddressKind
$cmin :: AddressKind -> AddressKind -> AddressKind
min :: AddressKind -> AddressKind -> AddressKind
Ord, Int -> AddressKind -> ShowS
[AddressKind] -> ShowS
AddressKind -> [Char]
(Int -> AddressKind -> ShowS)
-> (AddressKind -> [Char])
-> ([AddressKind] -> ShowS)
-> Show AddressKind
forall a.
(Int -> a -> ShowS) -> (a -> [Char]) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> AddressKind -> ShowS
showsPrec :: Int -> AddressKind -> ShowS
$cshow :: AddressKind -> [Char]
show :: AddressKind -> [Char]
$cshowList :: [AddressKind] -> ShowS
showList :: [AddressKind] -> ShowS
Show, (forall x. AddressKind -> Rep AddressKind x)
-> (forall x. Rep AddressKind x -> AddressKind)
-> Generic AddressKind
forall x. Rep AddressKind x -> AddressKind
forall x. AddressKind -> Rep AddressKind x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. AddressKind -> Rep AddressKind x
from :: forall x. AddressKind -> Rep AddressKind x
$cto :: forall x. Rep AddressKind x -> AddressKind
to :: forall x. Rep AddressKind x -> AddressKind
Generic)
instance NFData AddressKind
instance Buildable AddressKind where
build :: AddressKind -> Doc
build = \case
AddressKind
AddressKindImplicit -> Doc
"implicit"
AddressKind
AddressKindContract -> Doc
"contract"
AddressKind
AddressKindSmartRollup -> Doc
"smart rollup"
genSingletonsType ''AddressKind
forEachAddressKind :: ExpQ -> ExpQ
forEachAddressKind :: ExpQ -> ExpQ
forEachAddressKind ExpQ
r = [e|
\case
SAddressKindImplicit -> $ExpQ
r
SAddressKindContract -> $ExpQ
r
SAddressKindSmartRollup -> $ExpQ
r
|]