{-# LANGUAGE FlexibleInstances,
UndecidableInstances,
ScopedTypeVariables,
MultiParamTypeClasses
#-}
-- | Default aspect semantics, aspects are deployed and undeployed at the top level.
module AOP.Default (module X) where
import AOP.Internal.JoinpointModel as X
import AOP.Internal.AOPMonad as X
import AOP.Internal.OpenApp as X
import AOP.Internal.PointcutLanguage as X
import AOP.Internal.AOT as X
-- | Default aspect semantics, aspects are deployed and undeployed at the top level.
instance (Typeable1Monad m, Typeable1Monad (t m)) => MonadDeploy t m where
deployInEnv asp aenv = return (EAspect asp:aenv)
undeployInEnv asp@(Aspect (pc::PC (t m) a b) adv hnd) aenv = return (deleteAsp (EAspect asp) aenv)