ivory-bitdata-0.2.0.0: src/Ivory/BitData.hs
--
-- BitData.hs --- Top-level module for ivory-bitdata.
--
-- Copyright (C) 2013, Galois, Inc.
-- All Rights Reserved.
--
module Ivory.BitData (
-- * quasiquoter
bitdata
-- * bit types
, Bits(), Bit, BitArray(), BitRep()
, repToBits, bitsToRep, zeroBits
, bitLength, bitIx
-- * bit data
, BitData(), BitDataField(), BitDataRep
-- * bit data conversions
, toBits, fromBits
, toRep, fromRep
-- * bit data field operations
, setBitDataBit, clearBitDataBit, getBitDataField, setBitDataField
-- * bit data operators
, (#!) -- access nth element of BitArray
, (#.) -- flip getBitDataField
, (#>) -- BitDataField composition (like Control.Category.>>>)
-- * bit actions
, BitDataM(), runBits, withBits, withBitsRef
, clear, setBit, clearBit, setField
, bitToBool, boolToBit
) where
import Ivory.BitData.Bits
import Ivory.BitData.BitData
import Ivory.BitData.Array
import Ivory.BitData.Quote
import Ivory.BitData.Monad
import Ivory.Language
-- | Convert a single bit bitdata to an Ivory boolean.
bitToBool :: Bit -> IBool
bitToBool b = (toRep b ==? 0) ? (false, true)
-- | Convert an Ivory boolean to a single bit.
boolToBit :: IBool -> Bit
boolToBit b = b ? (fromRep 1, fromRep 0)