-- -- 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)