Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Store a stable pointer in a foreign context to be retrieved later. Persists through GHCi reloads. Not thread-safe.
Synopsis
- writeStore :: Store a -> a -> IO ()
- newStore :: a -> IO (Store a)
- lookupStore :: Word32 -> IO (Maybe (Store a))
- readStore :: Store a -> IO a
- deleteStore :: Store a -> IO ()
- storeAction :: Store a -> IO a -> IO a
- withStore :: Store a -> (a -> IO b) -> IO b
- newtype Store a = Store Word32
- data StoreException = StoreNotFound
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.
Not thread-safe.
readStore :: Store a -> IO a Source #
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. But remember that store numbers are re-used.
Not thread-safe.
withStore :: Store a -> (a -> IO b) -> IO b Source #
Run the action with the value in the store.
Not thread-safe.
A hideously unsafe store. Only for use if you are suave.
data StoreException Source #
An exception when working with stores.
Instances
Exception StoreException Source # | |
Defined in Foreign.Store | |
Show StoreException Source # | |
Defined in Foreign.Store showsPrec :: Int -> StoreException -> ShowS # show :: StoreException -> String # showList :: [StoreException] -> ShowS # | |
Eq StoreException Source # | |
Defined in Foreign.Store (==) :: StoreException -> StoreException -> Bool # (/=) :: StoreException -> StoreException -> Bool # |