lio-0.11.6.0: LIO/Concurrent/LMVar/Trans.hs
{-# LANGUAGE Safe #-}
{- | 'MonadLIO' generalizations for "LIO.Concurrent.LMVar". -}
module LIO.Concurrent.LMVar.Trans
( newEmptyLMVar
, newEmptyLMVarP
, newLMVar
, newLMVarP
, takeLMVar
, takeLMVarP
, tryTakeLMVar
, tryTakeLMVarP
, putLMVar
, putLMVarP
, tryPutLMVar
, tryPutLMVarP
, readLMVar
, readLMVarP
, swapLMVar
, swapLMVarP
, isEmptyLMVar
, isEmptyLMVarP
) where
import safe LIO.Core
import safe LIO.Label
import safe qualified LIO.Concurrent.LMVar as M
-- | See 'LIO.Concurrent.LMVar.newEmptyLMVar'.
newEmptyLMVar :: (MonadLIO l m, Label l) => l -> m (M.LMVar l a)
newEmptyLMVar = liftLIO . M.newEmptyLMVar
-- | See 'LIO.Concurrent.LMVar.newEmptyLMVarP'.
newEmptyLMVarP :: (MonadLIO l m, PrivDesc l p) => Priv p -> l -> m (M.LMVar l a)
newEmptyLMVarP p = liftLIO . M.newEmptyLMVarP p
-- | See 'LIO.Concurrent.LMVar.newLMVar'.
newLMVar :: (MonadLIO l m, Label l) => l -> a -> m (M.LMVar l a)
newLMVar l = liftLIO . M.newLMVar l
-- | See 'LIO.Concurrent.LMVar.newLMVarP'.
newLMVarP :: (MonadLIO l m, PrivDesc l p) => Priv p -> l -> a -> m (M.LMVar l a)
newLMVarP p l = liftLIO . M.newLMVarP p l
-- | See 'LIO.Concurrent.LMVar.takeLMVar'.
takeLMVar :: (MonadLIO l m, Label l) => M.LMVar l a -> m a
takeLMVar = liftLIO . M.takeLMVar
-- | See 'LIO.Concurrent.LMVar.takeLMVarP'.
takeLMVarP :: (MonadLIO l m, PrivDesc l p) => Priv p -> M.LMVar l a -> m a
takeLMVarP p = liftLIO . M.takeLMVarP p
-- | See 'LIO.Concurrent.LMVar.tryTakeLMVar'.
tryTakeLMVar :: (MonadLIO l m, Label l) => M.LMVar l a -> m (Maybe a)
tryTakeLMVar = liftLIO . M.tryTakeLMVar
-- | See 'LIO.Concurrent.LMVar.tryTakeLMVarP'.
tryTakeLMVarP :: (MonadLIO l m, PrivDesc l p) => Priv p -> M.LMVar l a -> m (Maybe a)
tryTakeLMVarP p = liftLIO . M.tryTakeLMVarP p
-- | See 'LIO.Concurrent.LMVar.putLMVar'.
putLMVar :: (MonadLIO l m, Label l) => M.LMVar l a -> a -> m ()
putLMVar mvar = liftLIO . M.putLMVar mvar
-- | See 'LIO.Concurrent.LMVar.putLMVarP'.
putLMVarP :: (MonadLIO l m, PrivDesc l p) => Priv p -> M.LMVar l a -> a -> m ()
putLMVarP p mvar = liftLIO . M.putLMVarP p mvar
-- | See 'LIO.Concurrent.LMVar.tryPutLMVar'.
tryPutLMVar :: (MonadLIO l m, Label l) => M.LMVar l a -> a -> m Bool
tryPutLMVar mvar = liftLIO . M.tryPutLMVar mvar
-- | See 'LIO.Concurrent.LMVar.tryPutLMVarP'.
tryPutLMVarP :: (MonadLIO l m, PrivDesc l p) => Priv p -> M.LMVar l a -> a -> m Bool
tryPutLMVarP p mvar = liftLIO . M.tryPutLMVarP p mvar
-- | See 'LIO.Concurrent.LMVar.readLMVar'.
readLMVar :: (MonadLIO l m, Label l) => M.LMVar l a -> m a
readLMVar = liftLIO . M.readLMVar
-- | See 'LIO.Concurrent.LMVar.readLMVarP'.
readLMVarP :: (MonadLIO l m, PrivDesc l p) => Priv p -> M.LMVar l a -> m a
readLMVarP p = liftLIO . M.readLMVarP p
-- | See 'LIO.Concurrent.LMVar.swapLMVar'.
swapLMVar :: (MonadLIO l m, Label l) => M.LMVar l a -> a -> m a
swapLMVar mvar = liftLIO . M.swapLMVar mvar
-- | See 'LIO.Concurrent.LMVar.swapLMVarP'.
swapLMVarP :: (MonadLIO l m, PrivDesc l p) => Priv p -> M.LMVar l a -> a -> m a
swapLMVarP p mvar = liftLIO . M.swapLMVarP p mvar
-- | See 'LIO.Concurrent.LMVar.isEmptyLMVar'.
isEmptyLMVar :: (MonadLIO l m, Label l) => M.LMVar l a -> m Bool
isEmptyLMVar = liftLIO . M.isEmptyLMVar
-- | See 'LIO.Concurrent.LMVar.isEmptyLMVarP'.
isEmptyLMVarP :: (MonadLIO l m, PrivDesc l p) => Priv p -> M.LMVar l a -> m Bool
isEmptyLMVarP p = liftLIO . M.isEmptyLMVarP p