basement-0.0.1: Basement/Alg/Native/Prim.hs
{-# LANGUAGE MagicHash #-}
module Basement.Alg.Native.Prim
( Immutable
, Mutable
, primIndex
, primIndex64
, primRead
, primWrite
) where
import GHC.Types
import GHC.Prim
import GHC.Word
import Basement.Types.OffsetSize
import Basement.PrimType
import Basement.Monad
type Immutable = ByteArray#
type Mutable st = MutableByteArray# st
primIndex :: PrimType ty => Immutable -> Offset ty -> ty
primIndex = primBaIndex
{-# INLINE primIndex #-}
primIndex64 :: Immutable -> Offset Word64 -> Word64
primIndex64 = primIndex
{-# INLINE primIndex64 #-}
primRead :: (PrimMonad prim, PrimType ty) => Mutable (PrimState prim) -> Offset ty -> prim ty
primRead = primMbaRead
{-# INLINE primRead #-}
primWrite :: (PrimMonad prim, PrimType ty) => Mutable (PrimState prim) -> Offset ty -> ty -> prim ()
primWrite = primMbaWrite
{-# INLINE primWrite #-}