module Graphics.Wayland.Internal.ServerClientState where
data ClientStateNums = ClientReadable
| ClientWritable
| ClientHangup
| ClientError
instance Enum ClientStateNums where
succ ClientReadable = ClientWritable
succ ClientWritable = ClientHangup
succ ClientHangup = ClientError
succ ClientError = error "ClientStateNums.succ: ClientError has no successor"
pred ClientWritable = ClientReadable
pred ClientHangup = ClientWritable
pred ClientError = ClientHangup
pred ClientReadable = error "ClientStateNums.pred: ClientReadable has no predecessor"
enumFromTo from to = go from
where
end = fromEnum to
go v = case compare (fromEnum v) end of
LT -> v : go (succ v)
EQ -> [v]
GT -> []
enumFrom from = enumFromTo from ClientError
fromEnum ClientReadable = 1
fromEnum ClientWritable = 2
fromEnum ClientHangup = 4
fromEnum ClientError = 8
toEnum 1 = ClientReadable
toEnum 2 = ClientWritable
toEnum 4 = ClientHangup
toEnum 8 = ClientError
toEnum unmatched = error ("ClientStateNums.toEnum: Cannot match " ++ show unmatched)