-- | This module contains orphan 'XMLGenT' instances for 'ServerMonad', 'FilterMonad', 'WebMonad', 'HasRqData', and 'Happstack'. It does not export any functions.
{-# LANGUAGE FlexibleInstances, MultiParamTypeClasses, TypeFamilies, UndecidableInstances #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
module Happstack.Server.XMLGenT where

import Control.Applicative         (Alternative(..))
import Control.Monad               (MonadPlus(..))
import Control.Monad.Trans         (MonadIO(..))
import Happstack.Server.SimpleHTTP (ServerMonad(..), FilterMonad(..), WebMonad(..), HasRqData(..), Happstack(..), Response)
import HSP.XMLGenerator            (XMLGenT(..))
import HSP.Monad                   (HSPT(..))

instance (ServerMonad m) => ServerMonad (XMLGenT m) where
    askRq :: XMLGenT m Request
askRq = forall (m :: * -> *) a. m a -> XMLGenT m a
XMLGenT forall (m :: * -> *). ServerMonad m => m Request
askRq
    localRq :: forall a. (Request -> Request) -> XMLGenT m a -> XMLGenT m a
localRq Request -> Request
f (XMLGenT m a
m) = forall (m :: * -> *) a. m a -> XMLGenT m a
XMLGenT (forall (m :: * -> *) a.
ServerMonad m =>
(Request -> Request) -> m a -> m a
localRq Request -> Request
f m a
m)

instance (FilterMonad a m) => FilterMonad a (XMLGenT m) where
    setFilter :: (a -> a) -> XMLGenT m ()
setFilter = forall (m :: * -> *) a. m a -> XMLGenT m a
XMLGenT forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a (m :: * -> *). FilterMonad a m => (a -> a) -> m ()
setFilter
    composeFilter :: (a -> a) -> XMLGenT m ()
composeFilter a -> a
f = forall (m :: * -> *) a. m a -> XMLGenT m a
XMLGenT (forall a (m :: * -> *). FilterMonad a m => (a -> a) -> m ()
composeFilter a -> a
f)
    getFilter :: forall b. XMLGenT m b -> XMLGenT m (b, a -> a)
getFilter (XMLGenT m b
m) = forall (m :: * -> *) a. m a -> XMLGenT m a
XMLGenT (forall a (m :: * -> *) b. FilterMonad a m => m b -> m (b, a -> a)
getFilter m b
m)

instance (WebMonad a m) => WebMonad a (XMLGenT m) where
    finishWith :: forall b. a -> XMLGenT m b
finishWith a
r = forall (m :: * -> *) a. m a -> XMLGenT m a
XMLGenT forall a b. (a -> b) -> a -> b
$ forall a (m :: * -> *) b. WebMonad a m => a -> m b
finishWith a
r

instance (HasRqData m) => (HasRqData (XMLGenT m)) where
    askRqEnv :: XMLGenT m RqEnv
askRqEnv = forall (m :: * -> *) a. m a -> XMLGenT m a
XMLGenT forall (m :: * -> *). HasRqData m => m RqEnv
askRqEnv
    localRqEnv :: forall a. (RqEnv -> RqEnv) -> XMLGenT m a -> XMLGenT m a
localRqEnv RqEnv -> RqEnv
f (XMLGenT m a
m) = forall (m :: * -> *) a. m a -> XMLGenT m a
XMLGenT (forall (m :: * -> *) a.
HasRqData m =>
(RqEnv -> RqEnv) -> m a -> m a
localRqEnv RqEnv -> RqEnv
f m a
m)
    rqDataError :: forall a. Errors String -> XMLGenT m a
rqDataError = forall (m :: * -> *) a. m a -> XMLGenT m a
XMLGenT forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (m :: * -> *) a. HasRqData m => Errors String -> m a
rqDataError

instance (Alternative m, MonadPlus m, Functor m, MonadIO m, ServerMonad m, FilterMonad a m, WebMonad a m, HasRqData m, a ~ Response) => Happstack (XMLGenT m)

instance (ServerMonad m) => ServerMonad (HSPT xml m) where
    askRq :: HSPT xml m Request
askRq              = forall xml (m :: * -> *) a. m a -> HSPT xml m a
HSPT forall (m :: * -> *). ServerMonad m => m Request
askRq
    localRq :: forall a. (Request -> Request) -> HSPT xml m a -> HSPT xml m a
localRq Request -> Request
f (HSPT m a
m) = forall xml (m :: * -> *) a. m a -> HSPT xml m a
HSPT (forall (m :: * -> *) a.
ServerMonad m =>
(Request -> Request) -> m a -> m a
localRq Request -> Request
f m a
m)

instance (FilterMonad a m) => FilterMonad a (HSPT xml m) where
    setFilter :: (a -> a) -> HSPT xml m ()
setFilter          = forall xml (m :: * -> *) a. m a -> HSPT xml m a
HSPT forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a (m :: * -> *). FilterMonad a m => (a -> a) -> m ()
setFilter
    composeFilter :: (a -> a) -> HSPT xml m ()
composeFilter a -> a
f    = forall xml (m :: * -> *) a. m a -> HSPT xml m a
HSPT (forall a (m :: * -> *). FilterMonad a m => (a -> a) -> m ()
composeFilter a -> a
f)
    getFilter :: forall b. HSPT xml m b -> HSPT xml m (b, a -> a)
getFilter (HSPT m b
m) = forall xml (m :: * -> *) a. m a -> HSPT xml m a
HSPT (forall a (m :: * -> *) b. FilterMonad a m => m b -> m (b, a -> a)
getFilter m b
m)

instance (WebMonad a m) => WebMonad a (HSPT xml m) where
    finishWith :: forall b. a -> HSPT xml m b
finishWith a
r       = forall xml (m :: * -> *) a. m a -> HSPT xml m a
HSPT forall a b. (a -> b) -> a -> b
$ forall a (m :: * -> *) b. WebMonad a m => a -> m b
finishWith a
r

instance (HasRqData m) => (HasRqData (HSPT xml m)) where
    askRqEnv :: HSPT xml m RqEnv
askRqEnv              = forall xml (m :: * -> *) a. m a -> HSPT xml m a
HSPT forall (m :: * -> *). HasRqData m => m RqEnv
askRqEnv
    localRqEnv :: forall a. (RqEnv -> RqEnv) -> HSPT xml m a -> HSPT xml m a
localRqEnv RqEnv -> RqEnv
f (HSPT m a
m) = forall xml (m :: * -> *) a. m a -> HSPT xml m a
HSPT (forall (m :: * -> *) a.
HasRqData m =>
(RqEnv -> RqEnv) -> m a -> m a
localRqEnv RqEnv -> RqEnv
f m a
m)
    rqDataError :: forall a. Errors String -> HSPT xml m a
rqDataError           = forall xml (m :: * -> *) a. m a -> HSPT xml m a
HSPT forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (m :: * -> *) a. HasRqData m => Errors String -> m a
rqDataError

instance (Alternative m, MonadPlus m, Functor m, MonadIO m, ServerMonad m, FilterMonad a m, WebMonad a m, HasRqData m, a ~ Response) => Happstack (HSPT xml m)