ajhc-0.8.0.1: lib/haskell-extras/Data/Array/IO.hs
{-# OPTIONS_JHC -fno-prelude -funboxed-tuples -fffi #-}
module Data.Array.IO where
import Jhc.Prim.Array
import Data.Ix
import Jhc.IO
import Jhc.Int
data IOArray a b = IOA !a !a (MutArray_ b)
newIOArray :: Ix a => (a,a) -> b -> IO (IOArray a b)
newIOArray rng fill = fromUIO (newIOArray_ rng fill)
newIOArray_ :: Ix a => (a,a) -> b -> World__ -> (# World__, IOArray a b #)
newIOArray_ rng@(l,h) fill w1 =
case unboxInt (rangeSize rng) of
size__ -> case newArray__ size__ fill w1 of
(# w2, arr #) -> (# w2, IOA l h arr #)
boundsIOArray :: Ix a => IOArray a b -> IO (a,a)
boundsIOArray (IOA l h _) = returnIO (l,h)
readIOArray :: Ix a => IOArray a b -> a -> IO b
readIOArray (IOA l h arr) i =
case unboxInt (index (l,h) i) of
i' -> fromUIO (readArray__ arr i')
writeIOArray :: Ix a => IOArray a b -> a -> b -> IO ()
writeIOArray (IOA l h arr) i x =
case unboxInt (index (l,h) i) of
i' -> fromUIO (\w1 -> case writeArray__ arr i' x w1 of
w2 -> (# w2, () #))
unsafeReadIOArray :: Ix a => IOArray a b -> Int -> IO b
unsafeReadIOArray (IOA l h arr) i = case unboxInt i of i' -> fromUIO (readArray__ arr i')
unsafeWriteIOArray :: Ix a => IOArray a b -> Int -> b -> IO ()
unsafeWriteIOArray (IOA l h arr) i x =
case unboxInt i of i' -> fromUIO (\w1 -> case writeArray__ arr i' x w1 of
w2 -> (# w2, () #))
{-
freezeIOArray :: Ix a => IOArray a b -> IO (Array a b)
thawIOArray :: Ix a => Array a b -> IO (IOArray a b)
unsafeFreezeIOArray :: Ix a => IOArray a b -> IO (Array a b)
unsafeFreezeIOArray (IOA l h arr) =
IO (\w1 -> unsafeFreezeArray__ )
-}