{-# LANGUAGE GeneralizedNewtypeDeriving #-} module Sound.ALSA.Sequencer.Client.InfoMonad ( T, run, get, modify, getClient, getType, getName, getBroadcastFilter, getErrorBounce, getNumPorts, getEventLost, setClient, setName, setBroadcastFilter, setErrorBounce, ) where import qualified Sound.ALSA.Sequencer.Marshal.ClientInfo as ClientInfo import qualified Sound.ALSA.Sequencer.Marshal.Client as Client import qualified Sound.ALSA.Sequencer.Marshal.Sequencer as Seq import qualified Control.Monad.Trans.Reader as MR import Control.Applicative (Applicative, ) import Data.Word (Word, ) newtype T a = Cons (MR.ReaderT ClientInfo.T IO a) deriving (forall a b. a -> T b -> T a forall a b. (a -> b) -> T a -> T b forall (f :: * -> *). (forall a b. (a -> b) -> f a -> f b) -> (forall a b. a -> f b -> f a) -> Functor f <$ :: forall a b. a -> T b -> T a $c<$ :: forall a b. a -> T b -> T a fmap :: forall a b. (a -> b) -> T a -> T b $cfmap :: forall a b. (a -> b) -> T a -> T b Functor, Functor T forall a. a -> T a forall a b. T a -> T b -> T a forall a b. T a -> T b -> T b forall a b. T (a -> b) -> T a -> T b forall a b c. (a -> b -> c) -> T a -> T b -> T c forall (f :: * -> *). Functor f -> (forall a. a -> f a) -> (forall a b. f (a -> b) -> f a -> f b) -> (forall a b c. (a -> b -> c) -> f a -> f b -> f c) -> (forall a b. f a -> f b -> f b) -> (forall a b. f a -> f b -> f a) -> Applicative f <* :: forall a b. T a -> T b -> T a $c<* :: forall a b. T a -> T b -> T a *> :: forall a b. T a -> T b -> T b $c*> :: forall a b. T a -> T b -> T b liftA2 :: forall a b c. (a -> b -> c) -> T a -> T b -> T c $cliftA2 :: forall a b c. (a -> b -> c) -> T a -> T b -> T c <*> :: forall a b. T (a -> b) -> T a -> T b $c<*> :: forall a b. T (a -> b) -> T a -> T b pure :: forall a. a -> T a $cpure :: forall a. a -> T a Applicative, Applicative T forall a. a -> T a forall a b. T a -> T b -> T b forall a b. T a -> (a -> T b) -> T b forall (m :: * -> *). Applicative m -> (forall a b. m a -> (a -> m b) -> m b) -> (forall a b. m a -> m b -> m b) -> (forall a. a -> m a) -> Monad m return :: forall a. a -> T a $creturn :: forall a. a -> T a >> :: forall a b. T a -> T b -> T b $c>> :: forall a b. T a -> T b -> T b >>= :: forall a b. T a -> (a -> T b) -> T b $c>>= :: forall a b. T a -> (a -> T b) -> T b Monad) run :: T a -> ClientInfo.T -> IO a run :: forall a. T a -> T -> IO a run (Cons ReaderT T IO a m) = forall r (m :: * -> *) a. ReaderT r m a -> r -> m a MR.runReaderT ReaderT T IO a m get :: Seq.T mode -> T a -> IO a get :: forall mode a. T mode -> T a -> IO a get T mode h T a m = forall a. T a -> T -> IO a run T a m forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b =<< forall mode. T mode -> IO T ClientInfo.get T mode h modify :: Seq.T mode -> T a -> IO a modify :: forall mode a. T mode -> T a -> IO a modify T mode h T a m = do T i <- forall mode. T mode -> IO T ClientInfo.get T mode h a a <- forall a. T a -> T -> IO a run T a m T i forall mode. T mode -> T -> IO () ClientInfo.set T mode h T i forall (m :: * -> *) a. Monad m => a -> m a return a a liftGet :: (ClientInfo.T -> IO a) -> T a liftGet :: forall a. (T -> IO a) -> T a liftGet T -> IO a f = forall a. ReaderT T IO a -> T a Cons forall a b. (a -> b) -> a -> b $ forall r (m :: * -> *) a. (r -> m a) -> ReaderT r m a MR.ReaderT T -> IO a f liftSet :: (ClientInfo.T -> b -> IO a) -> b -> T a liftSet :: forall b a. (T -> b -> IO a) -> b -> T a liftSet T -> b -> IO a f b x = forall a. ReaderT T IO a -> T a Cons forall a b. (a -> b) -> a -> b $ forall r (m :: * -> *) a. (r -> m a) -> ReaderT r m a MR.ReaderT forall a b. (a -> b) -> a -> b $ forall a b c. (a -> b -> c) -> b -> a -> c flip T -> b -> IO a f b x getClient :: T Client.T getType :: T Client.Type getName :: T String getBroadcastFilter :: T Bool getErrorBounce :: T Bool getNumPorts :: T Word getEventLost :: T Word getClient :: T T getClient = forall a. (T -> IO a) -> T a liftGet T -> IO T ClientInfo.getClient getType :: T Type getType = forall a. (T -> IO a) -> T a liftGet T -> IO Type ClientInfo.getType getName :: T String getName = forall a. (T -> IO a) -> T a liftGet T -> IO String ClientInfo.getName getBroadcastFilter :: T Bool getBroadcastFilter = forall a. (T -> IO a) -> T a liftGet T -> IO Bool ClientInfo.getBroadcastFilter getErrorBounce :: T Bool getErrorBounce = forall a. (T -> IO a) -> T a liftGet T -> IO Bool ClientInfo.getErrorBounce getNumPorts :: T Word getNumPorts = forall a. (T -> IO a) -> T a liftGet T -> IO Word ClientInfo.getNumPorts getEventLost :: T Word getEventLost = forall a. (T -> IO a) -> T a liftGet T -> IO Word ClientInfo.getEventLost setClient :: Client.T -> T () setName :: String -> T () setBroadcastFilter :: Bool -> T () setErrorBounce :: Bool -> T () setClient :: T -> T () setClient = forall b a. (T -> b -> IO a) -> b -> T a liftSet T -> T -> IO () ClientInfo.setClient setName :: String -> T () setName = forall b a. (T -> b -> IO a) -> b -> T a liftSet T -> String -> IO () ClientInfo.setName setBroadcastFilter :: Bool -> T () setBroadcastFilter = forall b a. (T -> b -> IO a) -> b -> T a liftSet T -> Bool -> IO () ClientInfo.setBroadcastFilter setErrorBounce :: Bool -> T () setErrorBounce = forall b a. (T -> b -> IO a) -> b -> T a liftSet T -> Bool -> IO () ClientInfo.setErrorBounce