foreign-store-0.1: Store a stable pointer in a foreign context to be retrieved later. Persists through GHCi reloads.

Safe HaskellSafe-Inferred

Foreign.Store

Contents

Description

Store a stable pointer in a foreign context to be retrieved later. Persists through GHCi reloads. Not thread-safe.

Synopsis

Foreign stores

writeStore :: Store a -> a -> IO ()Source

Write to the store at the given index. If a store doesn't exist, creates one and resizes the store vector to fit. If there is already a store at the given index, deletes that store with deleteStore before replacing it. Not thread-safe.

newStore :: a -> IO (Store a)Source

Allocates or finds an unallocated store. The index is random. The internal vector of stores grows in size. When stores are deleted the vector does not shrink, but old slots are re-used. Not thread-safe.

lookupStore :: Word32 -> IO (Maybe (Store a))Source

Lookup from the store if an index is allocated.

readStore :: Store a -> IO aSource

Read from the store. If the store has been deleted or is unallocated, this will throw an exception. Not thread-safe.

deleteStore :: Store a -> IO ()Source

Frees the stable pointer for GC and frees up the slot in the store. Deleting an already deleted store is a no-op. Not thread-safe.

storeAction :: Store a -> IO a -> IO aSource

Run the action and store the result.

withStore :: Store a -> (a -> IO b) -> IO bSource

Run the action and store the result.

data Store a Source

A hideously unsafe store. Only for use if you are suave.

Constructors

Store Word32 

Instances

Eq (Store a) 
Show (Store a)