module SAT.Mios.Data.VecBool
(
VecBool
, newVecBool
, getNthBool
, setNthBool
, modifyNthBool
)
where
import Control.Monad (forM)
import qualified Data.Vector.Unboxed.Mutable as UV
import SAT.Mios.Types (VectorFamily(..))
type VecBool = UV.IOVector Bool
instance VectorFamily VecBool Bool where
clear _ = error "VecBool.clear"
asList v = forM [0 .. UV.length v 1] $ UV.unsafeRead v
dump str v = (str ++) . show <$> asList v
newVecBool :: Int -> Bool -> IO VecBool
newVecBool n x = do
v <- UV.new n
UV.set v x
return v
getNthBool :: VecBool -> Int -> IO Bool
getNthBool = UV.unsafeRead
setNthBool :: VecBool -> Int -> Bool -> IO ()
setNthBool = UV.unsafeWrite
modifyNthBool :: VecBool -> (Bool -> Bool) -> Int -> IO ()
modifyNthBool = UV.unsafeModify