Blame Control/Concurrent/QSem/Lifted.hs

Packit 1d883e
{-# OPTIONS_GHC -fno-warn-deprecations #-}
Packit 1d883e
{-# LANGUAGE CPP #-}
Packit 1d883e
{-# LANGUAGE NoImplicitPrelude #-}
Packit 1d883e
{-# LANGUAGE FlexibleContexts #-}
Packit 1d883e
Packit 1d883e
#if __GLASGOW_HASKELL__ >= 702
Packit 1d883e
{-# LANGUAGE Safe #-}
Packit 1d883e
#endif
Packit 1d883e
Packit 1d883e
{- |
Packit 1d883e
Module      :  Control.Concurrent.QSem.Lifted
Packit 1d883e
Copyright   :  Liyang HU, Bas van Dijk
Packit 1d883e
License     :  BSD-style
Packit 1d883e
Packit 1d883e
Maintainer  :  Bas van Dijk <v.dijk.bas@gmail.com>
Packit 1d883e
Stability   :  experimental
Packit 1d883e
Packit 1d883e
This is a wrapped version of "Control.Concurrent.QSem" with types
Packit 1d883e
generalised from 'IO' to all monads in 'MonadBase'.
Packit 1d883e
-}
Packit 1d883e
Packit 1d883e
module Control.Concurrent.QSem.Lifted
Packit 1d883e
    ( QSem
Packit 1d883e
    , newQSem
Packit 1d883e
    , waitQSem
Packit 1d883e
    , signalQSem
Packit 1d883e
    ) where
Packit 1d883e
Packit 1d883e
--------------------------------------------------------------------------------
Packit 1d883e
-- Imports
Packit 1d883e
--------------------------------------------------------------------------------
Packit 1d883e
Packit 1d883e
-- from base:
Packit 1d883e
import Control.Concurrent.QSem ( QSem )
Packit 1d883e
import qualified Control.Concurrent.QSem as QSem
Packit 1d883e
import Data.Int ( Int )
Packit 1d883e
import System.IO ( IO )
Packit 1d883e
import Prelude ( (.) )
Packit 1d883e
Packit 1d883e
-- from transformers-base:
Packit 1d883e
import Control.Monad.Base ( MonadBase, liftBase )
Packit 1d883e
Packit 1d883e
#include "inlinable.h"
Packit 1d883e
Packit 1d883e
--------------------------------------------------------------------------------
Packit 1d883e
-- * QSems
Packit 1d883e
--------------------------------------------------------------------------------
Packit 1d883e
Packit 1d883e
-- | Generalized version of 'QSem.newQSem'.
Packit 1d883e
newQSem :: MonadBase IO m => Int -> m QSem
Packit 1d883e
newQSem = liftBase . QSem.newQSem
Packit 1d883e
{-# INLINABLE newQSem #-}
Packit 1d883e
Packit 1d883e
-- | Generalized version of 'QSem.waitQSem'.
Packit 1d883e
waitQSem :: MonadBase IO m => QSem -> m ()
Packit 1d883e
waitQSem = liftBase . QSem.waitQSem
Packit 1d883e
{-# INLINABLE waitQSem #-}
Packit 1d883e
Packit 1d883e
-- | Generalized version of 'QSem.signalQSem'.
Packit 1d883e
signalQSem :: MonadBase IO m => QSem -> m ()
Packit 1d883e
signalQSem = liftBase . QSem.signalQSem
Packit 1d883e
{-# INLINABLE signalQSem #-}