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}