Commit 119403dd authored by sof's avatar sof
Browse files

[project @ 1998-10-21 11:40:36 by sof]

Oops, previous commit msg was a bit off; foreignObjToAddr added,
but to this interface (Foreign.) Addr was augmented with
writeForeignObjOffAddr though.
parent bb3f4825
......@@ -7,9 +7,12 @@
\begin{code}
module Foreign
(
ForeignObj -- abstract, instance of: Eq
, makeForeignObj -- :: Addr{-obj-} -> Addr{-finaliser-} -> IO ForeignObj
, writeForeignObj -- :: ForeignObj -> Addr{-new obj-} -> IO ()
ForeignObj -- abstract, instance of: Eq
, makeForeignObj -- :: Addr{-obj-} -> Addr{-finaliser-} -> IO ForeignObj
, writeForeignObj -- :: ForeignObj -> Addr{-new obj-} -> IO ()
, foreignObjToAddr -- :: ForeignObj -> IO Addr
-- the coercion from a foreign obj. to an addr. is unsafe,
-- and should not be used unless absolutely necessary.
, StablePtr {-a-} -- abstract.
, makeStablePtr -- :: a -> IO (StablePtr a)
......@@ -102,6 +105,12 @@ import Int
import PrelIOBase ( IO(..), IOResult(..) )
\end{code}
\begin{code}
foreignObjToAddr :: ForeignObj -> IO Addr
foreignObjToAddr fo = _casm_ `` %r=(StgAddr)%0; '' fo
\end{code}
\begin{code}
indexCharOffForeignObj :: ForeignObj -> Int -> Char
indexCharOffForeignObj (ForeignObj fo#) (I# i#) = C# (indexCharOffForeignObj# fo# i#)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment