1 % -----------------------------------------------------------------------------
2 % $Id: PrelStable.lhs,v 1.2 1999/09/19 19:12:42 sof Exp $
4 % (c) The GHC Team, 1992-1999
8 {-# OPTIONS -fno-implicit-prelude #-}
12 , makeStablePtr -- :: a -> IO (StablePtr a)
13 , deRefStablePtr -- :: StablePtr a -> a
14 , freeStablePtr -- :: StablePtr a -> IO ()
20 -----------------------------------------------------------------------------
23 data StablePtr a = StablePtr (StablePtr# a)
25 instance CCallable (StablePtr a)
26 instance CCallable (StablePtr# a)
27 instance CReturnable (StablePtr a)
29 makeStablePtr :: a -> IO (StablePtr a)
30 deRefStablePtr :: StablePtr a -> IO a
31 foreign import "freeStablePtr" freeStablePtr :: StablePtr a -> IO ()
33 makeStablePtr a = IO $ \ s ->
34 case makeStablePtr# a s of (# s', sp #) -> (# s', StablePtr sp #)
36 deRefStablePtr (StablePtr sp) = IO $ \s -> deRefStablePtr# sp s
39 instance Eq (StablePtr a) where
40 (StablePtr sp1) == (StablePtr sp2) =
41 case eqStablePtr# sp1 sp2 of