Foreign.StablePtr

| Haskell Core Libraries (base package) | Parent | Contents | Index
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