mptcp-0.0.1: Net/Mptcp/Flags.hs
module Net.Mptcp.Flags (
MptcpFlag
)
where
data MptcpFlag = MptcpFlagFin | MptcpFlagSyn | MptcpFlagRst | MptcpFlagPsh
| MptcpFlagAck | MptcpFlagUrg | MptcpFlagEcn | MptcpFlagCwr | MptcpFlagNonce
deriving (Eq, Show, Bounded)
-- values are power of 2 of the flag
instance Enum MptcpFlag where
toEnum 0 = MptcpFlagFin
toEnum 1 = MptcpFlagSyn
toEnum 2 = MptcpFlagRst
toEnum 3 = MptcpFlagPsh
toEnum 4 = MptcpFlagAck
toEnum 5 = MptcpFlagUrg
toEnum 6 = MptcpFlagEcn
toEnum 7 = MptcpFlagCwr
toEnum 8 = MptcpFlagNonce
toEnum n = error $ "toEnum n: " ++ show n
fromEnum MptcpFlagFin = 0
fromEnum MptcpFlagSyn = 1
fromEnum MptcpFlagRst = 2
fromEnum MptcpFlagPsh = 3
fromEnum MptcpFlagAck = 4
fromEnum MptcpFlagUrg = 5
fromEnum MptcpFlagEcn = 6
fromEnum MptcpFlagCwr = 7
fromEnum MptcpFlagNonce = 8
-- fromEnum _ = error $ "fromEnum not implemented"
enumFrom x = enumFromTo x maxBound
enumFromThen x y = enumFromThenTo x y bound
where
bound | fromEnum y >= fromEnum x = maxBound
| otherwise = minBound