module Data.Prim.ByteArray
( MutableByteArray
, newByteArray
, readCharArray
, readWideCharArray
, readIntArray
, readWordArray
, readFloatArray
, readDoubleArray
, readInt8Array
, readInt16Array
, readInt32Array
, readInt64Array
, readWord8Array
, readWord16Array
, readWord32Array
, readWord64Array
, readStablePtrArray
, readFunPtrArray
, readPtrArray
, writeCharArray
, writeWideCharArray
, writeIntArray
, writeWordArray
, writeFloatArray
, writeDoubleArray
, writeInt8Array
, writeInt16Array
, writeInt32Array
, writeInt64Array
, writeWord8Array
, writeWord16Array
, writeWord32Array
, writeWord64Array
, writeStablePtrArray
, writeFunPtrArray
, writePtrArray
) where
import Control.Monad.Prim
import Data.Typeable (Typeable)
import GHC.Exts
import GHC.Int
import GHC.Stable
import GHC.Word
data MutableByteArray s = MutableByteArray (MutableByteArray# s) deriving Typeable
instance Eq (MutableByteArray s) where
MutableByteArray a == MutableByteArray b = sameMutableByteArray# a b
newByteArray :: Int -> Prim s (MutableByteArray s)
newByteArray (I# i) = prim $ \ s -> case newByteArray# i s of
(# s', array #) -> (# s', MutableByteArray array #)
readCharArray :: MutableByteArray s -> Int -> Prim s Char
readCharArray (MutableByteArray array) (I# i) =
prim $ \ s -> case readCharArray# array i s of
(# s', e #) -> (# s', C# e #)
readWideCharArray :: MutableByteArray s -> Int -> Prim s Char
readWideCharArray (MutableByteArray array) (I# i) =
prim $ \ s -> case readWideCharArray# array i s of
(# s', e #) -> (# s', C# e #)
readIntArray :: MutableByteArray s -> Int -> Prim s Int
readIntArray (MutableByteArray array) (I# i) =
prim $ \ s -> case readIntArray# array i s of
(# s', e #) -> (# s', I# e #)
readWordArray :: MutableByteArray s -> Int -> Prim s Word
readWordArray (MutableByteArray array) (I# i) =
prim $ \ s -> case readWordArray# array i s of
(# s', e #) -> (# s', W# e #)
readFloatArray :: MutableByteArray s -> Int -> Prim s Float
readFloatArray (MutableByteArray array) (I# i) =
prim $ \ s -> case readFloatArray# array i s of
(# s', e #) -> (# s', F# e #)
readDoubleArray :: MutableByteArray s -> Int -> Prim s Double
readDoubleArray (MutableByteArray array) (I# i) =
prim $ \ s -> case readDoubleArray# array i s of
(# s', e #) -> (# s', D# e #)
readInt8Array :: MutableByteArray s -> Int -> Prim s Int8
readInt8Array (MutableByteArray array) (I# i) =
prim $ \ s -> case readInt8Array# array i s of
(# s', e #) -> (# s', I8# e #)
readInt16Array :: MutableByteArray s -> Int -> Prim s Int16
readInt16Array (MutableByteArray array) (I# i) =
prim $ \ s -> case readInt16Array# array i s of
(# s', e #) -> (# s', I16# e #)
readInt32Array :: MutableByteArray s -> Int -> Prim s Int32
readInt32Array (MutableByteArray array) (I# i) =
prim $ \ s -> case readInt32Array# array i s of
(# s', e #) -> (# s', I32# e #)
readInt64Array :: MutableByteArray s -> Int -> Prim s Int64
readInt64Array (MutableByteArray array) (I# i) =
prim $ \ s -> case readInt64Array# array i s of
(# s', e #) -> (# s', I64# e #)
readWord8Array :: MutableByteArray s -> Int -> Prim s Word8
readWord8Array (MutableByteArray array) (I# i) =
prim $ \ s -> case readWord8Array# array i s of
(# s', e #) -> (# s', W8# e #)
readWord16Array :: MutableByteArray s -> Int -> Prim s Word16
readWord16Array (MutableByteArray array) (I# i) =
prim $ \ s -> case readWord16Array# array i s of
(# s', e #) -> (# s', W16# e #)
readWord32Array :: MutableByteArray s -> Int -> Prim s Word32
readWord32Array (MutableByteArray array) (I# i) =
prim $ \ s -> case readWord32Array# array i s of
(# s', e #) -> (# s', W32# e #)
readWord64Array :: MutableByteArray s -> Int -> Prim s Word64
readWord64Array (MutableByteArray array) (I# i) =
prim $ \ s -> case readWord64Array# array i s of
(# s', e #) -> (# s', W64# e #)
readStablePtrArray :: MutableByteArray s -> Int -> Prim s (StablePtr a)
readStablePtrArray (MutableByteArray array) (I# i) =
prim $ \ s -> case readStablePtrArray# array i s of
(# s', e #) -> (# s', StablePtr e #)
readFunPtrArray :: MutableByteArray s -> Int -> Prim s (FunPtr a)
readFunPtrArray (MutableByteArray array) (I# i) =
prim $ \ s -> case readAddrArray# array i s of
(# s', e #) -> (# s', FunPtr e #)
readPtrArray :: MutableByteArray s -> Int -> Prim s (Ptr a)
readPtrArray (MutableByteArray array) (I# i) =
prim $ \ s -> case readAddrArray# array i s of
(# s', e #) -> (# s', Ptr e #)
writeCharArray :: MutableByteArray s -> Int -> Char -> Prim s ()
writeCharArray (MutableByteArray array) (I# i) (C# e) =
prim $ \ s -> case writeCharArray# array i e s of
s' -> (# s', () #)
writeWideCharArray :: MutableByteArray s -> Int -> Char -> Prim s ()
writeWideCharArray (MutableByteArray array) (I# i) (C# e) =
prim $ \ s -> case writeWideCharArray# array i e s of
s' -> (# s', () #)
writeIntArray :: MutableByteArray s -> Int -> Int -> Prim s ()
writeIntArray (MutableByteArray array) (I# i) (I# e) =
prim $ \ s -> case writeIntArray# array i e s of
s' -> (# s', () #)
writeWordArray :: MutableByteArray s -> Int -> Word -> Prim s ()
writeWordArray (MutableByteArray array) (I# i) (W# e) =
prim $ \ s -> case writeWordArray# array i e s of
s' -> (# s', () #)
writeFloatArray :: MutableByteArray s -> Int -> Float -> Prim s ()
writeFloatArray (MutableByteArray array) (I# i) (F# e) =
prim $ \ s -> case writeFloatArray# array i e s of
s' -> (# s', () #)
writeDoubleArray :: MutableByteArray s -> Int -> Double -> Prim s ()
writeDoubleArray (MutableByteArray array) (I# i) (D# e) =
prim $ \ s -> case writeDoubleArray# array i e s of
s' -> (# s', () #)
writeInt8Array :: MutableByteArray s -> Int -> Int8 -> Prim s ()
writeInt8Array (MutableByteArray array) (I# i) (I8# e) =
prim $ \ s -> case writeInt8Array# array i e s of
s' -> (# s', () #)
writeInt16Array :: MutableByteArray s -> Int -> Int16 -> Prim s ()
writeInt16Array (MutableByteArray array) (I# i) (I16# e) =
prim $ \ s -> case writeInt16Array# array i e s of
s' -> (# s', () #)
writeInt32Array :: MutableByteArray s -> Int -> Int32 -> Prim s ()
writeInt32Array (MutableByteArray array) (I# i) (I32# e) =
prim $ \ s -> case writeInt32Array# array i e s of
s' -> (# s', () #)
writeInt64Array :: MutableByteArray s -> Int -> Int64 -> Prim s ()
writeInt64Array (MutableByteArray array) (I# i) (I64# e) =
prim $ \ s -> case writeInt64Array# array i e s of
s' -> (# s', () #)
writeWord8Array :: MutableByteArray s -> Int -> Word8 -> Prim s ()
writeWord8Array (MutableByteArray array) (I# i) (W8# e) =
prim $ \ s -> case writeWord8Array# array i e s of
s' -> (# s', () #)
writeWord16Array :: MutableByteArray s -> Int -> Word16 -> Prim s ()
writeWord16Array (MutableByteArray array) (I# i) (W16# e) =
prim $ \ s -> case writeWord16Array# array i e s of
s' -> (# s', () #)
writeWord32Array :: MutableByteArray s -> Int -> Word32 -> Prim s ()
writeWord32Array (MutableByteArray array) (I# i) (W32# e) =
prim $ \ s -> case writeWord32Array# array i e s of
s' -> (# s', () #)
writeWord64Array :: MutableByteArray s -> Int -> Word64 -> Prim s ()
writeWord64Array (MutableByteArray array) (I# i) (W64# e) =
prim $ \ s -> case writeWord64Array# array i e s of
s' -> (# s', () #)
writeStablePtrArray :: MutableByteArray s -> Int -> StablePtr a -> Prim s ()
writeStablePtrArray (MutableByteArray array) (I# i) (StablePtr e) =
prim $ \ s -> case writeStablePtrArray# array i e s of
s' -> (# s', () #)
writeFunPtrArray :: MutableByteArray s -> Int -> FunPtr a -> Prim s ()
writeFunPtrArray (MutableByteArray array) (I# i) (FunPtr e) =
prim $ \ s -> case writeAddrArray# array i e s of
s' -> (# s', () #)
writePtrArray :: MutableByteArray s -> Int -> Ptr a -> Prim s ()
writePtrArray (MutableByteArray array) (I# i) (Ptr e) =
prim $ \ s -> case writeAddrArray# array i e s of
s' -> (# s', () #)