-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | A single-entity stateful Map in STM, similar to tmapchan
--   
--   Please see the README on Github at
--   <a>https://git.localcooking.com/tooling/tmapmvar#readme</a>
@package tmapmvar
@version 0.0.4

module Control.Concurrent.STM.TMapMVar
putForceTMVar :: TMVar a -> a -> STM ()
newtype TMapMVar k a
TMapMVar :: TVar (Map k (TMVar a)) -> TMapMVar k a
[getTMapMVar] :: TMapMVar k a -> TVar (Map k (TMVar a))
newTMapMVar :: STM (TMapMVar k a)
keys :: TMapMVar k a -> STM [k]
peekElems :: TMapMVar k a -> STM [a]

-- | Blocks if it's full
insert :: (Ord k) => TMapMVar k a -> k -> a -> STM ()

-- | Doesn't Block
insertForce :: (Ord k) => TMapMVar k a -> k -> a -> STM ()

-- | Blocks, and deletes upon looking it up
lookup :: (Ord k) => TMapMVar k a -> k -> STM a
tryLookup :: (Ord k) => TMapMVar k a -> k -> STM (Maybe a)

-- | Blocks, but doesn't delete when looking it up
observe :: (Ord k) => TMapMVar k a -> k -> STM a
tryObserve :: (Ord k) => TMapMVar k a -> k -> STM (Maybe a)
delete :: (Ord k) => TMapMVar k a -> k -> STM ()
getTMVar :: (Ord k) => TMapMVar k a -> k -> STM (TMVar a)

module Control.Concurrent.STM.TMapMVar.Hash
putForceTMVar :: TMVar a -> a -> STM ()
newtype TMapMVar k a
TMapMVar :: TVar (HashMap k (TMVar a)) -> TMapMVar k a
[getTMapMVar] :: TMapMVar k a -> TVar (HashMap k (TMVar a))
newTMapMVar :: STM (TMapMVar k a)
keys :: TMapMVar k a -> STM [k]
peekElems :: TMapMVar k a -> STM [a]

-- | Blocks if it's full
insert :: (Eq k, Hashable k) => TMapMVar k a -> k -> a -> STM ()

-- | Doesn't Block
insertForce :: (Eq k, Hashable k) => TMapMVar k a -> k -> a -> STM ()

-- | Blocks, and deletes upon looking it up
lookup :: (Eq k, Hashable k) => TMapMVar k a -> k -> STM a
tryLookup :: (Eq k, Hashable k) => TMapMVar k a -> k -> STM (Maybe a)

-- | Blocks, but doesn't delete when looking it up
observe :: (Eq k, Hashable k) => TMapMVar k a -> k -> STM a
tryObserve :: (Eq k, Hashable k) => TMapMVar k a -> k -> STM (Maybe a)
delete :: (Eq k, Hashable k) => TMapMVar k a -> k -> STM ()
getTMVar :: (Eq k, Hashable k) => TMapMVar k a -> k -> STM (TMVar a)
