{-# OPTIONS_GHC -fno-warn-deprecations #-}
{-# LANGUAGE CPP #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE FlexibleContexts #-}
#if __GLASGOW_HASKELL__ >= 702
{-# LANGUAGE Trustworthy #-}
#endif
module Control.Concurrent.QSemN.Lifted
( QSemN
, newQSemN
, waitQSemN
, signalQSemN
) where
import Control.Concurrent.QSemN ( QSemN )
import qualified Control.Concurrent.QSemN as QSemN
import Data.Int ( Int )
import System.IO ( IO )
import Prelude ( (.) )
import Control.Monad.Base ( MonadBase, liftBase )
#include "inlinable.h"
newQSemN :: MonadBase IO m => Int -> m QSemN
newQSemN = liftBase . QSemN.newQSemN
waitQSemN :: MonadBase IO m => QSemN -> Int -> m ()
waitQSemN sem = liftBase . QSemN.waitQSemN sem
signalQSemN :: MonadBase IO m => QSemN -> Int -> m ()
signalQSemN sem = liftBase . QSemN.signalQSemN sem