module Data.Registry (
module Data.Registry.Class,
Registry(..),
fromList,
new,
) where
import Control.Monad.IO.Class
import qualified Data.Text as T
import Data.Registry.Class
import Data.Registry.HashTable
data Registry v = forall reg. IRegistry reg => Registry (reg v)
instance IRegistry Registry where
(!?) (Registry reg) t = (!?) reg t
asVec (Registry reg) = asVec reg
write (Registry reg) k v = write reg k v
register (Registry reg) k v = register reg k v
insert (Registry reg) i k v = insert reg i k v
delete (Registry reg) k = delete reg k
fromList :: MonadIO m => [(T.Text, v)] -> m (Registry v)
fromList xs = fmap Registry $ fromListImpl xs
new :: MonadIO m => m (Registry v)
new = fromList []