GHC.StaticPtr

Copyright (C) 2014 I/O Tweag
License see libraries/base/LICENSE
Maintainer [email protected]
Stability internal
Portability non-portable (GHC Extensions)
Safe Haskell None
Language Haskell2010

Description

Symbolic references to values.

References to values are usually implemented with memory addresses, and this is practical when communicating values between the different pieces of a single process.

When values are communicated across different processes running in possibly different machines, though, addresses are no longer useful since each process may use different addresses to store a given value.

To solve such concern, the references provided by this module offer a key that can be used to locate the values on each process. Each process maintains a global table of references which can be looked up with a given key. This table is known as the Static Pointer Table. The reference can then be dereferenced to obtain the value.

data StaticPtr a Source

A reference to a value of type a.

deRefStaticPtr :: StaticPtr a -> a Source

Dereferences a static pointer.

type StaticKey = Fingerprint Source

A key for StaticPtrs that can be serialized and used with unsafeLookupStaticPtr.

staticKey :: StaticPtr a -> StaticKey Source

The StaticKey that can be used to look up the given StaticPtr.

unsafeLookupStaticPtr :: StaticKey -> IO (Maybe (StaticPtr a)) Source

Looks up a StaticPtr by its StaticKey.

If the StaticPtr is not found returns Nothing.

This function is unsafe because the program behavior is undefined if the type of the returned StaticPtr does not match the expected one.

data StaticPtrInfo Source

Miscelaneous information available for debugging purposes.

Constructors

StaticPtrInfo

Fields

spInfoPackageKey :: String

Package key of the package where the static pointer is defined

spInfoModuleName :: String

Name of the module where the static pointer is defined

spInfoName :: String

An internal name that is distinct for every static pointer defined in a given module.

spInfoSrcLoc :: (Int, Int)

Source location of the definition of the static pointer as a (Line, Column) pair.

Instances

staticPtrInfo :: StaticPtr a -> StaticPtrInfo Source

StaticPtrInfo of the given StaticPtr.

staticPtrKeys :: IO [StaticKey] Source

A list of all known keys.

© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/7.10.3/docs/html/libraries/base-4.8.2.0/GHC-StaticPtr.html