minilight-0.5.0: A SDL2-based graphics library, batteries-included.
Safe HaskellNone
LanguageHaskell2010

Data.Registry.Class

Synopsis

Documentation

class IRegistry reg where Source #

IRegistry typeclass presents a registry interface. The complexity O(1) in the operations can be "amortized" complexity.

Minimal complete definition

(!?), write, register, insert, delete, asVec

Methods

has :: MonadIO m => reg v -> Text -> m Bool Source #

O(1) Checking if the specified key exists

(!) :: MonadIO m => reg v -> Text -> m v infixl 9 Source #

O(1) Indexing

(!?) :: MonadIO m => reg v -> Text -> m (Maybe v) infixl 9 Source #

O(1) Safe indexing

update :: MonadIO m => reg v -> Text -> (v -> m v) -> m () Source #

O(1) Update, raise an exception if the key does not exist.

write :: MonadIO m => reg v -> Text -> v -> m () Source #

O(1) Write, raise an exception if the key does not exist.

register :: MonadIO m => reg v -> Text -> v -> m () Source #

O(1) Adding a new value to the last position

insert :: MonadIO m => reg v -> Int -> Text -> v -> m () Source #

O(n) Inserting a new value to the specified position (in the underlying vector)

delete :: MonadIO m => reg v -> Text -> m () Source #

O(n) Deleting the specified value (this is a slow operation).

asVec :: reg v -> IOVector v Source #

O(1) Get the underlying vector. Be careful: modifying the vector might cause a problem.

Instances

Instances details
IRegistry Registry Source # 
Instance details

Defined in Data.Registry

Methods

has :: MonadIO m => Registry v -> Text -> m Bool Source #

(!) :: MonadIO m => Registry v -> Text -> m v Source #

(!?) :: MonadIO m => Registry v -> Text -> m (Maybe v) Source #

update :: MonadIO m => Registry v -> Text -> (v -> m v) -> m () Source #

write :: MonadIO m => Registry v -> Text -> v -> m () Source #

register :: MonadIO m => Registry v -> Text -> v -> m () Source #

insert :: MonadIO m => Registry v -> Int -> Text -> v -> m () Source #

delete :: MonadIO m => Registry v -> Text -> m () Source #

asVec :: Registry v -> IOVector v Source #

IRegistry (HashTableImpl Text) Source # 
Instance details

Defined in Data.Registry.HashTable

Methods

has :: MonadIO m => HashTableImpl Text v -> Text -> m Bool Source #

(!) :: MonadIO m => HashTableImpl Text v -> Text -> m v Source #

(!?) :: MonadIO m => HashTableImpl Text v -> Text -> m (Maybe v) Source #

update :: MonadIO m => HashTableImpl Text v -> Text -> (v -> m v) -> m () Source #

write :: MonadIO m => HashTableImpl Text v -> Text -> v -> m () Source #

register :: MonadIO m => HashTableImpl Text v -> Text -> v -> m () Source #

insert :: MonadIO m => HashTableImpl Text v -> Int -> Text -> v -> m () Source #

delete :: MonadIO m => HashTableImpl Text v -> Text -> m () Source #

asVec :: HashTableImpl Text v -> IOVector v Source #

forV_ :: (MonadIO m, IRegistry reg) => reg v -> (v -> m ()) -> m () Source #

For-loop over the registry, ignoring the key order.

iforV_ :: (MonadIO m, IRegistry reg) => reg v -> (Int -> v -> m ()) -> m () Source #

For-loop over the registry with the index, ignoring the key order.

modifyV_ :: (MonadIO m, IRegistry reg) => reg v -> (v -> m v) -> m () Source #

Modifying the item one by one, ignoring the key order.