impure-containers-0.5.0: src/Data/HashMap/Mutable/Internal/Array.hs
{-# LANGUAGE CPP #-}
module Data.HashMap.Mutable.Internal.Array
( MutableArray
, newArray
, readArray
, writeArray
) where
import Control.Monad.Primitive (PrimMonad, PrimState)
import Control.Monad.ST
#ifdef BOUNDS_CHECKING
import Data.Vector.Mutable (MVector)
import qualified Data.Vector.Mutable as M
#else
import Data.Primitive.Array (MutableArray)
import qualified Data.Primitive.Array as M
#endif
#ifdef BOUNDS_CHECKING
type MutableArray s a = MVector s a
newArray :: PrimMonad m => Int -> a -> m (MutableArray (PrimState m) a)
newArray = M.replicate
readArray :: PrimMonad m => MutableArray (PrimState m) a -> Int -> m a
readArray = M.read
writeArray :: PrimMonad m => MutableArray (PrimState m) a -> Int -> a -> m ()
writeArray = M.write
#else
newArray :: PrimMonad m => Int -> a -> m (MutableArray (PrimState m) a)
newArray = M.newArray
readArray :: PrimMonad m => MutableArray (PrimState m) a -> Int -> m a
readArray = M.readArray
writeArray :: PrimMonad m => MutableArray (PrimState m) a -> Int -> a -> m ()
writeArray = M.writeArray
#endif