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