bool8-0.0: src/Data/Bool8.hs
module Data.Bool8 (
Bool8,
false, true,
toBool,
fromBool,
) where
import Foreign.Storable (Storable, poke, peek, sizeOf, alignment)
import Foreign.Ptr (castPtr)
import Data.Functor ((<$>))
import Data.Word (Word8)
newtype Bool8 = Bool8 Word8
deriving (Eq, Ord)
instance Show Bool8 where
show (Bool8 0) = "Bool8.false"
show _ = "Bool8.true"
instance Bounded Bool8 where
minBound = false
maxBound = true
instance Storable Bool8 where
sizeOf _ = 1
alignment _ = 1
peek ptr = Bool8 <$> peek (castPtr ptr)
poke ptr (Bool8 b) = poke (castPtr ptr) b
instance Enum Bool8 where
fromEnum (Bool8 b) = fromIntegral b
toEnum k = Bool8 $ if k==0 then 0 else 1
false, true :: Bool8
false = Bool8 0
true = Bool8 1
toBool :: Bool8 -> Bool
toBool (Bool8 b) = b/=0
fromBool :: Bool -> Bool8
fromBool b = if b then true else false