From 90cd8bd55573c48a6e28369f48fcc1d94c0eb63b Mon Sep 17 00:00:00 2001
From: sof <unknown>
Date: Mon, 25 Jan 1999 14:02:03 +0000
Subject: [PATCH] [project @ 1999-01-25 14:02:03 by sof] Added
 indexStablePtrArray (moved over from MutableArray)

---
 ghc/lib/exts/ByteArray.lhs | 24 +++++++++++++++++-------
 1 file changed, 17 insertions(+), 7 deletions(-)

diff --git a/ghc/lib/exts/ByteArray.lhs b/ghc/lib/exts/ByteArray.lhs
index 6fba8e150bde..504b2eb2a4bb 100644
--- a/ghc/lib/exts/ByteArray.lhs
+++ b/ghc/lib/exts/ByteArray.lhs
@@ -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}
-- 
GitLab