{-# LANGUAGE CPP #-}
#ifndef BITVEC_THREADSAFE
module Data.Bit
#else
module Data.Bit.ThreadSafe
#endif
( Bit(..)
, unsafeFlipBit
, flipBit
, castFromWords
, castToWords
, cloneToWords
, castFromWords8
, castToWords8
, cloneToWords8
, cloneFromByteString
, cloneToByteString
, zipBits
, mapBits
, invertBits
, reverseBits
, bitIndex
, nthBitIndex
, countBits
, listBits
, selectBits
, excludeBits
, castFromWordsM
, castToWordsM
, cloneToWordsM
, zipInPlace
, mapInPlace
, invertInPlace
, reverseInPlace
, selectBitsInPlace
, excludeBitsInPlace
, F2Poly
, unF2Poly
, toF2Poly
, gcdExt
) where
import Prelude hiding (and, or)
#ifndef BITVEC_THREADSAFE
import Data.Bit.F2Poly
import Data.Bit.Immutable
import Data.Bit.Internal
import Data.Bit.Mutable
#else
import Data.Bit.F2PolyTS
import Data.Bit.ImmutableTS
import Data.Bit.InternalTS
import Data.Bit.MutableTS
#endif