Haskell Core Libraries (base package)ParentContentsIndex
Foreign.StablePtr
Portability portable
Stability provisional
Maintainer ffi@haskell.org
Description
This module is part of the Foreign Function Interface (FFI) and will usually be imported via the module Foreign.
Synopsis
data StablePtr a
newStablePtr :: a -> IO (StablePtr a)
deRefStablePtr :: StablePtr a -> IO a
freeStablePtr :: StablePtr a -> IO ()
castStablePtrToPtr :: StablePtr a -> Ptr ()
castPtrToStablePtr :: Ptr () -> StablePtr a
Stable references to Haskell values
data StablePtr a
Instances
IArray UArray (StablePtr a)
(Ix ix) => Eq (UArray ix (StablePtr a))
MArray (STUArray s) (StablePtr a) (ST s)
IArray (IOToDiffArray IOUArray) (StablePtr a)
MArray IOUArray (StablePtr a) IO
(Typeable a) => Typeable (StablePtr a)
CCallable (StablePtr a)
CReturnable (StablePtr a)
Eq (StablePtr a)
Storable (StablePtr a)
newStablePtr :: a -> IO (StablePtr a)
deRefStablePtr :: StablePtr a -> IO a
freeStablePtr :: StablePtr a -> IO ()
castStablePtrToPtr :: StablePtr a -> Ptr ()
castPtrToStablePtr :: Ptr () -> StablePtr a
The C-side interface

The following definition is available to C programs inter-operating with Haskell code when including the header HsFFI.h.

 typedef void *HsStablePtr;  

Note that no assumptions may be made about the values representing stable pointers. In fact, they need not even be valid memory addresses. The only guarantee provided is that if they are passed back to Haskell land, the function deRefStablePtr will be able to reconstruct the Haskell value refereed to by the stable pointer.

Produced by Haddock version 0.3