[project @ 1999-01-25 14:02:03 by sof]
[ghc-hetmet.git] / ghc / lib / exts / ByteArray.lhs
index d74c728..504b2eb 100644 (file)
@@ -13,28 +13,26 @@ module ByteArray
         Ix,
 
         --Indexing of ordinary @Arrays@ is standard Haskell and isn't defined here.
-        indexCharArray,     --:: Ix ix => ByteArray ix -> ix -> Char 
-        indexIntArray,      --:: Ix ix => ByteArray ix -> ix -> Int
-        indexAddrArray,     --:: Ix ix => ByteArray ix -> ix -> Addr
-        indexFloatArray,    --:: Ix ix => ByteArray ix -> ix -> Float
-        indexDoubleArray,   --:: Ix ix => ByteArray ix -> ix -> Double
-        
-        --Indexing off @Addrs@ is similar, and therefore given here.
-        indexCharOffAddr,   --:: Addr -> Int -> Char
-        indexIntOffAddr,    --:: Addr -> Int -> Int
-        indexAddrOffAddr,   --:: Addr -> Int -> Addr
-        indexFloatOffAddr,  --:: Addr -> Int -> Float
-        indexDoubleOffAddr, --:: Addr -> Int -> Double
-
-        Addr,
-       Word
-
+        indexCharArray,       -- :: Ix ix => ByteArray ix -> ix -> Char 
+        indexIntArray,        -- :: Ix ix => ByteArray ix -> ix -> Int
+        indexWordArray,       -- :: Ix ix => ByteArray ix -> ix -> Word
+        indexAddrArray,       -- :: Ix ix => ByteArray ix -> ix -> Addr
+        indexFloatArray,      -- :: Ix ix => ByteArray ix -> ix -> Float
+        indexDoubleArray,     -- :: Ix ix => ByteArray ix -> ix -> Double
+        indexStablePtrArray   -- :: Ix ix => ByteArray ix -> ix -> (StablePtr a)
        ) where
 
 import PrelArr
+import PrelBase
+import PrelForeign
 import Ix
-import Foreign (Word)
-import Addr
-
 \end{code}
 
+\begin{code}
+indexStablePtrArray    :: Ix ix => ByteArray ix -> ix -> (StablePtr a)
+indexStablePtrArray (ByteArray ixs barr#) n
+  = case (index ixs n)                 of { I# n# ->
+    case indexStablePtrArray# barr# n#         of { r# ->
+    (StablePtr r#)}}
+\end{code}