|
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 #-}
|