[project @ 2001-08-04 06:11:24 by ken]
[ghc-hetmet.git] / ghc / lib / std / PrelStable.lhs
index 664ade7..2d6f8ae 100644 (file)
@@ -1,15 +1,17 @@
 % -----------------------------------------------------------------------------
-% $Id: PrelStable.lhs,v 1.1 1999/01/26 12:25:01 simonm Exp $
+% $Id: PrelStable.lhs,v 1.9 2001/03/25 09:57:26 qrczak Exp $
 %
-% (c) The GHC Team, 1992-1999
+% (c) The GHC Team, 1992-2000
 %
 
+\section{Module @PrelStable@}
+
 \begin{code}
 {-# OPTIONS -fno-implicit-prelude #-}
 
 module PrelStable 
        ( StablePtr(..)
-       , makeStablePtr   -- :: a -> IO (StablePtr a)    
+       , newStablePtr    -- :: a -> IO (StablePtr a)    
        , deRefStablePtr  -- :: StablePtr a -> a
        , freeStablePtr   -- :: StablePtr a -> IO ()
    ) where
@@ -20,22 +22,19 @@ import PrelIOBase
 -----------------------------------------------------------------------------
 -- Stable Pointers
 
-data StablePtr  a = StablePtr  (StablePtr#  a)
+data StablePtr a = StablePtr (StablePtr# a)
 
 instance CCallable   (StablePtr a)
-instance CCallable   (StablePtr# a)
 instance CReturnable (StablePtr a)
 
-makeStablePtr  :: a -> IO (StablePtr a)
-deRefStablePtr :: StablePtr a -> IO a
-freeStablePtr  :: StablePtr a -> IO ()
-
-makeStablePtr a = IO $ \ s ->
+newStablePtr   :: a -> IO (StablePtr a)
+newStablePtr a = IO $ \ s ->
     case makeStablePtr# a s of (# s', sp #) -> (# s', StablePtr sp #)
 
+deRefStablePtr :: StablePtr a -> IO a
 deRefStablePtr (StablePtr sp) = IO $ \s -> deRefStablePtr# sp s
 
-freeStablePtr  sp = _ccall_ freeStablePtr sp
+foreign import unsafe freeStablePtr :: StablePtr a -> IO ()
 
 instance Eq (StablePtr a) where 
     (StablePtr sp1) == (StablePtr sp2) =