{-# LANGUAGE UnicodeSyntax #-}
{-# LANGUAGE FlexibleContexts #-}
module Control.Concurrent.STM.TBQueue.Lifted
( TBQueue
, newTBQueue
, newTBQueueIO
, readTBQueue
, tryReadTBQueue
, peekTBQueue
, tryPeekTBQueue
, flushTBQueue
, writeTBQueue
, unGetTBQueue
, isEmptyTBQueue
, isFullTBQueue
) where
import Numeric.Natural (Natural)
import Control.Monad.Base (MonadBase(..))
import Control.Monad.STM (STM)
import Control.Concurrent.STM.TBQueue (TBQueue)
import qualified Control.Concurrent.STM.TBQueue as STM
newTBQueue ∷ MonadBase STM μ ⇒ Natural → μ (TBQueue α)
newTBQueue = liftBase . STM.newTBQueue
{-# INLINE newTBQueue #-}
newTBQueueIO ∷ MonadBase IO μ ⇒ Natural → μ (TBQueue α)
newTBQueueIO = liftBase . STM.newTBQueueIO
{-# INLINE newTBQueueIO #-}
readTBQueue ∷ MonadBase STM μ ⇒ TBQueue α → μ α
readTBQueue = liftBase . STM.readTBQueue
{-# INLINE readTBQueue #-}
tryReadTBQueue ∷ MonadBase STM μ ⇒ TBQueue α → μ (Maybe α)
tryReadTBQueue = liftBase . STM.tryReadTBQueue
{-# INLINE tryReadTBQueue #-}
peekTBQueue ∷ MonadBase STM μ ⇒ TBQueue α → μ α
peekTBQueue = liftBase . STM.peekTBQueue
{-# INLINE peekTBQueue #-}
tryPeekTBQueue ∷ MonadBase STM μ ⇒ TBQueue α → μ (Maybe α)
tryPeekTBQueue = liftBase . STM.tryPeekTBQueue
{-# INLINE tryPeekTBQueue #-}
flushTBQueue ∷ MonadBase STM μ ⇒ TBQueue α → μ [α]
flushTBQueue = liftBase . STM.flushTBQueue
{-# INLINE flushTBQueue #-}
writeTBQueue ∷ MonadBase STM μ ⇒ TBQueue α → α → μ ()
writeTBQueue = (liftBase .) . STM.writeTBQueue
{-# INLINE writeTBQueue #-}
unGetTBQueue ∷ MonadBase STM μ ⇒ TBQueue α → α → μ ()
unGetTBQueue = (liftBase .) . STM.unGetTBQueue
{-# INLINE unGetTBQueue #-}
isEmptyTBQueue ∷ MonadBase STM μ ⇒ TBQueue α → μ Bool
isEmptyTBQueue = liftBase . STM.isEmptyTBQueue
{-# INLINE isEmptyTBQueue #-}
isFullTBQueue ∷ MonadBase STM μ ⇒ TBQueue α → μ Bool
isFullTBQueue = liftBase . STM.isFullTBQueue
{-# INLINE isFullTBQueue #-}