[project @ 1999-01-25 14:02:03 by sof]
authorsof <unknown>
Mon, 25 Jan 1999 14:02:03 +0000 (14:02 +0000)
committersof <unknown>
Mon, 25 Jan 1999 14:02:03 +0000 (14:02 +0000)
Added indexStablePtrArray (moved over from MutableArray)

ghc/lib/exts/ByteArray.lhs

index 6fba8e1..504b2eb 100644 (file)
@@ -13,16 +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
-        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
-
+        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
 \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}