-- |
--
module Data.Radius.Attribute.Number (
  Number (..),

  toWord, fromWord,
  ) where

import Data.Word (Word8)


data Number
  = UserName
  | ProxyState
  | State
  | MessageAuthenticator
  | ReplyMessage
  | VendorSpecific
  | Other !Word8
  deriving (Number -> Number -> Bool
(Number -> Number -> Bool)
-> (Number -> Number -> Bool) -> Eq Number
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Number -> Number -> Bool
== :: Number -> Number -> Bool
$c/= :: Number -> Number -> Bool
/= :: Number -> Number -> Bool
Eq, Eq Number
Eq Number =>
(Number -> Number -> Ordering)
-> (Number -> Number -> Bool)
-> (Number -> Number -> Bool)
-> (Number -> Number -> Bool)
-> (Number -> Number -> Bool)
-> (Number -> Number -> Number)
-> (Number -> Number -> Number)
-> Ord Number
Number -> Number -> Bool
Number -> Number -> Ordering
Number -> Number -> Number
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 :: Number -> Number -> Ordering
compare :: Number -> Number -> Ordering
$c< :: Number -> Number -> Bool
< :: Number -> Number -> Bool
$c<= :: Number -> Number -> Bool
<= :: Number -> Number -> Bool
$c> :: Number -> Number -> Bool
> :: Number -> Number -> Bool
$c>= :: Number -> Number -> Bool
>= :: Number -> Number -> Bool
$cmax :: Number -> Number -> Number
max :: Number -> Number -> Number
$cmin :: Number -> Number -> Number
min :: Number -> Number -> Number
Ord, Int -> Number -> ShowS
[Number] -> ShowS
Number -> String
(Int -> Number -> ShowS)
-> (Number -> String) -> ([Number] -> ShowS) -> Show Number
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Number -> ShowS
showsPrec :: Int -> Number -> ShowS
$cshow :: Number -> String
show :: Number -> String
$cshowList :: [Number] -> ShowS
showList :: [Number] -> ShowS
Show, ReadPrec [Number]
ReadPrec Number
Int -> ReadS Number
ReadS [Number]
(Int -> ReadS Number)
-> ReadS [Number]
-> ReadPrec Number
-> ReadPrec [Number]
-> Read Number
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: Int -> ReadS Number
readsPrec :: Int -> ReadS Number
$creadList :: ReadS [Number]
readList :: ReadS [Number]
$creadPrec :: ReadPrec Number
readPrec :: ReadPrec Number
$creadListPrec :: ReadPrec [Number]
readListPrec :: ReadPrec [Number]
Read)

toWord :: Number -> Word8
toWord :: Number -> Word8
toWord = Number -> Word8
d  where
  d :: Number -> Word8
d Number
UserName              =   Word8
1
  d Number
ReplyMessage          =  Word8
18
  d Number
State                 =  Word8
24
  d Number
VendorSpecific        =  Word8
26
  d Number
ProxyState            =  Word8
33
  d Number
MessageAuthenticator  =  Word8
80
  d (Other Word8
w8)            =  Word8
w8

fromWord :: Word8 -> Number
fromWord :: Word8 -> Number
fromWord = Word8 -> Number
d  where
  d :: Word8 -> Number
d  Word8
1  =  Number
UserName
  d Word8
18  =  Number
ReplyMessage
  d Word8
24  =  Number
State
  d Word8
26  =  Number
VendorSpecific
  d Word8
33  =  Number
ProxyState
  d Word8
80  =  Number
MessageAuthenticator
  d Word8
w8  =  Word8 -> Number
Other Word8
w8