|
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.QSemN.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.QSemN" with types
|
|
Packit |
1d883e |
generalised from 'IO' to all monads in 'MonadBase'.
|
|
Packit |
1d883e |
-}
|
|
Packit |
1d883e |
|
|
Packit |
1d883e |
module Control.Concurrent.QSemN.Lifted
|
|
Packit |
1d883e |
( QSemN
|
|
Packit |
1d883e |
, newQSemN
|
|
Packit |
1d883e |
, waitQSemN
|
|
Packit |
1d883e |
, signalQSemN
|
|
Packit |
1d883e |
) where
|
|
Packit |
1d883e |
|
|
Packit |
1d883e |
--------------------------------------------------------------------------------
|
|
Packit |
1d883e |
-- Imports
|
|
Packit |
1d883e |
--------------------------------------------------------------------------------
|
|
Packit |
1d883e |
|
|
Packit |
1d883e |
-- from base:
|
|
Packit |
1d883e |
import Control.Concurrent.QSemN ( QSemN )
|
|
Packit |
1d883e |
import qualified Control.Concurrent.QSemN as QSemN
|
|
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 |
-- * QSemNs
|
|
Packit |
1d883e |
--------------------------------------------------------------------------------
|
|
Packit |
1d883e |
|
|
Packit |
1d883e |
-- | Generalized version of 'QSemN.newQSemN'.
|
|
Packit |
1d883e |
newQSemN :: MonadBase IO m => Int -> m QSemN
|
|
Packit |
1d883e |
newQSemN = liftBase . QSemN.newQSemN
|
|
Packit |
1d883e |
{-# INLINABLE newQSemN #-}
|
|
Packit |
1d883e |
|
|
Packit |
1d883e |
-- | Generalized version of 'QSemN.waitQSemN'.
|
|
Packit |
1d883e |
waitQSemN :: MonadBase IO m => QSemN -> Int -> m ()
|
|
Packit |
1d883e |
waitQSemN sem = liftBase . QSemN.waitQSemN sem
|
|
Packit |
1d883e |
{-# INLINABLE waitQSemN #-}
|
|
Packit |
1d883e |
|
|
Packit |
1d883e |
-- | Generalized version of 'QSemN.signalQSemN'.
|
|
Packit |
1d883e |
signalQSemN :: MonadBase IO m => QSemN -> Int -> m ()
|
|
Packit |
1d883e |
signalQSemN sem = liftBase . QSemN.signalQSemN sem
|
|
Packit |
1d883e |
{-# INLINABLE signalQSemN #-}
|