{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE FunctionalDependencies #-}
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE DerivingVia #-}
{-# LANGUAGE FlexibleContexts #-}

-- | MVP renderer for logging statements.

module Drasil.Shared.LanguageRenderer.LoggingFor (LoggingFor(..)) where

import Drasil.Shared.InterfaceCommon
import qualified Drasil.GProc.InterfaceProc as P
import qualified Drasil.GOOL.InterfaceGOOL as G
import Drasil.Shared.State

import Prelude hiding (print, break, pi, log, floor, sin, cos, tan, exp)
import Control.Lens (zoom)
import Data.Kind (Type)
import Control.Monad.State
import Data.Bifunctor (bimap)

newtype LoggingFor (lang :: Type -> Type) a = LC {forall (lang :: * -> *) a. LoggingFor lang a -> lang a
unLC :: lang a}
  deriving newtype ((forall a b. (a -> b) -> LoggingFor lang a -> LoggingFor lang b)
-> (forall a b. a -> LoggingFor lang b -> LoggingFor lang a)
-> Functor (LoggingFor lang)
forall a b. a -> LoggingFor lang b -> LoggingFor lang a
forall a b. (a -> b) -> LoggingFor lang a -> LoggingFor lang b
forall (lang :: * -> *) a b.
Functor lang =>
a -> LoggingFor lang b -> LoggingFor lang a
forall (lang :: * -> *) a b.
Functor lang =>
(a -> b) -> LoggingFor lang a -> LoggingFor lang b
forall (f :: * -> *).
(forall a b. (a -> b) -> f a -> f b)
-> (forall a b. a -> f b -> f a) -> Functor f
$cfmap :: forall (lang :: * -> *) a b.
Functor lang =>
(a -> b) -> LoggingFor lang a -> LoggingFor lang b
fmap :: forall a b. (a -> b) -> LoggingFor lang a -> LoggingFor lang b
$c<$ :: forall (lang :: * -> *) a b.
Functor lang =>
a -> LoggingFor lang b -> LoggingFor lang a
<$ :: forall a b. a -> LoggingFor lang b -> LoggingFor lang a
Functor, Functor (LoggingFor lang)
Functor (LoggingFor lang) =>
(forall a. a -> LoggingFor lang a)
-> (forall a b.
    LoggingFor lang (a -> b) -> LoggingFor lang a -> LoggingFor lang b)
-> (forall a b c.
    (a -> b -> c)
    -> LoggingFor lang a -> LoggingFor lang b -> LoggingFor lang c)
-> (forall a b.
    LoggingFor lang a -> LoggingFor lang b -> LoggingFor lang b)
-> (forall a b.
    LoggingFor lang a -> LoggingFor lang b -> LoggingFor lang a)
-> Applicative (LoggingFor lang)
forall a. a -> LoggingFor lang a
forall a b.
LoggingFor lang a -> LoggingFor lang b -> LoggingFor lang a
forall a b.
LoggingFor lang a -> LoggingFor lang b -> LoggingFor lang b
forall a b.
LoggingFor lang (a -> b) -> LoggingFor lang a -> LoggingFor lang b
forall a b c.
(a -> b -> c)
-> LoggingFor lang a -> LoggingFor lang b -> LoggingFor lang 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 (lang :: * -> *).
Applicative lang =>
Functor (LoggingFor lang)
forall (lang :: * -> *) a.
Applicative lang =>
a -> LoggingFor lang a
forall (lang :: * -> *) a b.
Applicative lang =>
LoggingFor lang a -> LoggingFor lang b -> LoggingFor lang a
forall (lang :: * -> *) a b.
Applicative lang =>
LoggingFor lang a -> LoggingFor lang b -> LoggingFor lang b
forall (lang :: * -> *) a b.
Applicative lang =>
LoggingFor lang (a -> b) -> LoggingFor lang a -> LoggingFor lang b
forall (lang :: * -> *) a b c.
Applicative lang =>
(a -> b -> c)
-> LoggingFor lang a -> LoggingFor lang b -> LoggingFor lang c
$cpure :: forall (lang :: * -> *) a.
Applicative lang =>
a -> LoggingFor lang a
pure :: forall a. a -> LoggingFor lang a
$c<*> :: forall (lang :: * -> *) a b.
Applicative lang =>
LoggingFor lang (a -> b) -> LoggingFor lang a -> LoggingFor lang b
<*> :: forall a b.
LoggingFor lang (a -> b) -> LoggingFor lang a -> LoggingFor lang b
$cliftA2 :: forall (lang :: * -> *) a b c.
Applicative lang =>
(a -> b -> c)
-> LoggingFor lang a -> LoggingFor lang b -> LoggingFor lang c
liftA2 :: forall a b c.
(a -> b -> c)
-> LoggingFor lang a -> LoggingFor lang b -> LoggingFor lang c
$c*> :: forall (lang :: * -> *) a b.
Applicative lang =>
LoggingFor lang a -> LoggingFor lang b -> LoggingFor lang b
*> :: forall a b.
LoggingFor lang a -> LoggingFor lang b -> LoggingFor lang b
$c<* :: forall (lang :: * -> *) a b.
Applicative lang =>
LoggingFor lang a -> LoggingFor lang b -> LoggingFor lang a
<* :: forall a b.
LoggingFor lang a -> LoggingFor lang b -> LoggingFor lang a
Applicative, Applicative (LoggingFor lang)
Applicative (LoggingFor lang) =>
(forall a b.
 LoggingFor lang a -> (a -> LoggingFor lang b) -> LoggingFor lang b)
-> (forall a b.
    LoggingFor lang a -> LoggingFor lang b -> LoggingFor lang b)
-> (forall a. a -> LoggingFor lang a)
-> Monad (LoggingFor lang)
forall a. a -> LoggingFor lang a
forall a b.
LoggingFor lang a -> LoggingFor lang b -> LoggingFor lang b
forall a b.
LoggingFor lang a -> (a -> LoggingFor lang b) -> LoggingFor lang b
forall (lang :: * -> *).
Monad lang =>
Applicative (LoggingFor lang)
forall (lang :: * -> *) a. Monad lang => a -> LoggingFor lang a
forall (lang :: * -> *) a b.
Monad lang =>
LoggingFor lang a -> LoggingFor lang b -> LoggingFor lang b
forall (lang :: * -> *) a b.
Monad lang =>
LoggingFor lang a -> (a -> LoggingFor lang b) -> LoggingFor lang 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
$c>>= :: forall (lang :: * -> *) a b.
Monad lang =>
LoggingFor lang a -> (a -> LoggingFor lang b) -> LoggingFor lang b
>>= :: forall a b.
LoggingFor lang a -> (a -> LoggingFor lang b) -> LoggingFor lang b
$c>> :: forall (lang :: * -> *) a b.
Monad lang =>
LoggingFor lang a -> LoggingFor lang b -> LoggingFor lang b
>> :: forall a b.
LoggingFor lang a -> LoggingFor lang b -> LoggingFor lang b
$creturn :: forall (lang :: * -> *) a. Monad lang => a -> LoggingFor lang a
return :: forall a. a -> LoggingFor lang a
Monad)

class LiftLogging u l | l -> u where
  liftLogging :: u -> l
  lowerLogging :: l -> u

instance (LiftLogging u1 l1, LiftLogging u2 l2) => LiftLogging (u1 -> u2) (l1 -> l2) where
  liftLogging :: (u1 -> u2) -> l1 -> l2
liftLogging u1 -> u2
k = u2 -> l2
forall u l. LiftLogging u l => u -> l
liftLogging (u2 -> l2) -> (l1 -> u2) -> l1 -> l2
forall b c a. (b -> c) -> (a -> b) -> a -> c
. u1 -> u2
k (u1 -> u2) -> (l1 -> u1) -> l1 -> u2
forall b c a. (b -> c) -> (a -> b) -> a -> c
. l1 -> u1
forall u l. LiftLogging u l => l -> u
lowerLogging
  lowerLogging :: (l1 -> l2) -> u1 -> u2
lowerLogging l1 -> l2
k = l2 -> u2
forall u l. LiftLogging u l => l -> u
lowerLogging (l2 -> u2) -> (u1 -> l2) -> u1 -> u2
forall b c a. (b -> c) -> (a -> b) -> a -> c
. l1 -> l2
k (l1 -> l2) -> (u1 -> l1) -> u1 -> l2
forall b c a. (b -> c) -> (a -> b) -> a -> c
. u1 -> l1
forall u l. LiftLogging u l => u -> l
liftLogging

instance LiftLogging (lang a) (LoggingFor lang a) where
  lowerLogging :: LoggingFor lang a -> lang a
lowerLogging = LoggingFor lang a -> lang a
forall (lang :: * -> *) a. LoggingFor lang a -> lang a
unLC
  liftLogging :: lang a -> LoggingFor lang a
liftLogging = lang a -> LoggingFor lang a
forall (lang :: * -> *) a. lang a -> LoggingFor lang a
LC

instance (LiftLogging u l) => LiftLogging (State s u) (State s l) where
  liftLogging :: State s u -> State s l
liftLogging = (u -> l) -> State s u -> State s l
forall a b. (a -> b) -> StateT s Identity a -> StateT s Identity b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap u -> l
forall u l. LiftLogging u l => u -> l
liftLogging
  lowerLogging :: State s l -> State s u
lowerLogging = (l -> u) -> State s l -> State s u
forall a b. (a -> b) -> StateT s Identity a -> StateT s Identity b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap l -> u
forall u l. LiftLogging u l => l -> u
lowerLogging

instance (LiftLogging u l) => LiftLogging (Maybe u) (Maybe l) where
  liftLogging :: Maybe u -> Maybe l
liftLogging = (u -> l) -> Maybe u -> Maybe l
forall a b. (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap u -> l
forall u l. LiftLogging u l => u -> l
liftLogging
  lowerLogging :: Maybe l -> Maybe u
lowerLogging = (l -> u) -> Maybe l -> Maybe u
forall a b. (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap l -> u
forall u l. LiftLogging u l => l -> u
lowerLogging

instance {-# OVERLAPPABLE #-} (LiftLogging u l) => LiftLogging [u] [l] where
  liftLogging :: [u] -> [l]
liftLogging = (u -> l) -> [u] -> [l]
forall a b. (a -> b) -> [a] -> [b]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap u -> l
forall u l. LiftLogging u l => u -> l
liftLogging
  lowerLogging :: [l] -> [u]
lowerLogging = (l -> u) -> [l] -> [u]
forall a b. (a -> b) -> [a] -> [b]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap l -> u
forall u l. LiftLogging u l => l -> u
lowerLogging

instance LiftLogging String String where
  liftLogging :: String -> String
liftLogging = String -> String
forall a. a -> a
id
  lowerLogging :: String -> String
lowerLogging = String -> String
forall a. a -> a
id

instance LiftLogging Integer Integer where
  liftLogging :: Integer -> Integer
liftLogging = Integer -> Integer
forall a. a -> a
id
  lowerLogging :: Integer -> Integer
lowerLogging = Integer -> Integer
forall a. a -> a
id

instance LiftLogging Char Char where
  liftLogging :: Char -> Char
liftLogging = Char -> Char
forall a. a -> a
id
  lowerLogging :: Char -> Char
lowerLogging = Char -> Char
forall a. a -> a
id

instance LiftLogging Double Double where
  liftLogging :: Double -> Double
liftLogging = Double -> Double
forall a. a -> a
id
  lowerLogging :: Double -> Double
lowerLogging = Double -> Double
forall a. a -> a
id

instance LiftLogging Float Float where
  liftLogging :: Float -> Float
liftLogging = Float -> Float
forall a. a -> a
id
  lowerLogging :: Float -> Float
lowerLogging = Float -> Float
forall a. a -> a
id

instance (LiftLogging u1 l1, LiftLogging u2 l2) => LiftLogging (u1, u2) (l1, l2) where
  liftLogging :: (u1, u2) -> (l1, l2)
liftLogging = (u1 -> l1) -> (u2 -> l2) -> (u1, u2) -> (l1, l2)
forall a b c d. (a -> b) -> (c -> d) -> (a, c) -> (b, d)
forall (p :: * -> * -> *) a b c d.
Bifunctor p =>
(a -> b) -> (c -> d) -> p a c -> p b d
bimap u1 -> l1
forall u l. LiftLogging u l => u -> l
liftLogging u2 -> l2
forall u l. LiftLogging u l => u -> l
liftLogging
  lowerLogging :: (l1, l2) -> (u1, u2)
lowerLogging = (l1 -> u1) -> (l2 -> u2) -> (l1, l2) -> (u1, u2)
forall a b c d. (a -> b) -> (c -> d) -> (a, c) -> (b, d)
forall (p :: * -> * -> *) a b c d.
Bifunctor p =>
(a -> b) -> (c -> d) -> p a c -> p b d
bimap l1 -> u1
forall u l. LiftLogging u l => l -> u
lowerLogging l2 -> u2
forall u l. LiftLogging u l => l -> u
lowerLogging

-- TODO [Brandon Bosman, 06/19/2026]: This should be passed down from drasil-code
varLogFile :: (VariableSym r) => SVariable r
varLogFile :: forall (r :: * -> *). VariableSym r => SVariable r
varLogFile = String -> VSType r -> StateT ValueState Identity (r (Variable r))
forall (r :: * -> *).
VariableSym r =>
String -> VSType r -> SVariable r
var String
"outfile" VSType r
forall (r :: * -> *). TypeSym r => VSType r
outfile

valLogFile :: (VariableValue r) => SValue r
valLogFile :: forall (r :: * -> *). VariableValue r => SValue r
valLogFile = SVariable r -> StateT ValueState Identity (r (Value r))
forall (r :: * -> *). VariableValue r => SVariable r -> SValue r
valueOf SVariable r
forall (r :: * -> *). VariableSym r => SVariable r
varLogFile

-- TODO [Brandon Bosman, 06/19/2026]: This should be passed down from drasil-code
logName :: (Literal r) => SValue r
logName :: forall (r :: * -> *). Literal r => SValue r
logName = String -> StateT ValueState Identity (r (Value r))
forall (r :: * -> *). Literal r => String -> SValue r
litString String
"log.txt"

logVarUpdate :: (SharedProg lang) => SVariable (LoggingFor lang) -> [MSStatement lang]
logVarUpdate :: forall (lang :: * -> *).
SharedProg lang =>
SVariable (LoggingFor lang) -> [MSStatement lang]
logVarUpdate SVariable (LoggingFor lang)
x =
  [ VS (lang (Variable lang)) -> SValue lang -> MSStatement lang
forall (r :: * -> *).
IOStatement r =>
SVariable r -> SValue r -> MSStatement r
openFileA VS (lang (Variable lang))
forall (r :: * -> *). VariableSym r => SVariable r
varLogFile SValue lang
forall (r :: * -> *). Literal r => SValue r
logName
  , do
      String
x' <- lang (Variable lang) -> String
forall (r :: * -> *). VariableElim r => r (Variable r) -> String
variableName (lang (Variable lang) -> String)
-> (LoggingFor lang (Variable lang) -> lang (Variable lang))
-> LoggingFor lang (Variable lang)
-> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. LoggingFor lang (Variable lang) -> lang (Variable lang)
forall u l. LiftLogging u l => l -> u
lowerLogging (LoggingFor lang (Variable lang) -> String)
-> StateT MethodState Identity (LoggingFor lang (Variable lang))
-> StateT MethodState Identity String
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> LensLike'
  (Zoomed
     (StateT ValueState Identity) (LoggingFor lang (Variable lang)))
  MethodState
  ValueState
-> VS (LoggingFor lang (Variable lang))
-> StateT MethodState Identity (LoggingFor lang (Variable lang))
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed
     (StateT ValueState Identity) (LoggingFor lang (Variable lang)))
  MethodState
  ValueState
(ValueState
 -> Focusing Identity (LoggingFor lang (Variable lang)) ValueState)
-> MethodState
-> Focusing Identity (LoggingFor lang (Variable lang)) MethodState
Lens' MethodState ValueState
lensMStoVS VS (LoggingFor lang (Variable lang))
SVariable (LoggingFor lang)
x
      SValue lang -> String -> MSStatement lang
forall (r :: * -> *).
IOStatement r =>
SValue r -> String -> MSStatement r
printFileStr SValue lang
forall (r :: * -> *). VariableValue r => SValue r
valLogFile (String -> MSStatement lang) -> String -> MSStatement lang
forall a b. (a -> b) -> a -> b
$ String
"var '" String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
x' String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
"' assigned "
  , SValue lang -> SValue lang -> MSStatement lang
forall (r :: * -> *).
IOStatement r =>
SValue r -> SValue r -> MSStatement r
printFile SValue lang
forall (r :: * -> *). VariableValue r => SValue r
valLogFile (SValue lang -> MSStatement lang)
-> SValue lang -> MSStatement lang
forall a b. (a -> b) -> a -> b
$ VS (lang (Variable lang)) -> SValue lang
forall (r :: * -> *). VariableValue r => SVariable r -> SValue r
valueOf (VS (LoggingFor lang (Variable lang)) -> VS (lang (Variable lang))
forall u l. LiftLogging u l => l -> u
lowerLogging VS (LoggingFor lang (Variable lang))
SVariable (LoggingFor lang)
x)
  , do
      String
modName <- LensLike'
  (Zoomed (StateT FileState Identity) String) MethodState FileState
-> StateT FileState Identity String
-> StateT MethodState Identity String
forall c.
LensLike'
  (Zoomed (StateT FileState Identity) c) MethodState FileState
-> StateT FileState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT FileState Identity) String) MethodState FileState
(FileState -> Focusing Identity String FileState)
-> MethodState -> Focusing Identity String MethodState
Lens' MethodState FileState
lensMStoFS StateT FileState Identity String
getModuleName
      SValue lang -> String -> MSStatement lang
forall (r :: * -> *).
IOStatement r =>
SValue r -> String -> MSStatement r
printFileStrLn SValue lang
forall (r :: * -> *). VariableValue r => SValue r
valLogFile (String -> MSStatement lang) -> String -> MSStatement lang
forall a b. (a -> b) -> a -> b
$ String
" in module " String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
modName
  , SValue lang -> MSStatement lang
forall (r :: * -> *). IOStatement r => SValue r -> MSStatement r
closeFile SValue lang
forall (r :: * -> *). VariableValue r => SValue r
valLogFile
  ]

instance (SharedProg lang) => AssignStatement (LoggingFor lang) where
  &-= :: SVariable (LoggingFor lang)
-> SValue (LoggingFor lang) -> MSStatement (LoggingFor lang)
(&-=) = (VS (lang (Variable lang))
 -> VS (lang (Value lang)) -> MS (lang (Statement lang)))
-> VS (LoggingFor lang (Variable lang))
-> VS (LoggingFor lang (Value lang))
-> MS (LoggingFor lang (Statement lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Variable lang))
-> VS (lang (Value lang)) -> MS (lang (Statement lang))
forall (r :: * -> *).
AssignStatement r =>
SVariable r -> SValue r -> MSStatement r
(&-=)
  &+= :: SVariable (LoggingFor lang)
-> SValue (LoggingFor lang) -> MSStatement (LoggingFor lang)
(&+=) = (VS (lang (Variable lang))
 -> VS (lang (Value lang)) -> MS (lang (Statement lang)))
-> VS (LoggingFor lang (Variable lang))
-> VS (LoggingFor lang (Value lang))
-> MS (LoggingFor lang (Statement lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Variable lang))
-> VS (lang (Value lang)) -> MS (lang (Statement lang))
forall (r :: * -> *).
AssignStatement r =>
SVariable r -> SValue r -> MSStatement r
(&+=)
  &++ :: SVariable (LoggingFor lang) -> MSStatement (LoggingFor lang)
(&++) = (VS (lang (Variable lang)) -> MS (lang (Statement lang)))
-> VS (LoggingFor lang (Variable lang))
-> MS (LoggingFor lang (Statement lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Variable lang)) -> MS (lang (Statement lang))
forall (r :: * -> *).
AssignStatement r =>
SVariable r -> MSStatement r
(&++)
  &-- :: SVariable (LoggingFor lang) -> MSStatement (LoggingFor lang)
(&--) = (VS (lang (Variable lang)) -> MS (lang (Statement lang)))
-> VS (LoggingFor lang (Variable lang))
-> MS (LoggingFor lang (Statement lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Variable lang)) -> MS (lang (Statement lang))
forall (r :: * -> *).
AssignStatement r =>
SVariable r -> MSStatement r
(&--)
  assign :: SVariable (LoggingFor lang)
-> SValue (LoggingFor lang) -> MSStatement (LoggingFor lang)
assign SVariable (LoggingFor lang)
x SValue (LoggingFor lang)
e = MS (lang (Statement lang)) -> MSStatement (LoggingFor lang)
forall u l. LiftLogging u l => u -> l
liftLogging (MS (lang (Statement lang)) -> MSStatement (LoggingFor lang))
-> MS (lang (Statement lang)) -> MSStatement (LoggingFor lang)
forall a b. (a -> b) -> a -> b
$ [MS (lang (Statement lang))] -> MS (lang (Statement lang))
forall (r :: * -> *).
StatementSym r =>
[MSStatement r] -> MSStatement r
multi ([MS (lang (Statement lang))] -> MS (lang (Statement lang)))
-> [MS (lang (Statement lang))] -> MS (lang (Statement lang))
forall a b. (a -> b) -> a -> b
$
    VS (lang (Variable lang))
-> VS (lang (Value lang)) -> MS (lang (Statement lang))
forall (r :: * -> *).
AssignStatement r =>
SVariable r -> SValue r -> MSStatement r
assign (VS (LoggingFor lang (Variable lang)) -> VS (lang (Variable lang))
forall u l. LiftLogging u l => l -> u
lowerLogging VS (LoggingFor lang (Variable lang))
SVariable (LoggingFor lang)
x) (VS (LoggingFor lang (Value lang)) -> VS (lang (Value lang))
forall u l. LiftLogging u l => l -> u
lowerLogging VS (LoggingFor lang (Value lang))
SValue (LoggingFor lang)
e)
    MS (lang (Statement lang))
-> [MS (lang (Statement lang))] -> [MS (lang (Statement lang))]
forall a. a -> [a] -> [a]
: SVariable (LoggingFor lang) -> [MS (lang (Statement lang))]
forall (lang :: * -> *).
SharedProg lang =>
SVariable (LoggingFor lang) -> [MSStatement lang]
logVarUpdate SVariable (LoggingFor lang)
x

instance (List lang) => List (LoggingFor lang) where
  listSize :: SValue (LoggingFor lang) -> SValue (LoggingFor lang)
listSize = (VS (lang (Value lang)) -> VS (lang (Value lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang)) -> VS (lang (Value lang))
forall (r :: * -> *). List r => SValue r -> SValue r
listSize
  listAdd :: SValue (LoggingFor lang)
-> SValue (LoggingFor lang)
-> SValue (LoggingFor lang)
-> MSStatement (LoggingFor lang)
listAdd = (VS (lang (Value lang))
 -> VS (lang (Value lang))
 -> VS (lang (Value lang))
 -> MS (lang (Statement lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
-> MS (LoggingFor lang (Statement lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang))
-> VS (lang (Value lang))
-> VS (lang (Value lang))
-> MS (lang (Statement lang))
forall (r :: * -> *).
List r =>
SValue r -> SValue r -> SValue r -> MSStatement r
listAdd
  listAppend :: SValue (LoggingFor lang)
-> SValue (LoggingFor lang) -> MSStatement (LoggingFor lang)
listAppend = (VS (lang (Value lang))
 -> VS (lang (Value lang)) -> MS (lang (Statement lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
-> MS (LoggingFor lang (Statement lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang))
-> VS (lang (Value lang)) -> MS (lang (Statement lang))
forall (r :: * -> *).
List r =>
SValue r -> SValue r -> MSStatement r
listAppend
  listAccess :: SValue (LoggingFor lang)
-> SValue (LoggingFor lang) -> SValue (LoggingFor lang)
listAccess = (VS (lang (Value lang))
 -> VS (lang (Value lang)) -> VS (lang (Value lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang))
-> VS (lang (Value lang)) -> VS (lang (Value lang))
forall (r :: * -> *). List r => SValue r -> SValue r -> SValue r
listAccess
  listSet :: SValue (LoggingFor lang)
-> SValue (LoggingFor lang)
-> SValue (LoggingFor lang)
-> MSStatement (LoggingFor lang)
listSet = (VS (lang (Value lang))
 -> VS (lang (Value lang))
 -> VS (lang (Value lang))
 -> MS (lang (Statement lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
-> MS (LoggingFor lang (Statement lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang))
-> VS (lang (Value lang))
-> VS (lang (Value lang))
-> MS (lang (Statement lang))
forall (r :: * -> *).
List r =>
SValue r -> SValue r -> SValue r -> MSStatement r
listSet -- TODO [Brandon Bosman, 06/23/2026]: Add logging
                                -- (Can't right now because RC.value isn't exposed)
  indexOf :: SValue (LoggingFor lang)
-> SValue (LoggingFor lang) -> SValue (LoggingFor lang)
indexOf = (VS (lang (Value lang))
 -> VS (lang (Value lang)) -> VS (lang (Value lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang))
-> VS (lang (Value lang)) -> VS (lang (Value lang))
forall (r :: * -> *). List r => SValue r -> SValue r -> SValue r
indexOf

instance (SharedProg lang) => DeclStatement (LoggingFor lang) where
  varDec :: SVariable (LoggingFor lang)
-> LoggingFor lang ScopeData -> MSStatement (LoggingFor lang)
varDec = (VS (lang (Variable lang))
 -> lang ScopeData -> MS (lang (Statement lang)))
-> VS (LoggingFor lang (Variable lang))
-> LoggingFor lang ScopeData
-> MS (LoggingFor lang (Statement lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Variable lang))
-> lang ScopeData -> MS (lang (Statement lang))
forall (r :: * -> *).
DeclStatement r =>
SVariable r -> r ScopeData -> MSStatement r
varDec
  varDecDef :: SVariable (LoggingFor lang)
-> LoggingFor lang ScopeData
-> SValue (LoggingFor lang)
-> MSStatement (LoggingFor lang)
varDecDef SVariable (LoggingFor lang)
vr LoggingFor lang ScopeData
scp SValue (LoggingFor lang)
vl = MS (lang (Statement lang)) -> MSStatement (LoggingFor lang)
forall u l. LiftLogging u l => u -> l
liftLogging (MS (lang (Statement lang)) -> MSStatement (LoggingFor lang))
-> MS (lang (Statement lang)) -> MSStatement (LoggingFor lang)
forall a b. (a -> b) -> a -> b
$ [MS (lang (Statement lang))] -> MS (lang (Statement lang))
forall (r :: * -> *).
StatementSym r =>
[MSStatement r] -> MSStatement r
multi ([MS (lang (Statement lang))] -> MS (lang (Statement lang)))
-> [MS (lang (Statement lang))] -> MS (lang (Statement lang))
forall a b. (a -> b) -> a -> b
$
    VS (lang (Variable lang))
-> lang ScopeData
-> VS (lang (Value lang))
-> MS (lang (Statement lang))
forall (r :: * -> *).
DeclStatement r =>
SVariable r -> r ScopeData -> SValue r -> MSStatement r
varDecDef (VS (LoggingFor lang (Variable lang)) -> VS (lang (Variable lang))
forall u l. LiftLogging u l => l -> u
lowerLogging VS (LoggingFor lang (Variable lang))
SVariable (LoggingFor lang)
vr) (LoggingFor lang ScopeData -> lang ScopeData
forall u l. LiftLogging u l => l -> u
lowerLogging LoggingFor lang ScopeData
scp) (VS (LoggingFor lang (Value lang)) -> VS (lang (Value lang))
forall u l. LiftLogging u l => l -> u
lowerLogging VS (LoggingFor lang (Value lang))
SValue (LoggingFor lang)
vl)
    MS (lang (Statement lang))
-> [MS (lang (Statement lang))] -> [MS (lang (Statement lang))]
forall a. a -> [a] -> [a]
: SVariable (LoggingFor lang) -> [MS (lang (Statement lang))]
forall (lang :: * -> *).
SharedProg lang =>
SVariable (LoggingFor lang) -> [MSStatement lang]
logVarUpdate SVariable (LoggingFor lang)
vr
  listDec :: Integer
-> SVariable (LoggingFor lang)
-> LoggingFor lang ScopeData
-> MSStatement (LoggingFor lang)
listDec = (Integer
 -> VS (lang (Variable lang))
 -> lang ScopeData
 -> MS (lang (Statement lang)))
-> Integer
-> VS (LoggingFor lang (Variable lang))
-> LoggingFor lang ScopeData
-> MS (LoggingFor lang (Statement lang))
forall u l. LiftLogging u l => u -> l
liftLogging Integer
-> VS (lang (Variable lang))
-> lang ScopeData
-> MS (lang (Statement lang))
forall (r :: * -> *).
DeclStatement r =>
Integer -> SVariable r -> r ScopeData -> MSStatement r
listDec
  listDecDef :: SVariable (LoggingFor lang)
-> LoggingFor lang ScopeData
-> [SValue (LoggingFor lang)]
-> MSStatement (LoggingFor lang)
listDecDef SVariable (LoggingFor lang)
vr LoggingFor lang ScopeData
scp [SValue (LoggingFor lang)]
vls = MS (lang (Statement lang)) -> MSStatement (LoggingFor lang)
forall u l. LiftLogging u l => u -> l
liftLogging (MS (lang (Statement lang)) -> MSStatement (LoggingFor lang))
-> MS (lang (Statement lang)) -> MSStatement (LoggingFor lang)
forall a b. (a -> b) -> a -> b
$
    VS (lang (Variable lang))
-> lang ScopeData
-> [VS (lang (Value lang))]
-> MS (lang (Statement lang))
forall (r :: * -> *).
DeclStatement r =>
SVariable r -> r ScopeData -> [SValue r] -> MSStatement r
listDecDef (VS (LoggingFor lang (Variable lang)) -> VS (lang (Variable lang))
forall u l. LiftLogging u l => l -> u
lowerLogging VS (LoggingFor lang (Variable lang))
SVariable (LoggingFor lang)
vr) (LoggingFor lang ScopeData -> lang ScopeData
forall u l. LiftLogging u l => l -> u
lowerLogging LoggingFor lang ScopeData
scp) ([VS (LoggingFor lang (Value lang))] -> [VS (lang (Value lang))]
forall u l. LiftLogging u l => l -> u
lowerLogging [VS (LoggingFor lang (Value lang))]
[SValue (LoggingFor lang)]
vls)
  setDec :: SVariable (LoggingFor lang)
-> LoggingFor lang ScopeData -> MSStatement (LoggingFor lang)
setDec = (VS (lang (Variable lang))
 -> lang ScopeData -> MS (lang (Statement lang)))
-> VS (LoggingFor lang (Variable lang))
-> LoggingFor lang ScopeData
-> MS (LoggingFor lang (Statement lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Variable lang))
-> lang ScopeData -> MS (lang (Statement lang))
forall (r :: * -> *).
DeclStatement r =>
SVariable r -> r ScopeData -> MSStatement r
setDec
  setDecDef :: SVariable (LoggingFor lang)
-> LoggingFor lang ScopeData
-> SValue (LoggingFor lang)
-> MSStatement (LoggingFor lang)
setDecDef SVariable (LoggingFor lang)
vr LoggingFor lang ScopeData
scp SValue (LoggingFor lang)
vl = MS (lang (Statement lang)) -> MSStatement (LoggingFor lang)
forall u l. LiftLogging u l => u -> l
liftLogging (MS (lang (Statement lang)) -> MSStatement (LoggingFor lang))
-> MS (lang (Statement lang)) -> MSStatement (LoggingFor lang)
forall a b. (a -> b) -> a -> b
$
    VS (lang (Variable lang))
-> lang ScopeData
-> VS (lang (Value lang))
-> MS (lang (Statement lang))
forall (r :: * -> *).
DeclStatement r =>
SVariable r -> r ScopeData -> SValue r -> MSStatement r
setDecDef (VS (LoggingFor lang (Variable lang)) -> VS (lang (Variable lang))
forall u l. LiftLogging u l => l -> u
lowerLogging VS (LoggingFor lang (Variable lang))
SVariable (LoggingFor lang)
vr) (LoggingFor lang ScopeData -> lang ScopeData
forall u l. LiftLogging u l => l -> u
lowerLogging LoggingFor lang ScopeData
scp) (VS (LoggingFor lang (Value lang)) -> VS (lang (Value lang))
forall u l. LiftLogging u l => l -> u
lowerLogging VS (LoggingFor lang (Value lang))
SValue (LoggingFor lang)
vl)
  arrayDec :: Integer
-> SVariable (LoggingFor lang)
-> LoggingFor lang ScopeData
-> MSStatement (LoggingFor lang)
arrayDec = (Integer
 -> VS (lang (Variable lang))
 -> lang ScopeData
 -> MS (lang (Statement lang)))
-> Integer
-> VS (LoggingFor lang (Variable lang))
-> LoggingFor lang ScopeData
-> MS (LoggingFor lang (Statement lang))
forall u l. LiftLogging u l => u -> l
liftLogging Integer
-> VS (lang (Variable lang))
-> lang ScopeData
-> MS (lang (Statement lang))
forall (r :: * -> *).
DeclStatement r =>
Integer -> SVariable r -> r ScopeData -> MSStatement r
arrayDec
  arrayDecDef :: SVariable (LoggingFor lang)
-> LoggingFor lang ScopeData
-> [SValue (LoggingFor lang)]
-> MSStatement (LoggingFor lang)
arrayDecDef SVariable (LoggingFor lang)
vr LoggingFor lang ScopeData
scp [SValue (LoggingFor lang)]
vls = MS (lang (Statement lang)) -> MSStatement (LoggingFor lang)
forall u l. LiftLogging u l => u -> l
liftLogging (MS (lang (Statement lang)) -> MSStatement (LoggingFor lang))
-> MS (lang (Statement lang)) -> MSStatement (LoggingFor lang)
forall a b. (a -> b) -> a -> b
$
    VS (lang (Variable lang))
-> lang ScopeData
-> [VS (lang (Value lang))]
-> MS (lang (Statement lang))
forall (r :: * -> *).
DeclStatement r =>
SVariable r -> r ScopeData -> [SValue r] -> MSStatement r
arrayDecDef (VS (LoggingFor lang (Variable lang)) -> VS (lang (Variable lang))
forall u l. LiftLogging u l => l -> u
lowerLogging VS (LoggingFor lang (Variable lang))
SVariable (LoggingFor lang)
vr) (LoggingFor lang ScopeData -> lang ScopeData
forall u l. LiftLogging u l => l -> u
lowerLogging LoggingFor lang ScopeData
scp) ([VS (LoggingFor lang (Value lang))] -> [VS (lang (Value lang))]
forall u l. LiftLogging u l => l -> u
lowerLogging [VS (LoggingFor lang (Value lang))]
[SValue (LoggingFor lang)]
vls)
  constDecDef :: SVariable (LoggingFor lang)
-> LoggingFor lang ScopeData
-> SValue (LoggingFor lang)
-> MSStatement (LoggingFor lang)
constDecDef SVariable (LoggingFor lang)
cnst LoggingFor lang ScopeData
scp SValue (LoggingFor lang)
vl = MS (lang (Statement lang)) -> MSStatement (LoggingFor lang)
forall u l. LiftLogging u l => u -> l
liftLogging (MS (lang (Statement lang)) -> MSStatement (LoggingFor lang))
-> MS (lang (Statement lang)) -> MSStatement (LoggingFor lang)
forall a b. (a -> b) -> a -> b
$ [MS (lang (Statement lang))] -> MS (lang (Statement lang))
forall (r :: * -> *).
StatementSym r =>
[MSStatement r] -> MSStatement r
multi ([MS (lang (Statement lang))] -> MS (lang (Statement lang)))
-> [MS (lang (Statement lang))] -> MS (lang (Statement lang))
forall a b. (a -> b) -> a -> b
$
    VS (lang (Variable lang))
-> lang ScopeData
-> VS (lang (Value lang))
-> MS (lang (Statement lang))
forall (r :: * -> *).
DeclStatement r =>
SVariable r -> r ScopeData -> SValue r -> MSStatement r
constDecDef (VS (LoggingFor lang (Variable lang)) -> VS (lang (Variable lang))
forall u l. LiftLogging u l => l -> u
lowerLogging VS (LoggingFor lang (Variable lang))
SVariable (LoggingFor lang)
cnst) (LoggingFor lang ScopeData -> lang ScopeData
forall u l. LiftLogging u l => l -> u
lowerLogging LoggingFor lang ScopeData
scp) (VS (LoggingFor lang (Value lang)) -> VS (lang (Value lang))
forall u l. LiftLogging u l => l -> u
lowerLogging VS (LoggingFor lang (Value lang))
SValue (LoggingFor lang)
vl)
    MS (lang (Statement lang))
-> [MS (lang (Statement lang))] -> [MS (lang (Statement lang))]
forall a. a -> [a] -> [a]
: SVariable (LoggingFor lang) -> [MS (lang (Statement lang))]
forall (lang :: * -> *).
SharedProg lang =>
SVariable (LoggingFor lang) -> [MSStatement lang]
logVarUpdate SVariable (LoggingFor lang)
cnst
  funcDecDef :: SVariable (LoggingFor lang)
-> LoggingFor lang ScopeData
-> [SVariable (LoggingFor lang)]
-> MSBody (LoggingFor lang)
-> MSStatement (LoggingFor lang)
funcDecDef = (VS (lang (Variable lang))
 -> lang ScopeData
 -> [VS (lang (Variable lang))]
 -> MS (lang (Body lang))
 -> MS (lang (Statement lang)))
-> VS (LoggingFor lang (Variable lang))
-> LoggingFor lang ScopeData
-> [VS (LoggingFor lang (Variable lang))]
-> MS (LoggingFor lang (Body lang))
-> MS (LoggingFor lang (Statement lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Variable lang))
-> lang ScopeData
-> [VS (lang (Variable lang))]
-> MS (lang (Body lang))
-> MS (lang (Statement lang))
forall (r :: * -> *).
DeclStatement r =>
SVariable r
-> r ScopeData -> [SVariable r] -> MSBody r -> MSStatement r
funcDecDef

instance (SharedProg lang) => IOStatement (LoggingFor lang) where
  print :: SValue (LoggingFor lang) -> MSStatement (LoggingFor lang)
print = (VS (lang (Value lang)) -> MS (lang (Statement lang)))
-> VS (LoggingFor lang (Value lang))
-> MS (LoggingFor lang (Statement lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang)) -> MS (lang (Statement lang))
forall (r :: * -> *). IOStatement r => SValue r -> MSStatement r
print
  printLn :: SValue (LoggingFor lang) -> MSStatement (LoggingFor lang)
printLn = (VS (lang (Value lang)) -> MS (lang (Statement lang)))
-> VS (LoggingFor lang (Value lang))
-> MS (LoggingFor lang (Statement lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang)) -> MS (lang (Statement lang))
forall (r :: * -> *). IOStatement r => SValue r -> MSStatement r
printLn
  printStr :: String -> MSStatement (LoggingFor lang)
printStr = (String -> MS (lang (Statement lang)))
-> String -> MS (LoggingFor lang (Statement lang))
forall u l. LiftLogging u l => u -> l
liftLogging String -> MS (lang (Statement lang))
forall (r :: * -> *). IOStatement r => String -> MSStatement r
printStr
  printStrLn :: String -> MSStatement (LoggingFor lang)
printStrLn = (String -> MS (lang (Statement lang)))
-> String -> MS (LoggingFor lang (Statement lang))
forall u l. LiftLogging u l => u -> l
liftLogging String -> MS (lang (Statement lang))
forall (r :: * -> *). IOStatement r => String -> MSStatement r
printStrLn
  printFile :: SValue (LoggingFor lang)
-> SValue (LoggingFor lang) -> MSStatement (LoggingFor lang)
printFile = (VS (lang (Value lang))
 -> VS (lang (Value lang)) -> MS (lang (Statement lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
-> MS (LoggingFor lang (Statement lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang))
-> VS (lang (Value lang)) -> MS (lang (Statement lang))
forall (r :: * -> *).
IOStatement r =>
SValue r -> SValue r -> MSStatement r
printFile
  printFileLn :: SValue (LoggingFor lang)
-> SValue (LoggingFor lang) -> MSStatement (LoggingFor lang)
printFileLn = (VS (lang (Value lang))
 -> VS (lang (Value lang)) -> MS (lang (Statement lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
-> MS (LoggingFor lang (Statement lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang))
-> VS (lang (Value lang)) -> MS (lang (Statement lang))
forall (r :: * -> *).
IOStatement r =>
SValue r -> SValue r -> MSStatement r
printFileLn
  printFileStr :: SValue (LoggingFor lang) -> String -> MSStatement (LoggingFor lang)
printFileStr = (VS (lang (Value lang)) -> String -> MS (lang (Statement lang)))
-> VS (LoggingFor lang (Value lang))
-> String
-> MS (LoggingFor lang (Statement lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang)) -> String -> MS (lang (Statement lang))
forall (r :: * -> *).
IOStatement r =>
SValue r -> String -> MSStatement r
printFileStr
  printFileStrLn :: SValue (LoggingFor lang) -> String -> MSStatement (LoggingFor lang)
printFileStrLn = (VS (lang (Value lang)) -> String -> MS (lang (Statement lang)))
-> VS (LoggingFor lang (Value lang))
-> String
-> MS (LoggingFor lang (Statement lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang)) -> String -> MS (lang (Statement lang))
forall (r :: * -> *).
IOStatement r =>
SValue r -> String -> MSStatement r
printFileStrLn
  getInput :: SVariable (LoggingFor lang) -> MSStatement (LoggingFor lang)
getInput SVariable (LoggingFor lang)
vr = MS (lang (Statement lang)) -> MSStatement (LoggingFor lang)
forall u l. LiftLogging u l => u -> l
liftLogging (MS (lang (Statement lang)) -> MSStatement (LoggingFor lang))
-> MS (lang (Statement lang)) -> MSStatement (LoggingFor lang)
forall a b. (a -> b) -> a -> b
$ [MS (lang (Statement lang))] -> MS (lang (Statement lang))
forall (r :: * -> *).
StatementSym r =>
[MSStatement r] -> MSStatement r
multi ([MS (lang (Statement lang))] -> MS (lang (Statement lang)))
-> [MS (lang (Statement lang))] -> MS (lang (Statement lang))
forall a b. (a -> b) -> a -> b
$
    VS (lang (Variable lang)) -> MS (lang (Statement lang))
forall (r :: * -> *). IOStatement r => SVariable r -> MSStatement r
getInput (VS (LoggingFor lang (Variable lang)) -> VS (lang (Variable lang))
forall u l. LiftLogging u l => l -> u
lowerLogging VS (LoggingFor lang (Variable lang))
SVariable (LoggingFor lang)
vr) MS (lang (Statement lang))
-> [MS (lang (Statement lang))] -> [MS (lang (Statement lang))]
forall a. a -> [a] -> [a]
: SVariable (LoggingFor lang) -> [MS (lang (Statement lang))]
forall (lang :: * -> *).
SharedProg lang =>
SVariable (LoggingFor lang) -> [MSStatement lang]
logVarUpdate SVariable (LoggingFor lang)
vr
  discardInput :: MSStatement (LoggingFor lang)
discardInput = MS (lang (Statement lang)) -> MS (LoggingFor lang (Statement lang))
forall u l. LiftLogging u l => u -> l
liftLogging MS (lang (Statement lang))
forall (r :: * -> *). IOStatement r => MSStatement r
discardInput
  getFileInput :: SValue (LoggingFor lang)
-> SVariable (LoggingFor lang) -> MSStatement (LoggingFor lang)
getFileInput SValue (LoggingFor lang)
file SVariable (LoggingFor lang)
vr = MS (lang (Statement lang)) -> MSStatement (LoggingFor lang)
forall u l. LiftLogging u l => u -> l
liftLogging (MS (lang (Statement lang)) -> MSStatement (LoggingFor lang))
-> MS (lang (Statement lang)) -> MSStatement (LoggingFor lang)
forall a b. (a -> b) -> a -> b
$ [MS (lang (Statement lang))] -> MS (lang (Statement lang))
forall (r :: * -> *).
StatementSym r =>
[MSStatement r] -> MSStatement r
multi ([MS (lang (Statement lang))] -> MS (lang (Statement lang)))
-> [MS (lang (Statement lang))] -> MS (lang (Statement lang))
forall a b. (a -> b) -> a -> b
$
    VS (lang (Value lang))
-> VS (lang (Variable lang)) -> MS (lang (Statement lang))
forall (r :: * -> *).
IOStatement r =>
SValue r -> SVariable r -> MSStatement r
getFileInput (VS (LoggingFor lang (Value lang)) -> VS (lang (Value lang))
forall u l. LiftLogging u l => l -> u
lowerLogging VS (LoggingFor lang (Value lang))
SValue (LoggingFor lang)
file) (VS (LoggingFor lang (Variable lang)) -> VS (lang (Variable lang))
forall u l. LiftLogging u l => l -> u
lowerLogging VS (LoggingFor lang (Variable lang))
SVariable (LoggingFor lang)
vr)
    MS (lang (Statement lang))
-> [MS (lang (Statement lang))] -> [MS (lang (Statement lang))]
forall a. a -> [a] -> [a]
: SVariable (LoggingFor lang) -> [MS (lang (Statement lang))]
forall (lang :: * -> *).
SharedProg lang =>
SVariable (LoggingFor lang) -> [MSStatement lang]
logVarUpdate SVariable (LoggingFor lang)
vr
  discardFileInput :: SValue (LoggingFor lang) -> MSStatement (LoggingFor lang)
discardFileInput = (VS (lang (Value lang)) -> MS (lang (Statement lang)))
-> VS (LoggingFor lang (Value lang))
-> MS (LoggingFor lang (Statement lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang)) -> MS (lang (Statement lang))
forall (r :: * -> *). IOStatement r => SValue r -> MSStatement r
discardFileInput
  openFileR :: SVariable (LoggingFor lang)
-> SValue (LoggingFor lang) -> MSStatement (LoggingFor lang)
openFileR = (VS (lang (Variable lang))
 -> VS (lang (Value lang)) -> MS (lang (Statement lang)))
-> VS (LoggingFor lang (Variable lang))
-> VS (LoggingFor lang (Value lang))
-> MS (LoggingFor lang (Statement lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Variable lang))
-> VS (lang (Value lang)) -> MS (lang (Statement lang))
forall (r :: * -> *).
IOStatement r =>
SVariable r -> SValue r -> MSStatement r
openFileR
  openFileW :: SVariable (LoggingFor lang)
-> SValue (LoggingFor lang) -> MSStatement (LoggingFor lang)
openFileW = (VS (lang (Variable lang))
 -> VS (lang (Value lang)) -> MS (lang (Statement lang)))
-> VS (LoggingFor lang (Variable lang))
-> VS (LoggingFor lang (Value lang))
-> MS (LoggingFor lang (Statement lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Variable lang))
-> VS (lang (Value lang)) -> MS (lang (Statement lang))
forall (r :: * -> *).
IOStatement r =>
SVariable r -> SValue r -> MSStatement r
openFileW
  openFileA :: SVariable (LoggingFor lang)
-> SValue (LoggingFor lang) -> MSStatement (LoggingFor lang)
openFileA = (VS (lang (Variable lang))
 -> VS (lang (Value lang)) -> MS (lang (Statement lang)))
-> VS (LoggingFor lang (Variable lang))
-> VS (LoggingFor lang (Value lang))
-> MS (LoggingFor lang (Statement lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Variable lang))
-> VS (lang (Value lang)) -> MS (lang (Statement lang))
forall (r :: * -> *).
IOStatement r =>
SVariable r -> SValue r -> MSStatement r
openFileA
  closeFile :: SValue (LoggingFor lang) -> MSStatement (LoggingFor lang)
closeFile = (VS (lang (Value lang)) -> MS (lang (Statement lang)))
-> VS (LoggingFor lang (Value lang))
-> MS (LoggingFor lang (Statement lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang)) -> MS (lang (Statement lang))
forall (r :: * -> *). IOStatement r => SValue r -> MSStatement r
closeFile
  getFileInputLine :: SValue (LoggingFor lang)
-> SVariable (LoggingFor lang) -> MSStatement (LoggingFor lang)
getFileInputLine = (VS (lang (Value lang))
 -> VS (lang (Variable lang)) -> MS (lang (Statement lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Variable lang))
-> MS (LoggingFor lang (Statement lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang))
-> VS (lang (Variable lang)) -> MS (lang (Statement lang))
forall (r :: * -> *).
IOStatement r =>
SValue r -> SVariable r -> MSStatement r
getFileInputLine
  discardFileLine :: SValue (LoggingFor lang) -> MSStatement (LoggingFor lang)
discardFileLine = (VS (lang (Value lang)) -> MS (lang (Statement lang)))
-> VS (LoggingFor lang (Value lang))
-> MS (LoggingFor lang (Statement lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang)) -> MS (lang (Statement lang))
forall (r :: * -> *). IOStatement r => SValue r -> MSStatement r
discardFileLine
  getFileInputAll :: SValue (LoggingFor lang)
-> SVariable (LoggingFor lang) -> MSStatement (LoggingFor lang)
getFileInputAll = (VS (lang (Value lang))
 -> VS (lang (Variable lang)) -> MS (lang (Statement lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Variable lang))
-> MS (LoggingFor lang (Statement lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang))
-> VS (lang (Variable lang)) -> MS (lang (Statement lang))
forall (r :: * -> *).
IOStatement r =>
SValue r -> SVariable r -> MSStatement r
getFileInputAll

instance (SharedProg lang) => StringStatement (LoggingFor lang) where
  stringSplit :: Char
-> SVariable (LoggingFor lang)
-> SValue (LoggingFor lang)
-> MSStatement (LoggingFor lang)
stringSplit Char
chr SVariable (LoggingFor lang)
vr SValue (LoggingFor lang)
str  = MS (lang (Statement lang)) -> MSStatement (LoggingFor lang)
forall u l. LiftLogging u l => u -> l
liftLogging (MS (lang (Statement lang)) -> MSStatement (LoggingFor lang))
-> MS (lang (Statement lang)) -> MSStatement (LoggingFor lang)
forall a b. (a -> b) -> a -> b
$
    Char
-> VS (lang (Variable lang))
-> VS (lang (Value lang))
-> MS (lang (Statement lang))
forall (r :: * -> *).
StringStatement r =>
Char -> SVariable r -> SValue r -> MSStatement r
stringSplit (Char -> Char
forall u l. LiftLogging u l => l -> u
lowerLogging Char
chr) (VS (LoggingFor lang (Variable lang)) -> VS (lang (Variable lang))
forall u l. LiftLogging u l => l -> u
lowerLogging VS (LoggingFor lang (Variable lang))
SVariable (LoggingFor lang)
vr) (VS (LoggingFor lang (Value lang)) -> VS (lang (Value lang))
forall u l. LiftLogging u l => l -> u
lowerLogging VS (LoggingFor lang (Value lang))
SValue (LoggingFor lang)
str)
  stringListVals :: [SVariable (LoggingFor lang)]
-> SValue (LoggingFor lang) -> MSStatement (LoggingFor lang)
stringListVals [SVariable (LoggingFor lang)]
vrs SValue (LoggingFor lang)
strs  = MS (lang (Statement lang)) -> MSStatement (LoggingFor lang)
forall u l. LiftLogging u l => u -> l
liftLogging (MS (lang (Statement lang)) -> MSStatement (LoggingFor lang))
-> MS (lang (Statement lang)) -> MSStatement (LoggingFor lang)
forall a b. (a -> b) -> a -> b
$
    [VS (lang (Variable lang))]
-> VS (lang (Value lang)) -> MS (lang (Statement lang))
forall (r :: * -> *).
StringStatement r =>
[SVariable r] -> SValue r -> MSStatement r
stringListVals ([VS (LoggingFor lang (Variable lang))]
-> [VS (lang (Variable lang))]
forall u l. LiftLogging u l => l -> u
lowerLogging [VS (LoggingFor lang (Variable lang))]
[SVariable (LoggingFor lang)]
vrs) (VS (LoggingFor lang (Value lang)) -> VS (lang (Value lang))
forall u l. LiftLogging u l => l -> u
lowerLogging VS (LoggingFor lang (Value lang))
SValue (LoggingFor lang)
strs)
  stringListLists :: [SVariable (LoggingFor lang)]
-> SValue (LoggingFor lang) -> MSStatement (LoggingFor lang)
stringListLists [SVariable (LoggingFor lang)]
vrs SValue (LoggingFor lang)
strs = MS (lang (Statement lang)) -> MSStatement (LoggingFor lang)
forall u l. LiftLogging u l => u -> l
liftLogging (MS (lang (Statement lang)) -> MSStatement (LoggingFor lang))
-> MS (lang (Statement lang)) -> MSStatement (LoggingFor lang)
forall a b. (a -> b) -> a -> b
$ [MS (lang (Statement lang))] -> MS (lang (Statement lang))
forall (r :: * -> *).
StatementSym r =>
[MSStatement r] -> MSStatement r
multi ([MS (lang (Statement lang))] -> MS (lang (Statement lang)))
-> [MS (lang (Statement lang))] -> MS (lang (Statement lang))
forall a b. (a -> b) -> a -> b
$
    [VS (lang (Variable lang))]
-> VS (lang (Value lang)) -> MS (lang (Statement lang))
forall (r :: * -> *).
StringStatement r =>
[SVariable r] -> SValue r -> MSStatement r
stringListLists ([VS (LoggingFor lang (Variable lang))]
-> [VS (lang (Variable lang))]
forall u l. LiftLogging u l => l -> u
lowerLogging [VS (LoggingFor lang (Variable lang))]
[SVariable (LoggingFor lang)]
vrs) (VS (LoggingFor lang (Value lang)) -> VS (lang (Value lang))
forall u l. LiftLogging u l => l -> u
lowerLogging VS (LoggingFor lang (Value lang))
SValue (LoggingFor lang)
strs)
    MS (lang (Statement lang))
-> [MS (lang (Statement lang))] -> [MS (lang (Statement lang))]
forall a. a -> [a] -> [a]
: (VS (LoggingFor lang (Variable lang))
 -> [MS (lang (Statement lang))])
-> [VS (LoggingFor lang (Variable lang))]
-> [MS (lang (Statement lang))]
forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b]
concatMap VS (LoggingFor lang (Variable lang))
-> [MS (lang (Statement lang))]
SVariable (LoggingFor lang) -> [MS (lang (Statement lang))]
forall (lang :: * -> *).
SharedProg lang =>
SVariable (LoggingFor lang) -> [MSStatement lang]
logVarUpdate [VS (LoggingFor lang (Variable lang))]
[SVariable (LoggingFor lang)]
vrs

-- SharedProg Boilerplate

instance (SharedProg lang) => SharedProg (LoggingFor lang)

instance (VariableSym lang) => VariableSym (LoggingFor lang) where
  type Variable (LoggingFor lang) = Variable lang
  var :: String -> VSType (LoggingFor lang) -> SVariable (LoggingFor lang)
var = (String -> VSType lang -> VS (lang (Variable lang)))
-> String
-> VSType (LoggingFor lang)
-> VS (LoggingFor lang (Variable lang))
forall u l. LiftLogging u l => u -> l
liftLogging String -> VSType lang -> VS (lang (Variable lang))
forall (r :: * -> *).
VariableSym r =>
String -> VSType r -> SVariable r
var
  constant :: String -> VSType (LoggingFor lang) -> SVariable (LoggingFor lang)
constant = (String -> VSType lang -> VS (lang (Variable lang)))
-> String
-> VSType (LoggingFor lang)
-> VS (LoggingFor lang (Variable lang))
forall u l. LiftLogging u l => u -> l
liftLogging String -> VSType lang -> VS (lang (Variable lang))
forall (r :: * -> *).
VariableSym r =>
String -> VSType r -> SVariable r
constant
  extVar :: String
-> String
-> VSType (LoggingFor lang)
-> SVariable (LoggingFor lang)
extVar = (String -> String -> VSType lang -> VS (lang (Variable lang)))
-> String
-> String
-> VSType (LoggingFor lang)
-> VS (LoggingFor lang (Variable lang))
forall u l. LiftLogging u l => u -> l
liftLogging String -> String -> VSType lang -> VS (lang (Variable lang))
forall (r :: * -> *).
VariableSym r =>
String -> String -> VSType r -> SVariable r
extVar

instance (TypeSym lang) => TypeSym (LoggingFor lang) where
  bool :: VSType (LoggingFor lang)
bool = VSType lang -> VSType (LoggingFor lang)
forall u l. LiftLogging u l => u -> l
liftLogging VSType lang
forall (r :: * -> *). TypeSym r => VSType r
bool
  int :: VSType (LoggingFor lang)
int = VSType lang -> VSType (LoggingFor lang)
forall u l. LiftLogging u l => u -> l
liftLogging VSType lang
forall (r :: * -> *). TypeSym r => VSType r
int
  float :: VSType (LoggingFor lang)
float = VSType lang -> VSType (LoggingFor lang)
forall u l. LiftLogging u l => u -> l
liftLogging VSType lang
forall (r :: * -> *). TypeSym r => VSType r
float
  double :: VSType (LoggingFor lang)
double = VSType lang -> VSType (LoggingFor lang)
forall u l. LiftLogging u l => u -> l
liftLogging VSType lang
forall (r :: * -> *). TypeSym r => VSType r
double
  char :: VSType (LoggingFor lang)
char = VSType lang -> VSType (LoggingFor lang)
forall u l. LiftLogging u l => u -> l
liftLogging VSType lang
forall (r :: * -> *). TypeSym r => VSType r
char
  string :: VSType (LoggingFor lang)
string = VSType lang -> VSType (LoggingFor lang)
forall u l. LiftLogging u l => u -> l
liftLogging VSType lang
forall (r :: * -> *). TypeSym r => VSType r
string
  infile :: VSType (LoggingFor lang)
infile = VSType lang -> VSType (LoggingFor lang)
forall u l. LiftLogging u l => u -> l
liftLogging VSType lang
forall (r :: * -> *). TypeSym r => VSType r
infile
  outfile :: VSType (LoggingFor lang)
outfile = VSType lang -> VSType (LoggingFor lang)
forall u l. LiftLogging u l => u -> l
liftLogging VSType lang
forall (r :: * -> *). TypeSym r => VSType r
outfile
  referenceType :: VSType (LoggingFor lang) -> VSType (LoggingFor lang)
referenceType = (VSType lang -> VSType lang)
-> VSType (LoggingFor lang) -> VSType (LoggingFor lang)
forall u l. LiftLogging u l => u -> l
liftLogging VSType lang -> VSType lang
forall (r :: * -> *). TypeSym r => VSType r -> VSType r
referenceType
  listType :: VSType (LoggingFor lang) -> VSType (LoggingFor lang)
listType = (VSType lang -> VSType lang)
-> VSType (LoggingFor lang) -> VSType (LoggingFor lang)
forall u l. LiftLogging u l => u -> l
liftLogging VSType lang -> VSType lang
forall (r :: * -> *). TypeSym r => VSType r -> VSType r
listType
  setType :: VSType (LoggingFor lang) -> VSType (LoggingFor lang)
setType = (VSType lang -> VSType lang)
-> VSType (LoggingFor lang) -> VSType (LoggingFor lang)
forall u l. LiftLogging u l => u -> l
liftLogging VSType lang -> VSType lang
forall (r :: * -> *). TypeSym r => VSType r -> VSType r
setType
  arrayType :: VSType (LoggingFor lang) -> VSType (LoggingFor lang)
arrayType = (VSType lang -> VSType lang)
-> VSType (LoggingFor lang) -> VSType (LoggingFor lang)
forall u l. LiftLogging u l => u -> l
liftLogging VSType lang -> VSType lang
forall (r :: * -> *). TypeSym r => VSType r -> VSType r
arrayType
  innerType :: VSType (LoggingFor lang) -> VSType (LoggingFor lang)
innerType = (VSType lang -> VSType lang)
-> VSType (LoggingFor lang) -> VSType (LoggingFor lang)
forall u l. LiftLogging u l => u -> l
liftLogging VSType lang -> VSType lang
forall (r :: * -> *). TypeSym r => VSType r -> VSType r
innerType
  funcType :: [VSType (LoggingFor lang)]
-> VSType (LoggingFor lang) -> VSType (LoggingFor lang)
funcType = ([VSType lang] -> VSType lang -> VSType lang)
-> [VSType (LoggingFor lang)]
-> VSType (LoggingFor lang)
-> VSType (LoggingFor lang)
forall u l. LiftLogging u l => u -> l
liftLogging [VSType lang] -> VSType lang -> VSType lang
forall (r :: * -> *).
TypeSym r =>
[VSType r] -> VSType r -> VSType r
funcType
  void :: VSType (LoggingFor lang)
void = VSType lang -> VSType (LoggingFor lang)
forall u l. LiftLogging u l => u -> l
liftLogging VSType lang
forall (r :: * -> *). TypeSym r => VSType r
void

instance (ValueSym lang) => ValueSym (LoggingFor lang) where
  type Value (LoggingFor lang) = Value lang
  valueType :: LoggingFor lang (Value (LoggingFor lang))
-> LoggingFor lang TypeData
valueType = (lang (Value lang) -> lang TypeData)
-> LoggingFor lang (Value lang) -> LoggingFor lang TypeData
forall u l. LiftLogging u l => u -> l
liftLogging lang (Value lang) -> lang TypeData
forall (r :: * -> *). ValueSym r => r (Value r) -> r TypeData
valueType

instance StatementSym lang => StatementSym (LoggingFor lang) where
  type Statement (LoggingFor lang) = Statement lang
  valStmt :: SValue (LoggingFor lang) -> MSStatement (LoggingFor lang)
valStmt = (VS (lang (Value lang)) -> MS (lang (Statement lang)))
-> VS (LoggingFor lang (Value lang))
-> MS (LoggingFor lang (Statement lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang)) -> MS (lang (Statement lang))
forall (r :: * -> *). StatementSym r => SValue r -> MSStatement r
valStmt
  emptyStmt :: MSStatement (LoggingFor lang)
emptyStmt = MS (lang (Statement lang)) -> MS (LoggingFor lang (Statement lang))
forall u l. LiftLogging u l => u -> l
liftLogging MS (lang (Statement lang))
forall (r :: * -> *). StatementSym r => MSStatement r
emptyStmt
  multi :: [MSStatement (LoggingFor lang)] -> MSStatement (LoggingFor lang)
multi = ([MS (lang (Statement lang))] -> MS (lang (Statement lang)))
-> [MS (LoggingFor lang (Statement lang))]
-> MS (LoggingFor lang (Statement lang))
forall u l. LiftLogging u l => u -> l
liftLogging [MS (lang (Statement lang))] -> MS (lang (Statement lang))
forall (r :: * -> *).
StatementSym r =>
[MSStatement r] -> MSStatement r
multi

instance (Argument lang) => Argument (LoggingFor lang) where
  pointerArg :: SValue (LoggingFor lang) -> SValue (LoggingFor lang)
pointerArg = (VS (lang (Value lang)) -> VS (lang (Value lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang)) -> VS (lang (Value lang))
forall (r :: * -> *). Argument r => SValue r -> SValue r
pointerArg

instance (Reference lang) => Reference (LoggingFor lang) where
  makeRef :: SValue (LoggingFor lang) -> SValue (LoggingFor lang)
makeRef = (VS (lang (Value lang)) -> VS (lang (Value lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang)) -> VS (lang (Value lang))
forall (r :: * -> *). Reference r => SValue r -> SValue r
makeRef
  maybeDeref :: SValue (LoggingFor lang) -> SValue (LoggingFor lang)
maybeDeref = (VS (lang (Value lang)) -> VS (lang (Value lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang)) -> VS (lang (Value lang))
forall (r :: * -> *). Reference r => SValue r -> SValue r
maybeDeref

instance (Array lang) => Array (LoggingFor lang) where
  arrayElem :: SValue (LoggingFor lang)
-> SValue (LoggingFor lang) -> SVariable (LoggingFor lang)
arrayElem = (VS (lang (Value lang))
 -> VS (lang (Value lang)) -> VS (lang (Variable lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Variable lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang))
-> VS (lang (Value lang)) -> VS (lang (Variable lang))
forall (r :: * -> *).
Array r =>
SValue r -> SValue r -> SVariable r
arrayElem
  arrayLength :: SValue (LoggingFor lang) -> SValue (LoggingFor lang)
arrayLength = (VS (lang (Value lang)) -> VS (lang (Value lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang)) -> VS (lang (Value lang))
forall (r :: * -> *). Array r => SValue r -> SValue r
arrayLength
  arrayCopy :: SValue (LoggingFor lang) -> SValue (LoggingFor lang)
arrayCopy = (VS (lang (Value lang)) -> VS (lang (Value lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang)) -> VS (lang (Value lang))
forall (r :: * -> *). Array r => SValue r -> SValue r
arrayCopy

instance (BinderSym lang) => BinderSym (LoggingFor lang) where
  binder :: String -> VSType (LoggingFor lang) -> VSBinder (LoggingFor lang)
binder = (String -> VSType lang -> VSBinder lang)
-> String -> VSType (LoggingFor lang) -> VSBinder (LoggingFor lang)
forall u l. LiftLogging u l => u -> l
liftLogging String -> VSType lang -> VSBinder lang
forall (r :: * -> *).
BinderSym r =>
String -> VSType r -> VSBinder r
binder

instance (BooleanExpression lang) => BooleanExpression (LoggingFor lang) where
  ?! :: SValue (LoggingFor lang) -> SValue (LoggingFor lang)
(?!) = (VS (lang (Value lang)) -> VS (lang (Value lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang)) -> VS (lang (Value lang))
forall (r :: * -> *). BooleanExpression r => SValue r -> SValue r
(?!)
  ?&& :: SValue (LoggingFor lang)
-> SValue (LoggingFor lang) -> SValue (LoggingFor lang)
(?&&) = (VS (lang (Value lang))
 -> VS (lang (Value lang)) -> VS (lang (Value lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang))
-> VS (lang (Value lang)) -> VS (lang (Value lang))
forall (r :: * -> *).
BooleanExpression r =>
SValue r -> SValue r -> SValue r
(?&&)
  ?|| :: SValue (LoggingFor lang)
-> SValue (LoggingFor lang) -> SValue (LoggingFor lang)
(?||) = (VS (lang (Value lang))
 -> VS (lang (Value lang)) -> VS (lang (Value lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang))
-> VS (lang (Value lang)) -> VS (lang (Value lang))
forall (r :: * -> *).
BooleanExpression r =>
SValue r -> SValue r -> SValue r
(?||)

instance (CommandLineArgs lang) => CommandLineArgs (LoggingFor lang) where
  arg :: Integer -> SValue (LoggingFor lang)
arg = (Integer -> VS (lang (Value lang)))
-> Integer -> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging Integer -> VS (lang (Value lang))
forall (r :: * -> *). CommandLineArgs r => Integer -> SValue r
arg
  argsList :: SValue (LoggingFor lang)
argsList = VS (lang (Value lang)) -> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang))
forall (r :: * -> *). CommandLineArgs r => SValue r
argsList
  argExists :: Integer -> SValue (LoggingFor lang)
argExists = (Integer -> VS (lang (Value lang)))
-> Integer -> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging Integer -> VS (lang (Value lang))
forall (r :: * -> *). CommandLineArgs r => Integer -> SValue r
argExists

instance (CommentStatement lang) => CommentStatement (LoggingFor lang) where
  comment :: String -> MSStatement (LoggingFor lang)
comment = (String -> MS (lang (Statement lang)))
-> String -> MS (LoggingFor lang (Statement lang))
forall u l. LiftLogging u l => u -> l
liftLogging String -> MS (lang (Statement lang))
forall (r :: * -> *). CommentStatement r => String -> MSStatement r
comment

instance (Comparison lang) => Comparison (LoggingFor lang) where
  ?< :: SValue (LoggingFor lang)
-> SValue (LoggingFor lang) -> SValue (LoggingFor lang)
(?<) = (VS (lang (Value lang))
 -> VS (lang (Value lang)) -> VS (lang (Value lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang))
-> VS (lang (Value lang)) -> VS (lang (Value lang))
forall (r :: * -> *).
Comparison r =>
SValue r -> SValue r -> SValue r
(?<)
  ?<= :: SValue (LoggingFor lang)
-> SValue (LoggingFor lang) -> SValue (LoggingFor lang)
(?<=) = (VS (lang (Value lang))
 -> VS (lang (Value lang)) -> VS (lang (Value lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang))
-> VS (lang (Value lang)) -> VS (lang (Value lang))
forall (r :: * -> *).
Comparison r =>
SValue r -> SValue r -> SValue r
(?<=)
  ?> :: SValue (LoggingFor lang)
-> SValue (LoggingFor lang) -> SValue (LoggingFor lang)
(?>) = (VS (lang (Value lang))
 -> VS (lang (Value lang)) -> VS (lang (Value lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang))
-> VS (lang (Value lang)) -> VS (lang (Value lang))
forall (r :: * -> *).
Comparison r =>
SValue r -> SValue r -> SValue r
(?>)
  ?>= :: SValue (LoggingFor lang)
-> SValue (LoggingFor lang) -> SValue (LoggingFor lang)
(?>=) = (VS (lang (Value lang))
 -> VS (lang (Value lang)) -> VS (lang (Value lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang))
-> VS (lang (Value lang)) -> VS (lang (Value lang))
forall (r :: * -> *).
Comparison r =>
SValue r -> SValue r -> SValue r
(?>=)
  ?== :: SValue (LoggingFor lang)
-> SValue (LoggingFor lang) -> SValue (LoggingFor lang)
(?==) = (VS (lang (Value lang))
 -> VS (lang (Value lang)) -> VS (lang (Value lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang))
-> VS (lang (Value lang)) -> VS (lang (Value lang))
forall (r :: * -> *).
Comparison r =>
SValue r -> SValue r -> SValue r
(?==)
  ?!= :: SValue (LoggingFor lang)
-> SValue (LoggingFor lang) -> SValue (LoggingFor lang)
(?!=) = (VS (lang (Value lang))
 -> VS (lang (Value lang)) -> VS (lang (Value lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang))
-> VS (lang (Value lang)) -> VS (lang (Value lang))
forall (r :: * -> *).
Comparison r =>
SValue r -> SValue r -> SValue r
(?!=)

instance (BlockSym lang) => BlockSym (LoggingFor lang) where
  type Block (LoggingFor lang) = Block lang
  block :: [MSStatement (LoggingFor lang)] -> MSBlock (LoggingFor lang)
block = ([MS (lang (Statement lang))] -> MS (lang (Block lang)))
-> [MS (LoggingFor lang (Statement lang))]
-> MS (LoggingFor lang (Block lang))
forall u l. LiftLogging u l => u -> l
liftLogging [MS (lang (Statement lang))] -> MS (lang (Block lang))
forall (r :: * -> *). BlockSym r => [MSStatement r] -> MSBlock r
block

instance (BodySym lang) => BodySym (LoggingFor lang) where
  type Body (LoggingFor lang) = Body lang
  body :: [MSBlock (LoggingFor lang)] -> MSBody (LoggingFor lang)
body = ([MS (lang (Block lang))] -> MS (lang (Body lang)))
-> [MS (LoggingFor lang (Block lang))]
-> MS (LoggingFor lang (Body lang))
forall u l. LiftLogging u l => u -> l
liftLogging [MS (lang (Block lang))] -> MS (lang (Body lang))
forall (r :: * -> *). BodySym r => [MSBlock r] -> MSBody r
body
  addComments :: String -> MSBody (LoggingFor lang) -> MSBody (LoggingFor lang)
addComments = (String -> MS (lang (Body lang)) -> MS (lang (Body lang)))
-> String
-> MS (LoggingFor lang (Body lang))
-> MS (LoggingFor lang (Body lang))
forall u l. LiftLogging u l => u -> l
liftLogging String -> MS (lang (Body lang)) -> MS (lang (Body lang))
forall (r :: * -> *). BodySym r => String -> MSBody r -> MSBody r
addComments

instance (ControlStatement lang) => ControlStatement (LoggingFor lang) where
  break :: MSStatement (LoggingFor lang)
break = MS (lang (Statement lang)) -> MS (LoggingFor lang (Statement lang))
forall u l. LiftLogging u l => u -> l
liftLogging MS (lang (Statement lang))
forall (r :: * -> *). ControlStatement r => MSStatement r
break
  continue :: MSStatement (LoggingFor lang)
continue = MS (lang (Statement lang)) -> MS (LoggingFor lang (Statement lang))
forall u l. LiftLogging u l => u -> l
liftLogging MS (lang (Statement lang))
forall (r :: * -> *). ControlStatement r => MSStatement r
continue
  returnStmt :: SValue (LoggingFor lang) -> MSStatement (LoggingFor lang)
returnStmt = (VS (lang (Value lang)) -> MS (lang (Statement lang)))
-> VS (LoggingFor lang (Value lang))
-> MS (LoggingFor lang (Statement lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang)) -> MS (lang (Statement lang))
forall (r :: * -> *).
ControlStatement r =>
SValue r -> MSStatement r
returnStmt
  throw :: String -> MSStatement (LoggingFor lang)
throw = (String -> MS (lang (Statement lang)))
-> String -> MS (LoggingFor lang (Statement lang))
forall u l. LiftLogging u l => u -> l
liftLogging String -> MS (lang (Statement lang))
forall (r :: * -> *). ControlStatement r => String -> MSStatement r
throw
  ifCond :: [(SValue (LoggingFor lang), MSBody (LoggingFor lang))]
-> MSBody (LoggingFor lang) -> MSStatement (LoggingFor lang)
ifCond = ([(VS (lang (Value lang)), MS (lang (Body lang)))]
 -> MS (lang (Body lang)) -> MS (lang (Statement lang)))
-> [(VS (LoggingFor lang (Value lang)),
     MS (LoggingFor lang (Body lang)))]
-> MS (LoggingFor lang (Body lang))
-> MS (LoggingFor lang (Statement lang))
forall u l. LiftLogging u l => u -> l
liftLogging [(VS (lang (Value lang)), MS (lang (Body lang)))]
-> MS (lang (Body lang)) -> MS (lang (Statement lang))
forall (r :: * -> *).
ControlStatement r =>
[(SValue r, MSBody r)] -> MSBody r -> MSStatement r
ifCond
  switch :: SValue (LoggingFor lang)
-> [(SValue (LoggingFor lang), MSBody (LoggingFor lang))]
-> MSBody (LoggingFor lang)
-> MSStatement (LoggingFor lang)
switch = (VS (lang (Value lang))
 -> [(VS (lang (Value lang)), MS (lang (Body lang)))]
 -> MS (lang (Body lang))
 -> MS (lang (Statement lang)))
-> VS (LoggingFor lang (Value lang))
-> [(VS (LoggingFor lang (Value lang)),
     MS (LoggingFor lang (Body lang)))]
-> MS (LoggingFor lang (Body lang))
-> MS (LoggingFor lang (Statement lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang))
-> [(VS (lang (Value lang)), MS (lang (Body lang)))]
-> MS (lang (Body lang))
-> MS (lang (Statement lang))
forall (r :: * -> *).
ControlStatement r =>
SValue r -> [(SValue r, MSBody r)] -> MSBody r -> MSStatement r
switch
  ifExists :: SValue (LoggingFor lang)
-> MSBody (LoggingFor lang)
-> MSBody (LoggingFor lang)
-> MSStatement (LoggingFor lang)
ifExists = (VS (lang (Value lang))
 -> MS (lang (Body lang))
 -> MS (lang (Body lang))
 -> MS (lang (Statement lang)))
-> VS (LoggingFor lang (Value lang))
-> MS (LoggingFor lang (Body lang))
-> MS (LoggingFor lang (Body lang))
-> MS (LoggingFor lang (Statement lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang))
-> MS (lang (Body lang))
-> MS (lang (Body lang))
-> MS (lang (Statement lang))
forall (r :: * -> *).
ControlStatement r =>
SValue r -> MSBody r -> MSBody r -> MSStatement r
ifExists
  for :: MSStatement (LoggingFor lang)
-> SValue (LoggingFor lang)
-> MSStatement (LoggingFor lang)
-> MSBody (LoggingFor lang)
-> MSStatement (LoggingFor lang)
for = (MS (lang (Statement lang))
 -> VS (lang (Value lang))
 -> MS (lang (Statement lang))
 -> MS (lang (Body lang))
 -> MS (lang (Statement lang)))
-> MS (LoggingFor lang (Statement lang))
-> VS (LoggingFor lang (Value lang))
-> MS (LoggingFor lang (Statement lang))
-> MS (LoggingFor lang (Body lang))
-> MS (LoggingFor lang (Statement lang))
forall u l. LiftLogging u l => u -> l
liftLogging MS (lang (Statement lang))
-> VS (lang (Value lang))
-> MS (lang (Statement lang))
-> MS (lang (Body lang))
-> MS (lang (Statement lang))
forall (r :: * -> *).
ControlStatement r =>
MSStatement r
-> SValue r -> MSStatement r -> MSBody r -> MSStatement r
for
  forRange :: SVariable (LoggingFor lang)
-> SValue (LoggingFor lang)
-> SValue (LoggingFor lang)
-> SValue (LoggingFor lang)
-> MSBody (LoggingFor lang)
-> MSStatement (LoggingFor lang)
forRange = (VS (lang (Variable lang))
 -> VS (lang (Value lang))
 -> VS (lang (Value lang))
 -> VS (lang (Value lang))
 -> MS (lang (Body lang))
 -> MS (lang (Statement lang)))
-> VS (LoggingFor lang (Variable lang))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
-> MS (LoggingFor lang (Body lang))
-> MS (LoggingFor lang (Statement lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Variable lang))
-> VS (lang (Value lang))
-> VS (lang (Value lang))
-> VS (lang (Value lang))
-> MS (lang (Body lang))
-> MS (lang (Statement lang))
forall (r :: * -> *).
ControlStatement r =>
SVariable r
-> SValue r -> SValue r -> SValue r -> MSBody r -> MSStatement r
forRange
  forEach :: SVariable (LoggingFor lang)
-> SValue (LoggingFor lang)
-> MSBody (LoggingFor lang)
-> MSStatement (LoggingFor lang)
forEach = (VS (lang (Variable lang))
 -> VS (lang (Value lang))
 -> MS (lang (Body lang))
 -> MS (lang (Statement lang)))
-> VS (LoggingFor lang (Variable lang))
-> VS (LoggingFor lang (Value lang))
-> MS (LoggingFor lang (Body lang))
-> MS (LoggingFor lang (Statement lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Variable lang))
-> VS (lang (Value lang))
-> MS (lang (Body lang))
-> MS (lang (Statement lang))
forall (r :: * -> *).
ControlStatement r =>
SVariable r -> SValue r -> MSBody r -> MSStatement r
forEach
  while :: SValue (LoggingFor lang)
-> MSBody (LoggingFor lang) -> MSStatement (LoggingFor lang)
while = (VS (lang (Value lang))
 -> MS (lang (Body lang)) -> MS (lang (Statement lang)))
-> VS (LoggingFor lang (Value lang))
-> MS (LoggingFor lang (Body lang))
-> MS (LoggingFor lang (Statement lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang))
-> MS (lang (Body lang)) -> MS (lang (Statement lang))
forall (r :: * -> *).
ControlStatement r =>
SValue r -> MSBody r -> MSStatement r
while
  tryCatch :: MSBody (LoggingFor lang)
-> MSBody (LoggingFor lang) -> MSStatement (LoggingFor lang)
tryCatch = (MS (lang (Body lang))
 -> MS (lang (Body lang)) -> MS (lang (Statement lang)))
-> MS (LoggingFor lang (Body lang))
-> MS (LoggingFor lang (Body lang))
-> MS (LoggingFor lang (Statement lang))
forall u l. LiftLogging u l => u -> l
liftLogging MS (lang (Body lang))
-> MS (lang (Body lang)) -> MS (lang (Statement lang))
forall (r :: * -> *).
ControlStatement r =>
MSBody r -> MSBody r -> MSStatement r
tryCatch
  assert :: SValue (LoggingFor lang)
-> SValue (LoggingFor lang) -> MSStatement (LoggingFor lang)
assert = (VS (lang (Value lang))
 -> VS (lang (Value lang)) -> MS (lang (Statement lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
-> MS (LoggingFor lang (Statement lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang))
-> VS (lang (Value lang)) -> MS (lang (Statement lang))
forall (r :: * -> *).
ControlStatement r =>
SValue r -> SValue r -> MSStatement r
assert

instance (ScopeSym lang) => ScopeSym (LoggingFor lang) where
  global :: LoggingFor lang ScopeData
global = lang ScopeData -> LoggingFor lang ScopeData
forall u l. LiftLogging u l => u -> l
liftLogging lang ScopeData
forall (r :: * -> *). ScopeSym r => r ScopeData
global
  mainFn :: LoggingFor lang ScopeData
mainFn = lang ScopeData -> LoggingFor lang ScopeData
forall u l. LiftLogging u l => u -> l
liftLogging lang ScopeData
forall (r :: * -> *). ScopeSym r => r ScopeData
mainFn
  local :: LoggingFor lang ScopeData
local = lang ScopeData -> LoggingFor lang ScopeData
forall u l. LiftLogging u l => u -> l
liftLogging lang ScopeData
forall (r :: * -> *). ScopeSym r => r ScopeData
local

instance (FuncAppStatement lang) => FuncAppStatement (LoggingFor lang) where
  inOutCall :: InOutCall (LoggingFor lang)
inOutCall = (String
 -> [VS (lang (Value lang))]
 -> [VS (lang (Variable lang))]
 -> [VS (lang (Variable lang))]
 -> MS (lang (Statement lang)))
-> String
-> [VS (LoggingFor lang (Value lang))]
-> [VS (LoggingFor lang (Variable lang))]
-> [VS (LoggingFor lang (Variable lang))]
-> MS (LoggingFor lang (Statement lang))
forall u l. LiftLogging u l => u -> l
liftLogging String
-> [VS (lang (Value lang))]
-> [VS (lang (Variable lang))]
-> [VS (lang (Variable lang))]
-> MS (lang (Statement lang))
forall (r :: * -> *). FuncAppStatement r => InOutCall r
inOutCall
  extInOutCall :: String -> InOutCall (LoggingFor lang)
extInOutCall = (String
 -> String
 -> [VS (lang (Value lang))]
 -> [VS (lang (Variable lang))]
 -> [VS (lang (Variable lang))]
 -> MS (lang (Statement lang)))
-> String
-> String
-> [VS (LoggingFor lang (Value lang))]
-> [VS (LoggingFor lang (Variable lang))]
-> [VS (LoggingFor lang (Variable lang))]
-> MS (LoggingFor lang (Statement lang))
forall u l. LiftLogging u l => u -> l
liftLogging String
-> String
-> [VS (lang (Value lang))]
-> [VS (lang (Variable lang))]
-> [VS (lang (Variable lang))]
-> MS (lang (Statement lang))
forall (r :: * -> *). FuncAppStatement r => String -> InOutCall r
extInOutCall

instance (FunctionSym lang) => FunctionSym (LoggingFor lang) where
  type Function (LoggingFor lang) = Function lang

instance (InternalList lang) => InternalList (LoggingFor lang) where
  listSlice' :: Maybe (SValue (LoggingFor lang))
-> Maybe (SValue (LoggingFor lang))
-> Maybe (SValue (LoggingFor lang))
-> SVariable (LoggingFor lang)
-> SValue (LoggingFor lang)
-> MSBlock (LoggingFor lang)
listSlice' = (Maybe (VS (lang (Value lang)))
 -> Maybe (VS (lang (Value lang)))
 -> Maybe (VS (lang (Value lang)))
 -> VS (lang (Variable lang))
 -> VS (lang (Value lang))
 -> MS (lang (Block lang)))
-> Maybe (VS (LoggingFor lang (Value lang)))
-> Maybe (VS (LoggingFor lang (Value lang)))
-> Maybe (VS (LoggingFor lang (Value lang)))
-> VS (LoggingFor lang (Variable lang))
-> VS (LoggingFor lang (Value lang))
-> MS (LoggingFor lang (Block lang))
forall u l. LiftLogging u l => u -> l
liftLogging Maybe (VS (lang (Value lang)))
-> Maybe (VS (lang (Value lang)))
-> Maybe (VS (lang (Value lang)))
-> VS (lang (Variable lang))
-> VS (lang (Value lang))
-> MS (lang (Block lang))
forall (r :: * -> *).
InternalList r =>
Maybe (SValue r)
-> Maybe (SValue r)
-> Maybe (SValue r)
-> SVariable r
-> SValue r
-> MSBlock r
listSlice'

instance (Literal lang) => Literal (LoggingFor lang) where
  litTrue :: SValue (LoggingFor lang)
litTrue = VS (lang (Value lang)) -> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang))
forall (r :: * -> *). Literal r => SValue r
litTrue
  litFalse :: SValue (LoggingFor lang)
litFalse = VS (lang (Value lang)) -> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang))
forall (r :: * -> *). Literal r => SValue r
litFalse
  litChar :: Char -> SValue (LoggingFor lang)
litChar = (Char -> VS (lang (Value lang)))
-> Char -> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging Char -> VS (lang (Value lang))
forall (r :: * -> *). Literal r => Char -> SValue r
litChar
  litDouble :: Double -> SValue (LoggingFor lang)
litDouble = (Double -> VS (lang (Value lang)))
-> Double -> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging Double -> VS (lang (Value lang))
forall (r :: * -> *). Literal r => Double -> SValue r
litDouble
  litFloat :: Float -> SValue (LoggingFor lang)
litFloat = (Float -> VS (lang (Value lang)))
-> Float -> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging Float -> VS (lang (Value lang))
forall (r :: * -> *). Literal r => Float -> SValue r
litFloat
  litInt :: Integer -> SValue (LoggingFor lang)
litInt = (Integer -> VS (lang (Value lang)))
-> Integer -> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging Integer -> VS (lang (Value lang))
forall (r :: * -> *). Literal r => Integer -> SValue r
litInt
  litString :: String -> SValue (LoggingFor lang)
litString = (String -> VS (lang (Value lang)))
-> String -> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging String -> VS (lang (Value lang))
forall (r :: * -> *). Literal r => String -> SValue r
litString
  litArray :: VSType (LoggingFor lang)
-> [SValue (LoggingFor lang)] -> SValue (LoggingFor lang)
litArray = (VSType lang -> [VS (lang (Value lang))] -> VS (lang (Value lang)))
-> VSType (LoggingFor lang)
-> [VS (LoggingFor lang (Value lang))]
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VSType lang -> [VS (lang (Value lang))] -> VS (lang (Value lang))
forall (r :: * -> *).
Literal r =>
VSType r -> [SValue r] -> SValue r
litArray
  litList :: VSType (LoggingFor lang)
-> [SValue (LoggingFor lang)] -> SValue (LoggingFor lang)
litList = (VSType lang -> [VS (lang (Value lang))] -> VS (lang (Value lang)))
-> VSType (LoggingFor lang)
-> [VS (LoggingFor lang (Value lang))]
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VSType lang -> [VS (lang (Value lang))] -> VS (lang (Value lang))
forall (r :: * -> *).
Literal r =>
VSType r -> [SValue r] -> SValue r
litList
  litSet :: VSType (LoggingFor lang)
-> [SValue (LoggingFor lang)] -> SValue (LoggingFor lang)
litSet = (VSType lang -> [VS (lang (Value lang))] -> VS (lang (Value lang)))
-> VSType (LoggingFor lang)
-> [VS (LoggingFor lang (Value lang))]
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VSType lang -> [VS (lang (Value lang))] -> VS (lang (Value lang))
forall (r :: * -> *).
Literal r =>
VSType r -> [SValue r] -> SValue r
litSet

instance (MathConstant lang) => MathConstant (LoggingFor lang) where
  pi :: SValue (LoggingFor lang)
pi = VS (lang (Value lang)) -> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang))
forall (r :: * -> *). MathConstant r => SValue r
pi

instance (ParameterSym lang) => ParameterSym (LoggingFor lang) where
  type Parameter (LoggingFor lang) = Parameter lang
  param :: SVariable (LoggingFor lang) -> MSParameter (LoggingFor lang)
param = (VS (lang (Variable lang)) -> MS (lang (Parameter lang)))
-> VS (LoggingFor lang (Variable lang))
-> MS (LoggingFor lang (Parameter lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Variable lang)) -> MS (lang (Parameter lang))
forall (r :: * -> *).
ParameterSym r =>
SVariable r -> MSParameter r
param
  pointerParam :: SVariable (LoggingFor lang) -> MSParameter (LoggingFor lang)
pointerParam = (VS (lang (Variable lang)) -> MS (lang (Parameter lang)))
-> VS (LoggingFor lang (Variable lang))
-> MS (LoggingFor lang (Parameter lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Variable lang)) -> MS (lang (Parameter lang))
forall (r :: * -> *).
ParameterSym r =>
SVariable r -> MSParameter r
pointerParam

instance (VisibilitySym lang) => VisibilitySym (LoggingFor lang) where
  type Visibility (LoggingFor lang) = Visibility lang
  private :: LoggingFor lang (Visibility (LoggingFor lang))
private = lang (Visibility lang) -> LoggingFor lang (Visibility lang)
forall u l. LiftLogging u l => u -> l
liftLogging lang (Visibility lang)
forall (r :: * -> *). VisibilitySym r => r (Visibility r)
private
  public :: LoggingFor lang (Visibility (LoggingFor lang))
public = lang (Visibility lang) -> LoggingFor lang (Visibility lang)
forall u l. LiftLogging u l => u -> l
liftLogging lang (Visibility lang)
forall (r :: * -> *). VisibilitySym r => r (Visibility r)
public

instance (MethodSym lang) => MethodSym (LoggingFor lang) where
  type Method (LoggingFor lang) = Method lang
  docMain :: MSBody (LoggingFor lang) -> SMethod (LoggingFor lang)
docMain = (MS (lang (Body lang)) -> MS (lang (Method lang)))
-> MS (LoggingFor lang (Body lang))
-> MS (LoggingFor lang (Method lang))
forall u l. LiftLogging u l => u -> l
liftLogging MS (lang (Body lang)) -> MS (lang (Method lang))
forall (r :: * -> *). MethodSym r => MSBody r -> SMethod r
docMain
  function :: String
-> LoggingFor lang (Visibility (LoggingFor lang))
-> VSType (LoggingFor lang)
-> [MSParameter (LoggingFor lang)]
-> MSBody (LoggingFor lang)
-> SMethod (LoggingFor lang)
function = (String
 -> lang (Visibility lang)
 -> VSType lang
 -> [MS (lang (Parameter lang))]
 -> MS (lang (Body lang))
 -> MS (lang (Method lang)))
-> String
-> LoggingFor lang (Visibility lang)
-> VSType (LoggingFor lang)
-> [MS (LoggingFor lang (Parameter lang))]
-> MS (LoggingFor lang (Body lang))
-> MS (LoggingFor lang (Method lang))
forall u l. LiftLogging u l => u -> l
liftLogging String
-> lang (Visibility lang)
-> VSType lang
-> [MS (lang (Parameter lang))]
-> MS (lang (Body lang))
-> MS (lang (Method lang))
forall (r :: * -> *).
MethodSym r =>
String
-> r (Visibility r)
-> VSType r
-> [MSParameter r]
-> MSBody r
-> SMethod r
function
  mainFunction :: MSBody (LoggingFor lang) -> SMethod (LoggingFor lang)
mainFunction = (MS (lang (Body lang)) -> MS (lang (Method lang)))
-> MS (LoggingFor lang (Body lang))
-> MS (LoggingFor lang (Method lang))
forall u l. LiftLogging u l => u -> l
liftLogging MS (lang (Body lang)) -> MS (lang (Method lang))
forall (r :: * -> *). MethodSym r => MSBody r -> SMethod r
mainFunction
  docFunc :: String
-> [String]
-> Maybe String
-> SMethod (LoggingFor lang)
-> SMethod (LoggingFor lang)
docFunc = (String
 -> [String]
 -> Maybe String
 -> MS (lang (Method lang))
 -> MS (lang (Method lang)))
-> String
-> [String]
-> Maybe String
-> MS (LoggingFor lang (Method lang))
-> MS (LoggingFor lang (Method lang))
forall u l. LiftLogging u l => u -> l
liftLogging String
-> [String]
-> Maybe String
-> MS (lang (Method lang))
-> MS (lang (Method lang))
forall (r :: * -> *).
MethodSym r =>
String -> [String] -> Maybe String -> SMethod r -> SMethod r
docFunc
  inOutFunc :: String
-> LoggingFor lang (Visibility (LoggingFor lang))
-> InOutFunc (LoggingFor lang)
inOutFunc = (String
 -> lang (Visibility lang)
 -> [VS (lang (Variable lang))]
 -> [VS (lang (Variable lang))]
 -> [VS (lang (Variable lang))]
 -> MS (lang (Body lang))
 -> MS (lang (Method lang)))
-> String
-> LoggingFor lang (Visibility lang)
-> [VS (LoggingFor lang (Variable lang))]
-> [VS (LoggingFor lang (Variable lang))]
-> [VS (LoggingFor lang (Variable lang))]
-> MS (LoggingFor lang (Body lang))
-> MS (LoggingFor lang (Method lang))
forall u l. LiftLogging u l => u -> l
liftLogging String
-> lang (Visibility lang)
-> [VS (lang (Variable lang))]
-> [VS (lang (Variable lang))]
-> [VS (lang (Variable lang))]
-> MS (lang (Body lang))
-> MS (lang (Method lang))
forall (r :: * -> *).
MethodSym r =>
String -> r (Visibility r) -> InOutFunc r
inOutFunc
  docInOutFunc :: String
-> LoggingFor lang (Visibility (LoggingFor lang))
-> DocInOutFunc (LoggingFor lang)
docInOutFunc = (String
 -> lang (Visibility lang)
 -> String
 -> [(String, VS (lang (Variable lang)))]
 -> [(String, VS (lang (Variable lang)))]
 -> [(String, VS (lang (Variable lang)))]
 -> MS (lang (Body lang))
 -> MS (lang (Method lang)))
-> String
-> LoggingFor lang (Visibility lang)
-> String
-> [(String, VS (LoggingFor lang (Variable lang)))]
-> [(String, VS (LoggingFor lang (Variable lang)))]
-> [(String, VS (LoggingFor lang (Variable lang)))]
-> MS (LoggingFor lang (Body lang))
-> MS (LoggingFor lang (Method lang))
forall u l. LiftLogging u l => u -> l
liftLogging String
-> lang (Visibility lang)
-> String
-> [(String, VS (lang (Variable lang)))]
-> [(String, VS (lang (Variable lang)))]
-> [(String, VS (lang (Variable lang)))]
-> MS (lang (Body lang))
-> MS (lang (Method lang))
forall (r :: * -> *).
MethodSym r =>
String -> r (Visibility r) -> DocInOutFunc r
docInOutFunc

instance (NumericExpression lang) => NumericExpression (LoggingFor lang) where
  #~ :: SValue (LoggingFor lang) -> SValue (LoggingFor lang)
(#~) = (VS (lang (Value lang)) -> VS (lang (Value lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang)) -> VS (lang (Value lang))
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
(#~)
  #/^ :: SValue (LoggingFor lang) -> SValue (LoggingFor lang)
(#/^) = (VS (lang (Value lang)) -> VS (lang (Value lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang)) -> VS (lang (Value lang))
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
(#/^)
  #| :: SValue (LoggingFor lang) -> SValue (LoggingFor lang)
(#|) = (VS (lang (Value lang)) -> VS (lang (Value lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang)) -> VS (lang (Value lang))
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
(#|)
  #+ :: SValue (LoggingFor lang)
-> SValue (LoggingFor lang) -> SValue (LoggingFor lang)
(#+) = (VS (lang (Value lang))
 -> VS (lang (Value lang)) -> VS (lang (Value lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang))
-> VS (lang (Value lang)) -> VS (lang (Value lang))
forall (r :: * -> *).
NumericExpression r =>
SValue r -> SValue r -> SValue r
(#+)
  #- :: SValue (LoggingFor lang)
-> SValue (LoggingFor lang) -> SValue (LoggingFor lang)
(#-) = (VS (lang (Value lang))
 -> VS (lang (Value lang)) -> VS (lang (Value lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang))
-> VS (lang (Value lang)) -> VS (lang (Value lang))
forall (r :: * -> *).
NumericExpression r =>
SValue r -> SValue r -> SValue r
(#-)
  #* :: SValue (LoggingFor lang)
-> SValue (LoggingFor lang) -> SValue (LoggingFor lang)
(#*) = (VS (lang (Value lang))
 -> VS (lang (Value lang)) -> VS (lang (Value lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang))
-> VS (lang (Value lang)) -> VS (lang (Value lang))
forall (r :: * -> *).
NumericExpression r =>
SValue r -> SValue r -> SValue r
(#*)
  #/ :: SValue (LoggingFor lang)
-> SValue (LoggingFor lang) -> SValue (LoggingFor lang)
(#/) = (VS (lang (Value lang))
 -> VS (lang (Value lang)) -> VS (lang (Value lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang))
-> VS (lang (Value lang)) -> VS (lang (Value lang))
forall (r :: * -> *).
NumericExpression r =>
SValue r -> SValue r -> SValue r
(#/)
  #% :: SValue (LoggingFor lang)
-> SValue (LoggingFor lang) -> SValue (LoggingFor lang)
(#%) = (VS (lang (Value lang))
 -> VS (lang (Value lang)) -> VS (lang (Value lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang))
-> VS (lang (Value lang)) -> VS (lang (Value lang))
forall (r :: * -> *).
NumericExpression r =>
SValue r -> SValue r -> SValue r
(#%)
  #^ :: SValue (LoggingFor lang)
-> SValue (LoggingFor lang) -> SValue (LoggingFor lang)
(#^) = (VS (lang (Value lang))
 -> VS (lang (Value lang)) -> VS (lang (Value lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang))
-> VS (lang (Value lang)) -> VS (lang (Value lang))
forall (r :: * -> *).
NumericExpression r =>
SValue r -> SValue r -> SValue r
(#^)
  log :: SValue (LoggingFor lang) -> SValue (LoggingFor lang)
log = (VS (lang (Value lang)) -> VS (lang (Value lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang)) -> VS (lang (Value lang))
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
log
  ln :: SValue (LoggingFor lang) -> SValue (LoggingFor lang)
ln = (VS (lang (Value lang)) -> VS (lang (Value lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang)) -> VS (lang (Value lang))
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
ln
  exp :: SValue (LoggingFor lang) -> SValue (LoggingFor lang)
exp = (VS (lang (Value lang)) -> VS (lang (Value lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang)) -> VS (lang (Value lang))
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
exp
  sin :: SValue (LoggingFor lang) -> SValue (LoggingFor lang)
sin = (VS (lang (Value lang)) -> VS (lang (Value lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang)) -> VS (lang (Value lang))
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
sin
  cos :: SValue (LoggingFor lang) -> SValue (LoggingFor lang)
cos = (VS (lang (Value lang)) -> VS (lang (Value lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang)) -> VS (lang (Value lang))
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
cos
  tan :: SValue (LoggingFor lang) -> SValue (LoggingFor lang)
tan = (VS (lang (Value lang)) -> VS (lang (Value lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang)) -> VS (lang (Value lang))
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
tan
  csc :: SValue (LoggingFor lang) -> SValue (LoggingFor lang)
csc = (VS (lang (Value lang)) -> VS (lang (Value lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang)) -> VS (lang (Value lang))
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
csc
  sec :: SValue (LoggingFor lang) -> SValue (LoggingFor lang)
sec = (VS (lang (Value lang)) -> VS (lang (Value lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang)) -> VS (lang (Value lang))
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
sec
  cot :: SValue (LoggingFor lang) -> SValue (LoggingFor lang)
cot = (VS (lang (Value lang)) -> VS (lang (Value lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang)) -> VS (lang (Value lang))
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
cot
  arcsin :: SValue (LoggingFor lang) -> SValue (LoggingFor lang)
arcsin = (VS (lang (Value lang)) -> VS (lang (Value lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang)) -> VS (lang (Value lang))
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
arcsin
  arccos :: SValue (LoggingFor lang) -> SValue (LoggingFor lang)
arccos = (VS (lang (Value lang)) -> VS (lang (Value lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang)) -> VS (lang (Value lang))
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
arccos
  arctan :: SValue (LoggingFor lang) -> SValue (LoggingFor lang)
arctan = (VS (lang (Value lang)) -> VS (lang (Value lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang)) -> VS (lang (Value lang))
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
arctan
  floor :: SValue (LoggingFor lang) -> SValue (LoggingFor lang)
floor = (VS (lang (Value lang)) -> VS (lang (Value lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang)) -> VS (lang (Value lang))
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
floor
  ceil :: SValue (LoggingFor lang) -> SValue (LoggingFor lang)
ceil = (VS (lang (Value lang)) -> VS (lang (Value lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang)) -> VS (lang (Value lang))
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
ceil

instance (Set lang) => Set (LoggingFor lang) where
  contains :: SValue (LoggingFor lang)
-> SValue (LoggingFor lang) -> SValue (LoggingFor lang)
contains = (VS (lang (Value lang))
 -> VS (lang (Value lang)) -> VS (lang (Value lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang))
-> VS (lang (Value lang)) -> VS (lang (Value lang))
forall (r :: * -> *). Set r => SValue r -> SValue r -> SValue r
contains
  setAdd :: SValue (LoggingFor lang)
-> SValue (LoggingFor lang) -> SValue (LoggingFor lang)
setAdd = (VS (lang (Value lang))
 -> VS (lang (Value lang)) -> VS (lang (Value lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang))
-> VS (lang (Value lang)) -> VS (lang (Value lang))
forall (r :: * -> *). Set r => SValue r -> SValue r -> SValue r
setAdd
  setRemove :: SValue (LoggingFor lang)
-> SValue (LoggingFor lang) -> SValue (LoggingFor lang)
setRemove = (VS (lang (Value lang))
 -> VS (lang (Value lang)) -> VS (lang (Value lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang))
-> VS (lang (Value lang)) -> VS (lang (Value lang))
forall (r :: * -> *). Set r => SValue r -> SValue r -> SValue r
setRemove
  setUnion :: SValue (LoggingFor lang)
-> SValue (LoggingFor lang) -> SValue (LoggingFor lang)
setUnion = (VS (lang (Value lang))
 -> VS (lang (Value lang)) -> VS (lang (Value lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang))
-> VS (lang (Value lang)) -> VS (lang (Value lang))
forall (r :: * -> *). Set r => SValue r -> SValue r -> SValue r
setUnion

instance (UnRepr lang contents) => UnRepr (LoggingFor lang) contents where
  unRepr :: LoggingFor lang contents -> contents
unRepr = lang contents -> contents
forall (repr :: * -> *) contents.
UnRepr repr contents =>
repr contents -> contents
unRepr (lang contents -> contents)
-> (LoggingFor lang contents -> lang contents)
-> LoggingFor lang contents
-> contents
forall b c a. (b -> c) -> (a -> b) -> a -> c
. LoggingFor lang contents -> lang contents
forall (lang :: * -> *) a. LoggingFor lang a -> lang a
unLC

instance (ValueExpression lang) => ValueExpression (LoggingFor lang) where
  inlineIf :: SValue (LoggingFor lang)
-> SValue (LoggingFor lang)
-> SValue (LoggingFor lang)
-> SValue (LoggingFor lang)
inlineIf = (VS (lang (Value lang))
 -> VS (lang (Value lang))
 -> VS (lang (Value lang))
 -> VS (lang (Value lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang))
-> VS (lang (Value lang))
-> VS (lang (Value lang))
-> VS (lang (Value lang))
forall (r :: * -> *).
ValueExpression r =>
SValue r -> SValue r -> SValue r -> SValue r
inlineIf
  funcAppMixedArgs :: MixedCall (LoggingFor lang)
funcAppMixedArgs = (String
 -> VSType lang
 -> [VS (lang (Value lang))]
 -> [(VS (lang (Variable lang)), VS (lang (Value lang)))]
 -> VS (lang (Value lang)))
-> String
-> VSType (LoggingFor lang)
-> [VS (LoggingFor lang (Value lang))]
-> [(VS (LoggingFor lang (Variable lang)),
     VS (LoggingFor lang (Value lang)))]
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging String
-> VSType lang
-> [VS (lang (Value lang))]
-> [(VS (lang (Variable lang)), VS (lang (Value lang)))]
-> VS (lang (Value lang))
forall (r :: * -> *). ValueExpression r => MixedCall r
funcAppMixedArgs
  extFuncAppMixedArgs :: String -> MixedCall (LoggingFor lang)
extFuncAppMixedArgs = (String
 -> String
 -> VSType lang
 -> [VS (lang (Value lang))]
 -> [(VS (lang (Variable lang)), VS (lang (Value lang)))]
 -> VS (lang (Value lang)))
-> String
-> String
-> VSType (LoggingFor lang)
-> [VS (LoggingFor lang (Value lang))]
-> [(VS (LoggingFor lang (Variable lang)),
     VS (LoggingFor lang (Value lang)))]
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging String
-> String
-> VSType lang
-> [VS (lang (Value lang))]
-> [(VS (lang (Variable lang)), VS (lang (Value lang)))]
-> VS (lang (Value lang))
forall (r :: * -> *). ValueExpression r => String -> MixedCall r
extFuncAppMixedArgs
  libFuncAppMixedArgs :: String -> MixedCall (LoggingFor lang)
libFuncAppMixedArgs = (String
 -> String
 -> VSType lang
 -> [VS (lang (Value lang))]
 -> [(VS (lang (Variable lang)), VS (lang (Value lang)))]
 -> VS (lang (Value lang)))
-> String
-> String
-> VSType (LoggingFor lang)
-> [VS (LoggingFor lang (Value lang))]
-> [(VS (LoggingFor lang (Variable lang)),
     VS (LoggingFor lang (Value lang)))]
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging String
-> String
-> VSType lang
-> [VS (lang (Value lang))]
-> [(VS (lang (Variable lang)), VS (lang (Value lang)))]
-> VS (lang (Value lang))
forall (r :: * -> *). ValueExpression r => String -> MixedCall r
libFuncAppMixedArgs
  lambda :: [VSBinder (LoggingFor lang)]
-> SValue (LoggingFor lang) -> SValue (LoggingFor lang)
lambda = ([VSBinder lang]
 -> VS (lang (Value lang)) -> VS (lang (Value lang)))
-> [VSBinder (LoggingFor lang)]
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging [VSBinder lang] -> VS (lang (Value lang)) -> VS (lang (Value lang))
forall (r :: * -> *).
ValueExpression r =>
[VSBinder r] -> SValue r -> SValue r
lambda
  notNull :: SValue (LoggingFor lang) -> SValue (LoggingFor lang)
notNull = (VS (lang (Value lang)) -> VS (lang (Value lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang)) -> VS (lang (Value lang))
forall (r :: * -> *). ValueExpression r => SValue r -> SValue r
notNull

instance (VariableElim lang) => VariableElim (LoggingFor lang) where
  variableName :: LoggingFor lang (Variable (LoggingFor lang)) -> String
variableName = (lang (Variable lang) -> String)
-> LoggingFor lang (Variable lang) -> String
forall u l. LiftLogging u l => u -> l
liftLogging lang (Variable lang) -> String
forall (r :: * -> *). VariableElim r => r (Variable r) -> String
variableName
  variableType :: LoggingFor lang (Variable (LoggingFor lang))
-> LoggingFor lang TypeData
variableType = (lang (Variable lang) -> lang TypeData)
-> LoggingFor lang (Variable lang) -> LoggingFor lang TypeData
forall u l. LiftLogging u l => u -> l
liftLogging lang (Variable lang) -> lang TypeData
forall (r :: * -> *).
VariableElim r =>
r (Variable r) -> r TypeData
variableType

instance (VariableValue lang) => VariableValue (LoggingFor lang) where
  valueOf :: SVariable (LoggingFor lang) -> SValue (LoggingFor lang)
valueOf = (VS (lang (Variable lang)) -> VS (lang (Value lang)))
-> VS (LoggingFor lang (Variable lang))
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Variable lang)) -> VS (lang (Value lang))
forall (r :: * -> *). VariableValue r => SVariable r -> SValue r
valueOf

instance (IndexTranslator lang) => IndexTranslator (LoggingFor lang) where
  intToIndex :: SValue (LoggingFor lang) -> SValue (LoggingFor lang)
intToIndex = (VS (lang (Value lang)) -> VS (lang (Value lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang)) -> VS (lang (Value lang))
forall (r :: * -> *). IndexTranslator r => SValue r -> SValue r
intToIndex
  indexToInt :: SValue (LoggingFor lang) -> SValue (LoggingFor lang)
indexToInt = (VS (lang (Value lang)) -> VS (lang (Value lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang)) -> VS (lang (Value lang))
forall (r :: * -> *). IndexTranslator r => SValue r -> SValue r
indexToInt

-- GProc

instance (P.ProcProg lang) => P.ProcProg (LoggingFor lang)

instance (P.ModuleSym lang) => P.ModuleSym (LoggingFor lang) where
  type Module (LoggingFor lang) = P.Module lang
  buildModule :: String
-> [String]
-> [SMethod (LoggingFor lang)]
-> FSModule (LoggingFor lang)
buildModule = (String
 -> [String]
 -> [MS (lang (Method lang))]
 -> FS (lang (Module lang)))
-> String
-> [String]
-> [MS (LoggingFor lang (Method lang))]
-> FS (LoggingFor lang (Module lang))
forall u l. LiftLogging u l => u -> l
liftLogging String
-> [String] -> [MS (lang (Method lang))] -> FS (lang (Module lang))
forall (r :: * -> *).
ModuleSym r =>
String -> [String] -> [SMethod r] -> FSModule r
P.buildModule

instance (P.FileSym lang) => P.FileSym (LoggingFor lang) where
  type File (LoggingFor lang) = P.File lang
  fileDoc :: FSModule (LoggingFor lang) -> SFile (LoggingFor lang)
fileDoc = (FS (lang (Module lang)) -> FS (lang (File lang)))
-> FS (LoggingFor lang (Module lang))
-> FS (LoggingFor lang (File lang))
forall u l. LiftLogging u l => u -> l
liftLogging FS (lang (Module lang)) -> FS (lang (File lang))
forall (r :: * -> *). FileSym r => FSModule r -> SFile r
P.fileDoc
  docMod :: String
-> String
-> [String]
-> String
-> SFile (LoggingFor lang)
-> SFile (LoggingFor lang)
docMod = (String
 -> String
 -> [String]
 -> String
 -> FS (lang (File lang))
 -> FS (lang (File lang)))
-> String
-> String
-> [String]
-> String
-> FS (LoggingFor lang (File lang))
-> FS (LoggingFor lang (File lang))
forall u l. LiftLogging u l => u -> l
liftLogging String
-> String
-> [String]
-> String
-> FS (lang (File lang))
-> FS (lang (File lang))
forall (r :: * -> *).
FileSym r =>
String -> String -> [String] -> String -> SFile r -> SFile r
P.docMod

instance (P.ProgramSym lang) => P.ProgramSym (LoggingFor lang) where
  type Program (LoggingFor lang) = P.Program lang
  prog :: String
-> String
-> [SFile (LoggingFor lang)]
-> GSProgram (LoggingFor lang)
prog = (String
 -> String -> [FS (lang (File lang))] -> GS (lang (Program lang)))
-> String
-> String
-> [FS (LoggingFor lang (File lang))]
-> GS (LoggingFor lang (Program lang))
forall u l. LiftLogging u l => u -> l
liftLogging String
-> String -> [FS (lang (File lang))] -> GS (lang (Program lang))
forall (r :: * -> *).
ProgramSym r =>
String -> String -> [SFile r] -> GSProgram r
P.prog

-- GOOL

instance (G.OOProg lang) => G.OOProg (LoggingFor lang)

instance (G.GetSet lang) => G.GetSet (LoggingFor lang) where
  get :: SValue (LoggingFor lang)
-> SVariable (LoggingFor lang) -> SValue (LoggingFor lang)
get = (VS (lang (Value lang))
 -> VS (lang (Variable lang)) -> VS (lang (Value lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Variable lang))
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang))
-> VS (lang (Variable lang)) -> VS (lang (Value lang))
forall (r :: * -> *).
GetSet r =>
SValue r -> SVariable r -> SValue r
G.get
  set :: SValue (LoggingFor lang)
-> SVariable (LoggingFor lang)
-> SValue (LoggingFor lang)
-> SValue (LoggingFor lang)
set = (VS (lang (Value lang))
 -> VS (lang (Variable lang))
 -> VS (lang (Value lang))
 -> VS (lang (Value lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Variable lang))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang))
-> VS (lang (Variable lang))
-> VS (lang (Value lang))
-> VS (lang (Value lang))
forall (r :: * -> *).
GetSet r =>
SValue r -> SVariable r -> SValue r -> SValue r
G.set

instance (G.InternalValueExp lang) => G.InternalValueExp (LoggingFor lang) where
  objMethodCallMixedArgs' :: String
-> VSType (LoggingFor lang)
-> SValue (LoggingFor lang)
-> [SValue (LoggingFor lang)]
-> NamedArgs (LoggingFor lang)
-> SValue (LoggingFor lang)
objMethodCallMixedArgs' = (String
 -> VSType lang
 -> VS (lang (Value lang))
 -> [VS (lang (Value lang))]
 -> [(VS (lang (Variable lang)), VS (lang (Value lang)))]
 -> VS (lang (Value lang)))
-> String
-> VSType (LoggingFor lang)
-> VS (LoggingFor lang (Value lang))
-> [VS (LoggingFor lang (Value lang))]
-> [(VS (LoggingFor lang (Variable lang)),
     VS (LoggingFor lang (Value lang)))]
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging String
-> VSType lang
-> VS (lang (Value lang))
-> [VS (lang (Value lang))]
-> [(VS (lang (Variable lang)), VS (lang (Value lang)))]
-> VS (lang (Value lang))
forall (r :: * -> *).
InternalValueExp r =>
String
-> VSType r -> SValue r -> [SValue r] -> NamedArgs r -> SValue r
G.objMethodCallMixedArgs'
  classMethodCallMixedArgs' :: String
-> VSType (LoggingFor lang)
-> VSType (LoggingFor lang)
-> [SValue (LoggingFor lang)]
-> NamedArgs (LoggingFor lang)
-> SValue (LoggingFor lang)
classMethodCallMixedArgs' = (String
 -> VSType lang
 -> VSType lang
 -> [VS (lang (Value lang))]
 -> [(VS (lang (Variable lang)), VS (lang (Value lang)))]
 -> VS (lang (Value lang)))
-> String
-> VSType (LoggingFor lang)
-> VSType (LoggingFor lang)
-> [VS (LoggingFor lang (Value lang))]
-> [(VS (LoggingFor lang (Variable lang)),
     VS (LoggingFor lang (Value lang)))]
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging String
-> VSType lang
-> VSType lang
-> [VS (lang (Value lang))]
-> [(VS (lang (Variable lang)), VS (lang (Value lang)))]
-> VS (lang (Value lang))
forall (r :: * -> *).
InternalValueExp r =>
String
-> VSType r -> VSType r -> [SValue r] -> NamedArgs r -> SValue r
G.classMethodCallMixedArgs'

instance (G.OOTypeSym lang) => G.OOTypeSym (LoggingFor lang) where
  obj :: String -> VSType (LoggingFor lang)
obj = (String -> VSType lang) -> String -> VSType (LoggingFor lang)
forall u l. LiftLogging u l => u -> l
liftLogging String -> VSType lang
forall (r :: * -> *). OOTypeSym r => String -> VSType r
G.obj

instance (G.OOVariableSym lang) => G.OOVariableSym (LoggingFor lang) where
  classVar :: String -> VSType (LoggingFor lang) -> SVariable (LoggingFor lang)
classVar = (String -> VSType lang -> VS (lang (Variable lang)))
-> String
-> VSType (LoggingFor lang)
-> VS (LoggingFor lang (Variable lang))
forall u l. LiftLogging u l => u -> l
liftLogging String -> VSType lang -> VS (lang (Variable lang))
forall (r :: * -> *).
OOVariableSym r =>
String -> VSType r -> SVariable r
G.classVar
  classConst :: String -> VSType (LoggingFor lang) -> SVariable (LoggingFor lang)
classConst = (String -> VSType lang -> VS (lang (Variable lang)))
-> String
-> VSType (LoggingFor lang)
-> VS (LoggingFor lang (Variable lang))
forall u l. LiftLogging u l => u -> l
liftLogging String -> VSType lang -> VS (lang (Variable lang))
forall (r :: * -> *).
OOVariableSym r =>
String -> VSType r -> SVariable r
G.classConst
  classVarAccess :: VSType (LoggingFor lang)
-> SVariable (LoggingFor lang) -> SVariable (LoggingFor lang)
classVarAccess = (VSType lang
 -> VS (lang (Variable lang)) -> VS (lang (Variable lang)))
-> VSType (LoggingFor lang)
-> VS (LoggingFor lang (Variable lang))
-> VS (LoggingFor lang (Variable lang))
forall u l. LiftLogging u l => u -> l
liftLogging VSType lang
-> VS (lang (Variable lang)) -> VS (lang (Variable lang))
forall (r :: * -> *).
OOVariableSym r =>
VSType r -> SVariable r -> SVariable r
G.classVarAccess
  extClassVarAccess :: VSType (LoggingFor lang)
-> SVariable (LoggingFor lang) -> SVariable (LoggingFor lang)
extClassVarAccess = (VSType lang
 -> VS (lang (Variable lang)) -> VS (lang (Variable lang)))
-> VSType (LoggingFor lang)
-> VS (LoggingFor lang (Variable lang))
-> VS (LoggingFor lang (Variable lang))
forall u l. LiftLogging u l => u -> l
liftLogging VSType lang
-> VS (lang (Variable lang)) -> VS (lang (Variable lang))
forall (r :: * -> *).
OOVariableSym r =>
VSType r -> SVariable r -> SVariable r
G.extClassVarAccess
  instanceVarAccess :: SValue (LoggingFor lang)
-> SVariable (LoggingFor lang) -> SVariable (LoggingFor lang)
instanceVarAccess = (VS (lang (Value lang))
 -> VS (lang (Variable lang)) -> VS (lang (Variable lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Variable lang))
-> VS (LoggingFor lang (Variable lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang))
-> VS (lang (Variable lang)) -> VS (lang (Variable lang))
forall (r :: * -> *).
OOVariableSym r =>
SValue r -> SVariable r -> SVariable r
G.instanceVarAccess

instance (DeclStatement (LoggingFor lang), G.OODeclStatement lang) => G.OODeclStatement (LoggingFor lang) where
  objDecDef :: SVariable (LoggingFor lang)
-> LoggingFor lang ScopeData
-> SValue (LoggingFor lang)
-> MSStatement (LoggingFor lang)
objDecDef = (VS (lang (Variable lang))
 -> lang ScopeData
 -> VS (lang (Value lang))
 -> MS (lang (Statement lang)))
-> VS (LoggingFor lang (Variable lang))
-> LoggingFor lang ScopeData
-> VS (LoggingFor lang (Value lang))
-> MS (LoggingFor lang (Statement lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Variable lang))
-> lang ScopeData
-> VS (lang (Value lang))
-> MS (lang (Statement lang))
forall (r :: * -> *).
OODeclStatement r =>
SVariable r -> r ScopeData -> SValue r -> MSStatement r
G.objDecDef
  objDecNew :: SVariable (LoggingFor lang)
-> LoggingFor lang ScopeData
-> [SValue (LoggingFor lang)]
-> MSStatement (LoggingFor lang)
objDecNew = (VS (lang (Variable lang))
 -> lang ScopeData
 -> [VS (lang (Value lang))]
 -> MS (lang (Statement lang)))
-> VS (LoggingFor lang (Variable lang))
-> LoggingFor lang ScopeData
-> [VS (LoggingFor lang (Value lang))]
-> MS (LoggingFor lang (Statement lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Variable lang))
-> lang ScopeData
-> [VS (lang (Value lang))]
-> MS (lang (Statement lang))
forall (r :: * -> *).
OODeclStatement r =>
SVariable r -> r ScopeData -> [SValue r] -> MSStatement r
G.objDecNew
  extObjDecNew :: String
-> SVariable (LoggingFor lang)
-> LoggingFor lang ScopeData
-> [SValue (LoggingFor lang)]
-> MSStatement (LoggingFor lang)
extObjDecNew = (String
 -> VS (lang (Variable lang))
 -> lang ScopeData
 -> [VS (lang (Value lang))]
 -> MS (lang (Statement lang)))
-> String
-> VS (LoggingFor lang (Variable lang))
-> LoggingFor lang ScopeData
-> [VS (LoggingFor lang (Value lang))]
-> MS (LoggingFor lang (Statement lang))
forall u l. LiftLogging u l => u -> l
liftLogging String
-> VS (lang (Variable lang))
-> lang ScopeData
-> [VS (lang (Value lang))]
-> MS (lang (Statement lang))
forall (r :: * -> *).
OODeclStatement r =>
String -> SVariable r -> r ScopeData -> [SValue r] -> MSStatement r
G.extObjDecNew

instance (G.OOFuncAppStatement lang) => G.OOFuncAppStatement (LoggingFor lang) where
  selfInOutCall :: InOutCall (LoggingFor lang)
selfInOutCall = (String
 -> [VS (lang (Value lang))]
 -> [VS (lang (Variable lang))]
 -> [VS (lang (Variable lang))]
 -> MS (lang (Statement lang)))
-> String
-> [VS (LoggingFor lang (Value lang))]
-> [VS (LoggingFor lang (Variable lang))]
-> [VS (LoggingFor lang (Variable lang))]
-> MS (LoggingFor lang (Statement lang))
forall u l. LiftLogging u l => u -> l
liftLogging String
-> [VS (lang (Value lang))]
-> [VS (lang (Variable lang))]
-> [VS (lang (Variable lang))]
-> MS (lang (Statement lang))
forall (r :: * -> *). OOFuncAppStatement r => InOutCall r
G.selfInOutCall

instance (G.OOValueSym lang) => G.OOValueSym (LoggingFor lang) where

instance (G.OOValueExpression lang) => G.OOValueExpression (LoggingFor lang) where
  newObjMixedArgs :: MixedCtorCall (LoggingFor lang)
newObjMixedArgs = (VSType lang
 -> [VS (lang (Value lang))]
 -> [(VS (lang (Variable lang)), VS (lang (Value lang)))]
 -> VS (lang (Value lang)))
-> VSType (LoggingFor lang)
-> [VS (LoggingFor lang (Value lang))]
-> [(VS (LoggingFor lang (Variable lang)),
     VS (LoggingFor lang (Value lang)))]
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VSType lang
-> [VS (lang (Value lang))]
-> [(VS (lang (Variable lang)), VS (lang (Value lang)))]
-> VS (lang (Value lang))
forall (r :: * -> *). OOValueExpression r => MixedCtorCall r
G.newObjMixedArgs
  extNewObjMixedArgs :: String -> MixedCtorCall (LoggingFor lang)
extNewObjMixedArgs = (String
 -> VSType lang
 -> [VS (lang (Value lang))]
 -> [(VS (lang (Variable lang)), VS (lang (Value lang)))]
 -> VS (lang (Value lang)))
-> String
-> VSType (LoggingFor lang)
-> [VS (LoggingFor lang (Value lang))]
-> [(VS (LoggingFor lang (Variable lang)),
     VS (LoggingFor lang (Value lang)))]
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging String
-> VSType lang
-> [VS (lang (Value lang))]
-> [(VS (lang (Variable lang)), VS (lang (Value lang)))]
-> VS (lang (Value lang))
forall (r :: * -> *).
OOValueExpression r =>
String -> MixedCtorCall r
G.extNewObjMixedArgs
  libNewObjMixedArgs :: String -> MixedCtorCall (LoggingFor lang)
libNewObjMixedArgs = (String
 -> VSType lang
 -> [VS (lang (Value lang))]
 -> [(VS (lang (Variable lang)), VS (lang (Value lang)))]
 -> VS (lang (Value lang)))
-> String
-> VSType (LoggingFor lang)
-> [VS (LoggingFor lang (Value lang))]
-> [(VS (LoggingFor lang (Variable lang)),
     VS (LoggingFor lang (Value lang)))]
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging String
-> VSType lang
-> [VS (lang (Value lang))]
-> [(VS (lang (Variable lang)), VS (lang (Value lang)))]
-> VS (lang (Value lang))
forall (r :: * -> *).
OOValueExpression r =>
String -> MixedCtorCall r
G.libNewObjMixedArgs

instance (G.SelfSym lang) => G.SelfSym (LoggingFor lang) where
  self :: SVariable (LoggingFor lang)
self = VS (lang (Variable lang)) -> VS (LoggingFor lang (Variable lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Variable lang))
forall (r :: * -> *). SelfSym r => SVariable r
G.self

instance (G.OOVariableValue lang) => G.OOVariableValue (LoggingFor lang)

instance (G.OOFunctionSym lang) => G.OOFunctionSym (LoggingFor lang) where
  func :: String
-> VSType (LoggingFor lang)
-> [SValue (LoggingFor lang)]
-> VSFunction (LoggingFor lang)
func = (String
 -> VSType lang
 -> [VS (lang (Value lang))]
 -> VS (lang (Function lang)))
-> String
-> VSType (LoggingFor lang)
-> [VS (LoggingFor lang (Value lang))]
-> VS (LoggingFor lang (Function lang))
forall u l. LiftLogging u l => u -> l
liftLogging String
-> VSType lang
-> [VS (lang (Value lang))]
-> VS (lang (Function lang))
forall (r :: * -> *).
OOFunctionSym r =>
String -> VSType r -> [SValue r] -> VSFunction r
G.func
  objAccess :: SValue (LoggingFor lang)
-> VSFunction (LoggingFor lang) -> SValue (LoggingFor lang)
objAccess = (VS (lang (Value lang))
 -> VS (lang (Function lang)) -> VS (lang (Value lang)))
-> VS (LoggingFor lang (Value lang))
-> VS (LoggingFor lang (Function lang))
-> VS (LoggingFor lang (Value lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Value lang))
-> VS (lang (Function lang)) -> VS (lang (Value lang))
forall (r :: * -> *).
OOFunctionSym r =>
SValue r -> VSFunction r -> SValue r
G.objAccess

instance (G.ObserverPattern lang) => G.ObserverPattern (LoggingFor lang) where
  notifyObservers :: VSFunction (LoggingFor lang)
-> VSType (LoggingFor lang) -> MSStatement (LoggingFor lang)
notifyObservers = (VS (lang (Function lang))
 -> VSType lang -> MS (lang (Statement lang)))
-> VS (LoggingFor lang (Function lang))
-> VSType (LoggingFor lang)
-> MS (LoggingFor lang (Statement lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Function lang))
-> VSType lang -> MS (lang (Statement lang))
forall (r :: * -> *).
ObserverPattern r =>
VSFunction r -> VSType r -> MSStatement r
G.notifyObservers

instance (G.AttachmentSym lang) => G.AttachmentSym (LoggingFor lang) where
  type Attachment (LoggingFor lang) = G.Attachment lang
  classLevel :: LoggingFor lang (Attachment (LoggingFor lang))
classLevel = lang (Attachment lang) -> LoggingFor lang (Attachment lang)
forall u l. LiftLogging u l => u -> l
liftLogging lang (Attachment lang)
forall (r :: * -> *). AttachmentSym r => r (Attachment r)
G.classLevel
  instanceLevel :: LoggingFor lang (Attachment (LoggingFor lang))
instanceLevel = lang (Attachment lang) -> LoggingFor lang (Attachment lang)
forall u l. LiftLogging u l => u -> l
liftLogging lang (Attachment lang)
forall (r :: * -> *). AttachmentSym r => r (Attachment r)
G.instanceLevel

instance (G.OOMethodSym lang) => G.OOMethodSym (LoggingFor lang) where
  method :: String
-> LoggingFor lang (Visibility (LoggingFor lang))
-> LoggingFor lang (Attachment (LoggingFor lang))
-> VSType (LoggingFor lang)
-> [MSParameter (LoggingFor lang)]
-> MSBody (LoggingFor lang)
-> SMethod (LoggingFor lang)
method = (String
 -> lang (Visibility lang)
 -> lang (Attachment lang)
 -> VSType lang
 -> [MS (lang (Parameter lang))]
 -> MS (lang (Body lang))
 -> MS (lang (Method lang)))
-> String
-> LoggingFor lang (Visibility lang)
-> LoggingFor lang (Attachment lang)
-> VSType (LoggingFor lang)
-> [MS (LoggingFor lang (Parameter lang))]
-> MS (LoggingFor lang (Body lang))
-> MS (LoggingFor lang (Method lang))
forall u l. LiftLogging u l => u -> l
liftLogging String
-> lang (Visibility lang)
-> lang (Attachment lang)
-> VSType lang
-> [MS (lang (Parameter lang))]
-> MS (lang (Body lang))
-> MS (lang (Method lang))
forall (r :: * -> *).
OOMethodSym r =>
String
-> r (Visibility r)
-> r (Attachment r)
-> VSType r
-> [MSParameter r]
-> MSBody r
-> SMethod r
G.method
  getMethod :: SVariable (LoggingFor lang) -> SMethod (LoggingFor lang)
getMethod = (VS (lang (Variable lang)) -> MS (lang (Method lang)))
-> VS (LoggingFor lang (Variable lang))
-> MS (LoggingFor lang (Method lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Variable lang)) -> MS (lang (Method lang))
forall (r :: * -> *). OOMethodSym r => SVariable r -> SMethod r
G.getMethod
  setMethod :: SVariable (LoggingFor lang) -> SMethod (LoggingFor lang)
setMethod = (VS (lang (Variable lang)) -> MS (lang (Method lang)))
-> VS (LoggingFor lang (Variable lang))
-> MS (LoggingFor lang (Method lang))
forall u l. LiftLogging u l => u -> l
liftLogging VS (lang (Variable lang)) -> MS (lang (Method lang))
forall (r :: * -> *). OOMethodSym r => SVariable r -> SMethod r
G.setMethod
  constructor :: [MSParameter (LoggingFor lang)]
-> Initializers (LoggingFor lang)
-> MSBody (LoggingFor lang)
-> SMethod (LoggingFor lang)
constructor = ([MS (lang (Parameter lang))]
 -> [(VS (lang (Variable lang)), VS (lang (Value lang)))]
 -> MS (lang (Body lang))
 -> MS (lang (Method lang)))
-> [MS (LoggingFor lang (Parameter lang))]
-> [(VS (LoggingFor lang (Variable lang)),
     VS (LoggingFor lang (Value lang)))]
-> MS (LoggingFor lang (Body lang))
-> MS (LoggingFor lang (Method lang))
forall u l. LiftLogging u l => u -> l
liftLogging [MS (lang (Parameter lang))]
-> [(VS (lang (Variable lang)), VS (lang (Value lang)))]
-> MS (lang (Body lang))
-> MS (lang (Method lang))
forall (r :: * -> *).
OOMethodSym r =>
[MSParameter r] -> Initializers r -> MSBody r -> SMethod r
G.constructor
  inOutMethod :: String
-> LoggingFor lang (Visibility (LoggingFor lang))
-> LoggingFor lang (Attachment (LoggingFor lang))
-> InOutFunc (LoggingFor lang)
inOutMethod = (String
 -> lang (Visibility lang)
 -> lang (Attachment lang)
 -> [VS (lang (Variable lang))]
 -> [VS (lang (Variable lang))]
 -> [VS (lang (Variable lang))]
 -> MS (lang (Body lang))
 -> MS (lang (Method lang)))
-> String
-> LoggingFor lang (Visibility lang)
-> LoggingFor lang (Attachment lang)
-> [VS (LoggingFor lang (Variable lang))]
-> [VS (LoggingFor lang (Variable lang))]
-> [VS (LoggingFor lang (Variable lang))]
-> MS (LoggingFor lang (Body lang))
-> MS (LoggingFor lang (Method lang))
forall u l. LiftLogging u l => u -> l
liftLogging String
-> lang (Visibility lang)
-> lang (Attachment lang)
-> [VS (lang (Variable lang))]
-> [VS (lang (Variable lang))]
-> [VS (lang (Variable lang))]
-> MS (lang (Body lang))
-> MS (lang (Method lang))
forall (r :: * -> *).
OOMethodSym r =>
String -> r (Visibility r) -> r (Attachment r) -> InOutFunc r
G.inOutMethod
  docInOutMethod :: String
-> LoggingFor lang (Visibility (LoggingFor lang))
-> LoggingFor lang (Attachment (LoggingFor lang))
-> DocInOutFunc (LoggingFor lang)
docInOutMethod = (String
 -> lang (Visibility lang)
 -> lang (Attachment lang)
 -> String
 -> [(String, VS (lang (Variable lang)))]
 -> [(String, VS (lang (Variable lang)))]
 -> [(String, VS (lang (Variable lang)))]
 -> MS (lang (Body lang))
 -> MS (lang (Method lang)))
-> String
-> LoggingFor lang (Visibility lang)
-> LoggingFor lang (Attachment lang)
-> String
-> [(String, VS (LoggingFor lang (Variable lang)))]
-> [(String, VS (LoggingFor lang (Variable lang)))]
-> [(String, VS (LoggingFor lang (Variable lang)))]
-> MS (LoggingFor lang (Body lang))
-> MS (LoggingFor lang (Method lang))
forall u l. LiftLogging u l => u -> l
liftLogging String
-> lang (Visibility lang)
-> lang (Attachment lang)
-> String
-> [(String, VS (lang (Variable lang)))]
-> [(String, VS (lang (Variable lang)))]
-> [(String, VS (lang (Variable lang)))]
-> MS (lang (Body lang))
-> MS (lang (Method lang))
forall (r :: * -> *).
OOMethodSym r =>
String -> r (Visibility r) -> r (Attachment r) -> DocInOutFunc r
G.docInOutMethod

instance (G.StateVarSym lang) => G.StateVarSym (LoggingFor lang) where
  type StateVar (LoggingFor lang) = G.StateVar lang
  stateVar :: LoggingFor lang (Visibility (LoggingFor lang))
-> LoggingFor lang (Attachment (LoggingFor lang))
-> SVariable (LoggingFor lang)
-> CSStateVar (LoggingFor lang)
stateVar = (lang (Visibility lang)
 -> lang (Attachment lang)
 -> VS (lang (Variable lang))
 -> CS (lang (StateVar lang)))
-> LoggingFor lang (Visibility lang)
-> LoggingFor lang (Attachment lang)
-> VS (LoggingFor lang (Variable lang))
-> CS (LoggingFor lang (StateVar lang))
forall u l. LiftLogging u l => u -> l
liftLogging lang (Visibility lang)
-> lang (Attachment lang)
-> VS (lang (Variable lang))
-> CS (lang (StateVar lang))
forall (r :: * -> *).
StateVarSym r =>
r (Visibility r) -> r (Attachment r) -> SVariable r -> CSStateVar r
G.stateVar
  stateVarDef :: LoggingFor lang (Visibility (LoggingFor lang))
-> LoggingFor lang (Attachment (LoggingFor lang))
-> SVariable (LoggingFor lang)
-> SValue (LoggingFor lang)
-> CSStateVar (LoggingFor lang)
stateVarDef = (lang (Visibility lang)
 -> lang (Attachment lang)
 -> VS (lang (Variable lang))
 -> VS (lang (Value lang))
 -> CS (lang (StateVar lang)))
-> LoggingFor lang (Visibility lang)
-> LoggingFor lang (Attachment lang)
-> VS (LoggingFor lang (Variable lang))
-> VS (LoggingFor lang (Value lang))
-> CS (LoggingFor lang (StateVar lang))
forall u l. LiftLogging u l => u -> l
liftLogging lang (Visibility lang)
-> lang (Attachment lang)
-> VS (lang (Variable lang))
-> VS (lang (Value lang))
-> CS (lang (StateVar lang))
forall (r :: * -> *).
StateVarSym r =>
r (Visibility r)
-> r (Attachment r) -> SVariable r -> SValue r -> CSStateVar r
G.stateVarDef
  constVar :: LoggingFor lang (Visibility (LoggingFor lang))
-> SVariable (LoggingFor lang)
-> SValue (LoggingFor lang)
-> CSStateVar (LoggingFor lang)
constVar = (lang (Visibility lang)
 -> VS (lang (Variable lang))
 -> VS (lang (Value lang))
 -> CS (lang (StateVar lang)))
-> LoggingFor lang (Visibility lang)
-> VS (LoggingFor lang (Variable lang))
-> VS (LoggingFor lang (Value lang))
-> CS (LoggingFor lang (StateVar lang))
forall u l. LiftLogging u l => u -> l
liftLogging lang (Visibility lang)
-> VS (lang (Variable lang))
-> VS (lang (Value lang))
-> CS (lang (StateVar lang))
forall (r :: * -> *).
StateVarSym r =>
r (Visibility r) -> SVariable r -> SValue r -> CSStateVar r
G.constVar

instance (G.ClassSym lang) => G.ClassSym (LoggingFor lang) where
  type Class (LoggingFor lang) = G.Class lang
  buildClass :: Maybe String
-> [CSStateVar (LoggingFor lang)]
-> [SMethod (LoggingFor lang)]
-> [SMethod (LoggingFor lang)]
-> SClass (LoggingFor lang)
buildClass = (Maybe String
 -> [CS (lang (StateVar lang))]
 -> [MS (lang (Method lang))]
 -> [MS (lang (Method lang))]
 -> CS (lang (Class lang)))
-> Maybe String
-> [CS (LoggingFor lang (StateVar lang))]
-> [MS (LoggingFor lang (Method lang))]
-> [MS (LoggingFor lang (Method lang))]
-> CS (LoggingFor lang (Class lang))
forall u l. LiftLogging u l => u -> l
liftLogging Maybe String
-> [CS (lang (StateVar lang))]
-> [MS (lang (Method lang))]
-> [MS (lang (Method lang))]
-> CS (lang (Class lang))
forall (r :: * -> *).
ClassSym r =>
Maybe String
-> [CSStateVar r] -> [SMethod r] -> [SMethod r] -> SClass r
G.buildClass
  extraClass :: String
-> Maybe String
-> [CSStateVar (LoggingFor lang)]
-> [SMethod (LoggingFor lang)]
-> [SMethod (LoggingFor lang)]
-> SClass (LoggingFor lang)
extraClass = (String
 -> Maybe String
 -> [CS (lang (StateVar lang))]
 -> [MS (lang (Method lang))]
 -> [MS (lang (Method lang))]
 -> CS (lang (Class lang)))
-> String
-> Maybe String
-> [CS (LoggingFor lang (StateVar lang))]
-> [MS (LoggingFor lang (Method lang))]
-> [MS (LoggingFor lang (Method lang))]
-> CS (LoggingFor lang (Class lang))
forall u l. LiftLogging u l => u -> l
liftLogging String
-> Maybe String
-> [CS (lang (StateVar lang))]
-> [MS (lang (Method lang))]
-> [MS (lang (Method lang))]
-> CS (lang (Class lang))
forall (r :: * -> *).
ClassSym r =>
String
-> Maybe String
-> [CSStateVar r]
-> [SMethod r]
-> [SMethod r]
-> SClass r
G.extraClass
  implementingClass :: String
-> [String]
-> [CSStateVar (LoggingFor lang)]
-> [SMethod (LoggingFor lang)]
-> [SMethod (LoggingFor lang)]
-> SClass (LoggingFor lang)
implementingClass = (String
 -> [String]
 -> [CS (lang (StateVar lang))]
 -> [MS (lang (Method lang))]
 -> [MS (lang (Method lang))]
 -> CS (lang (Class lang)))
-> String
-> [String]
-> [CS (LoggingFor lang (StateVar lang))]
-> [MS (LoggingFor lang (Method lang))]
-> [MS (LoggingFor lang (Method lang))]
-> CS (LoggingFor lang (Class lang))
forall u l. LiftLogging u l => u -> l
liftLogging String
-> [String]
-> [CS (lang (StateVar lang))]
-> [MS (lang (Method lang))]
-> [MS (lang (Method lang))]
-> CS (lang (Class lang))
forall (r :: * -> *).
ClassSym r =>
String
-> [String]
-> [CSStateVar r]
-> [SMethod r]
-> [SMethod r]
-> SClass r
G.implementingClass
  docClass :: String -> SClass (LoggingFor lang) -> SClass (LoggingFor lang)
docClass = (String -> CS (lang (Class lang)) -> CS (lang (Class lang)))
-> String
-> CS (LoggingFor lang (Class lang))
-> CS (LoggingFor lang (Class lang))
forall u l. LiftLogging u l => u -> l
liftLogging String -> CS (lang (Class lang)) -> CS (lang (Class lang))
forall (r :: * -> *). ClassSym r => String -> SClass r -> SClass r
G.docClass

instance (G.ModuleSym lang) => G.ModuleSym (LoggingFor lang) where
  type Module (LoggingFor lang) = G.Module lang
  buildModule :: String
-> [String]
-> [SMethod (LoggingFor lang)]
-> [SClass (LoggingFor lang)]
-> FSModule (LoggingFor lang)
buildModule = (String
 -> [String]
 -> [MS (lang (Method lang))]
 -> [CS (lang (Class lang))]
 -> FS (lang (Module lang)))
-> String
-> [String]
-> [MS (LoggingFor lang (Method lang))]
-> [CS (LoggingFor lang (Class lang))]
-> FS (LoggingFor lang (Module lang))
forall u l. LiftLogging u l => u -> l
liftLogging String
-> [String]
-> [MS (lang (Method lang))]
-> [CS (lang (Class lang))]
-> FS (lang (Module lang))
forall (r :: * -> *).
ModuleSym r =>
String -> [String] -> [SMethod r] -> [SClass r] -> FSModule r
G.buildModule

instance (G.FileSym lang) => G.FileSym (LoggingFor lang) where
  type File (LoggingFor lang) = G.File lang
  fileDoc :: FSModule (LoggingFor lang) -> SFile (LoggingFor lang)
fileDoc = (FS (lang (Module lang)) -> FS (lang (File lang)))
-> FS (LoggingFor lang (Module lang))
-> FS (LoggingFor lang (File lang))
forall u l. LiftLogging u l => u -> l
liftLogging FS (lang (Module lang)) -> FS (lang (File lang))
forall (r :: * -> *). FileSym r => FSModule r -> SFile r
G.fileDoc
  docMod :: String
-> String
-> [String]
-> String
-> SFile (LoggingFor lang)
-> SFile (LoggingFor lang)
docMod = (String
 -> String
 -> [String]
 -> String
 -> FS (lang (File lang))
 -> FS (lang (File lang)))
-> String
-> String
-> [String]
-> String
-> FS (LoggingFor lang (File lang))
-> FS (LoggingFor lang (File lang))
forall u l. LiftLogging u l => u -> l
liftLogging String
-> String
-> [String]
-> String
-> FS (lang (File lang))
-> FS (lang (File lang))
forall (r :: * -> *).
FileSym r =>
String -> String -> [String] -> String -> SFile r -> SFile r
G.docMod

instance (G.ProgramSym lang) => G.ProgramSym (LoggingFor lang) where
  type Program (LoggingFor lang) = G.Program lang
  prog :: String
-> String
-> [SFile (LoggingFor lang)]
-> GSProgram (LoggingFor lang)
prog = (String
 -> String -> [FS (lang (File lang))] -> GS (lang (Program lang)))
-> String
-> String
-> [FS (LoggingFor lang (File lang))]
-> GS (LoggingFor lang (Program lang))
forall u l. LiftLogging u l => u -> l
liftLogging String
-> String -> [FS (lang (File lang))] -> GS (lang (Program lang))
forall (r :: * -> *).
ProgramSym r =>
String -> String -> [SFile r] -> GSProgram r
G.prog

instance (G.StrategyPattern lang) => G.StrategyPattern (LoggingFor lang) where
  runStrategy :: String
-> [(String, MSBody (LoggingFor lang))]
-> Maybe (SValue (LoggingFor lang))
-> Maybe (SVariable (LoggingFor lang))
-> MSBlock (LoggingFor lang)
runStrategy = (String
 -> [(String, MS (lang (Body lang)))]
 -> Maybe (VS (lang (Value lang)))
 -> Maybe (VS (lang (Variable lang)))
 -> MS (lang (Block lang)))
-> String
-> [(String, MS (LoggingFor lang (Body lang)))]
-> Maybe (VS (LoggingFor lang (Value lang)))
-> Maybe (VS (LoggingFor lang (Variable lang)))
-> MS (LoggingFor lang (Block lang))
forall u l. LiftLogging u l => u -> l
liftLogging String
-> [(String, MS (lang (Body lang)))]
-> Maybe (VS (lang (Value lang)))
-> Maybe (VS (lang (Variable lang)))
-> MS (lang (Block lang))
forall (r :: * -> *).
StrategyPattern r =>
String
-> [(String, MSBody r)]
-> Maybe (SValue r)
-> Maybe (SVariable r)
-> MSBlock r
G.runStrategy