A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from http://hackage.haskell.org/packages/archive/base/4.5.0.0/doc/html/src/GHC-Stable.html below:

GHC/Stable.lhs

\begin{code}



















module GHC.Stable (
        StablePtr(..),
        newStablePtr,         
        deRefStablePtr,       
        freeStablePtr,        
        castStablePtrToPtr,   
        castPtrToStablePtr    
    ) where

import GHC.Ptr
import GHC.Base





data StablePtr a = StablePtr (StablePtr# a)




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











foreign import ccall unsafe "hs_free_stable_ptr" freeStablePtr :: StablePtr a -> IO ()









castStablePtrToPtr :: StablePtr a -> Ptr ()
castStablePtrToPtr (StablePtr s) = Ptr (unsafeCoerce# s)












castPtrToStablePtr :: Ptr () -> StablePtr a
castPtrToStablePtr (Ptr a) = StablePtr (unsafeCoerce# a)

instance Eq (StablePtr a) where 
    (StablePtr sp1) == (StablePtr sp2) =
        case eqStablePtr# sp1 sp2 of
           0# -> False
           _  -> True

\end{code}

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4