| Safe Haskell | Safe-Inferred |
|---|---|
| Language | Haskell2010 |
GHCi.RemoteTypes
Description
Types for referring to remote objects in Remote GHCi. For more details, see Note [External GHCi pointers] in compilerGHCRuntime/Interpreter.hs
For details on Remote GHCi, see Note [Remote GHCi] in compilerGHCRuntime/Interpreter.hs.
Synopsis
- newtype RemotePtr a = RemotePtr Word64
- toRemotePtr :: Ptr a -> RemotePtr a
- fromRemotePtr :: RemotePtr a -> Ptr a
- castRemotePtr :: RemotePtr a -> RemotePtr b
- newtype HValue = HValue Any
- data RemoteRef a
- mkRemoteRef :: a -> IO (RemoteRef a)
- localRef :: RemoteRef a -> IO a
- freeRemoteRef :: RemoteRef a -> IO ()
- type HValueRef = RemoteRef HValue
- toHValueRef :: RemoteRef a -> RemoteRef HValue
- data ForeignRef a
- mkForeignRef :: RemoteRef a -> IO () -> IO (ForeignRef a)
- withForeignRef :: ForeignRef a -> (RemoteRef a -> IO b) -> IO b
- type ForeignHValue = ForeignRef HValue
- unsafeForeignRefToRemoteRef :: ForeignRef a -> RemoteRef a
- finalizeForeignRef :: ForeignRef a -> IO ()
Documentation
toRemotePtr :: Ptr a -> RemotePtr a Source #
fromRemotePtr :: RemotePtr a -> Ptr a Source #
castRemotePtr :: RemotePtr a -> RemotePtr b Source #
A reference to a remote value. These are allocated and freed explicitly.
mkRemoteRef :: a -> IO (RemoteRef a) Source #
Make a reference to a local value that we can send remotely.
This reference will keep the value that it refers to alive until
freeRemoteRef is called.
localRef :: RemoteRef a -> IO a Source #
Convert an HValueRef to an HValue. Should only be used if the HValue originated in this process.
freeRemoteRef :: RemoteRef a -> IO () Source #
Release an HValueRef that originated in this process
data ForeignRef a Source #
An HValueRef with a finalizer
Instances
| NFData (ForeignRef a) Source # | |
Defined in GHCi.RemoteTypes Methods rnf :: ForeignRef a -> () # | |
mkForeignRef :: RemoteRef a -> IO () -> IO (ForeignRef a) Source #
Create a ForeignRef from a RemoteRef. The finalizer
should arrange to call freeHValueRef on the HValueRef. (since
this function needs to be called in the process that created the
HValueRef, it cannot be called directly from the finalizer).
withForeignRef :: ForeignRef a -> (RemoteRef a -> IO b) -> IO b Source #
Use a ForeignHValue
type ForeignHValue = ForeignRef HValue Source #
unsafeForeignRefToRemoteRef :: ForeignRef a -> RemoteRef a Source #
finalizeForeignRef :: ForeignRef a -> IO () Source #