{-# LANGUAGE TypeFamilies #-}
module Drasil.GOOL.LanguageRenderer.CppRenderer (
CppSrcCode(..), CppHdrCode(..), CppCode(..), unCPPC, cppName, cppVersion
) where
import Drasil.FileHandling.Legacy (blank, indent, indentList)
import Drasil.Shared.CodeType (CodeType(..))
import Drasil.Shared.InterfaceCommon (UnRepr(..), Label, Body, Block, Variable,
Value, NamedArgs, BodySym(..), oneLiner, BlockSym(..), TypeSym(..),
TypeElim(..), getTypeString, VariableSym(..), VisibilitySym(..),
VariableElim(..), ValueSym(..), Argument(..), Literal(..), MathConstant(..),
VariableValue(..), CommandLineArgs(..), NumericExpression(..),
BooleanExpression(..), Comparison(..), ValueExpression(..), funcApp,
extFuncApp, IndexTranslator(..), Reference(..), Array(..), List(..),
ListStatement(..), Set(..), InternalList(..), EmptyStatement(..),
MultiStatement(..), ValueStatement(..), AssignStatement(..), DeclStatement(..),
PrintConsole(..), ReadConsole(..), FileHandling(..), PrintFile(..),
ReadFile(..), StringStatement(..), FuncAppStatement(..), BinderSym(..),
CommentStatement(..), ControlStatement(..), ScopeSym(..), ParameterSym(..),
MethodSym(..), convScope, BinderElim(..), (&=))
import Drasil.GOOL.InterfaceGOOL (CSStateVar, OOProg, Class, ProgramSym(..),
FileSym(..), ModuleSym(..), ClassSym(..), OOTypeSym(..), OOVariableSym(..),
SelfSym(..), AttachmentSym(..), StateVarSym(..), OOValueExpression(..),
selfMethodCall, InternalValueExp(..), objMethodCall, OOFunctionSym(..), ($.),
GetSet(..), OODeclStatement(..), OOFuncAppStatement(..), ObserverPattern(..),
StrategyPattern(..), OOMethodSym(..), convTypeOO)
import Drasil.GOOL.Renderers (renderType, renderParam,)
import Drasil.Shared.RendererClassesCommon (CommonRenderSym, ImportSym(..),
RenderBody(..), BodyElim, RenderBlock(..), BlockElim, RenderType(..),
UnaryOpSym(..), BinaryOpSym(..), OpElim(uOpPrec, bOpPrec), RenderVariable(..),
InternalVarElim(variableBind), InternalBinderElim(..), RenderValue(..),
ValueElim(valuePrec, valueInt), InternalListFunc(..), RenderFunction(..),
FunctionElim(functionType), InternalAssignStmt(..), InternalIOStmt(..),
InternalControlStmt(..), RenderStatement(..), StatementElim(statementTerm),
RenderVisibility(..), VisibilityElim, MethodTypeSym(..), RenderParam(..),
ParamElim(parameterName, parameterType), RenderMethod(..), MethodElim,
BlockCommentSym(..), BlockCommentElim, ScopeElim(..))
import qualified Drasil.Shared.RendererClassesCommon as RC (import', body, block,
uOp, bOp, variable, value, function, statement, visibility, parameter,
method, blockComment', InternalBinderElim(binderElim), RenderValue(call))
import Drasil.GOOL.RendererClassesOO (OORenderSym, RenderFile(..),
PermElim(binding), InternalGetSet(..), OOMethodTypeSym(..),
OORenderMethod(..), StateVarElim, ParentSpec, RenderClass(..), ClassElim,
RenderMod(..), ModuleElim)
import qualified Drasil.GOOL.RendererClassesOO as RC (perm, stateVar, class',
module')
import Drasil.Shared.LanguageRenderer (addExt, classDec, blockCmtStart,
blockCmtEnd, docCmtStart, bodyStart, bodyEnd, endStatement, commentStart,
returnLabel, elseIfLabel, tryLabel, catchLabel, throwLabel, array', constDec',
listSep', argc, argv, constDec, mainFunc, containing, functionDox, valueList,
parameterList, appendToBody, surroundBody, getterName, setterName)
import qualified Drasil.Shared.LanguageRenderer as R (this', this, sqrt, fabs,
log10, log, exp, sin, cos, tan, asin, acos, atan, floor, ceil, pow, multiStmt,
body, stateVar, constVar, cast, castObj, classLevel, instanceLevel,
break, continue, private, public, blockCmt, docCmt, addComments, commentedMod,
commentedItem)
import Drasil.Shared.LanguageRenderer.Constructors (mkStmt, mkStmtNoEnd,
mkStateVal, mkVal, mkStateVar, mkVar, typeFromData, VSOp, mkOp, unOpPrec,
powerPrec, unExpr, unExpr', typeUnExpr, binExpr, binExpr', typeBinExpr)
import qualified Drasil.Shared.LanguageRenderer.LanguagePolymorphic as G (
multiBody, block, multiBlock, obj, negateOp, csc, sec, cot, equalOp,
notEqualOp, greaterOp, greaterEqualOp, lessOp, lessEqualOp, plusOp, minusOp,
multOp, divideOp, moduloOp, var, classVar, instanceVarAccess, arrayElem,
litChar, litDouble, litInt, litString, valueOf, arg, objAccess, objMethodCall,
funcAppMixedArgs, newObjMixedArgs, lambda, func, get, set, listAccess, getFunc,
setFunc, stmt, loopStmt, emptyStmt, assign, subAssign, objDecNew, print,
closeFile, returnStmt, valStmt, comment, throw, ifCond, tryCatch, construct,
param, method, getMethod, setMethod, function, buildClass, implementingClass,
commentedClass, modFromData, fileDoc, fileFromData, defaultOptSpace, local)
import Drasil.Shared.LanguageRenderer.LanguagePolymorphic (classVarAccessCheck)
import qualified Drasil.Shared.LanguageRenderer.CommonPseudoOO as CP (int,
constructor, doxFunc, doxClass, doxMod, buildModule, litArray,
call', listAccessFunc', containsInt, string, docInOutFunc, extraClass,
intToIndex, indexToInt, global, setMethodCall, destructorError)
import qualified Drasil.GOOL.LanguageRenderer.CommonGOOL as CG (constDecDef,
listAppend, innerType)
import qualified Drasil.Shared.LanguageRenderer.CLike as C (charRender, float,
double, char, listType, void, notOp, andOp, orOp, litTrue, litFalse, litFloat,
inlineIf, libFuncAppMixedArgs, libNewObjMixedArgs, listSize, increment,
increment1, decrement1, varDec, setType, varDecDef, listDec, extObjDecNew,
switch, for, while, multiAssignError, multiReturnError, multiTypeError)
import qualified Drasil.Shared.LanguageRenderer.Macros as M (runStrategy,
listSlice, stringListVals, stringListLists, forRange, notifyObservers)
import Drasil.Shared.AST (Terminator(..), VisibilityTag(..), AttachmentTag(..),
onAttachment, AttachmentData(..), ad, FileType(..), FileData(..), fileD,
FuncData(..), fd, ModData(..), md, updateMod, OpData(..), ParamData(..), pd,
ProgData(..), progD, emptyProg, StateVarData(..), svd, TypeData(..),
ValData(..), vd, VarData(..), vard, BinderD(..), bindFormD, ScopeData,
Statement)
import Drasil.Shared.Classes (Pair(..))
import Drasil.Shared.Helpers (angles, doubleQuotedText, hicat, vibcat,
emptyIfEmpty, toCode, toState, onCodeValue, onStateValue, on2CodeValues,
on2StateValues, on3CodeValues, on3StateValues, onCodeList, onStateList,
on2StateLists, on2StateWrapped)
import Drasil.Shared.State (CS, MS, VS, lensGStoFS, lensFStoCS, lensFStoMS,
lensCStoMS, lensCStoVS, lensCStoFS, lensMStoVS, lensVStoMS, modifyReturn,
revFiles, addLangImport, addLangImportVS, getLangImports, getLibImports,
addModuleImportVS, getModuleImports, addHeaderLangImport, getHeaderLangImports,
addHeaderModImport, getHeaderLibImports, getHeaderModImports, addDefine,
getDefines, addHeaderDefine, getHeaderDefines, addUsing, getUsing,
addHeaderUsing, getHeaderUsing, setFileType, getModuleName, setModuleName,
setClassName, getClassName, setCurrMain, getCurrMain, getClassMap,
setVisibility, getVisibility, setCurrMainFunc, getCurrMainFunc, useVarName,
setVarScope, getVarScope)
import Prelude hiding (break,print,(<>),sin,cos,tan,floor,pi,log,exp,mod,max)
import qualified Prelude as P ((<>))
import Control.Lens.Zoom (zoom)
import Control.Monad (join)
import Control.Monad.State (State, modify)
import Data.Composition ((.:))
import Data.List (sort)
import qualified Data.Map as Map (lookup)
import Text.PrettyPrint.HughesPJ (Doc, text, (<>), (<+>), ($$), hcat, braces,
parens, empty, equals, vcat, lbrace, rbrace, colon, isEmpty, quotes, semi, render)
import qualified Drasil.Shared.LanguageRenderer.Common as CS
cppHdrExt, cppSrcExt :: String
cppHdrExt :: String
cppHdrExt = String
"hpp"
cppSrcExt :: String
cppSrcExt = String
"cpp"
data CppCode x y a = CPPC {forall {k} (x :: k -> *) (y :: k -> *) (a :: k).
CppCode x y a -> x a
src :: x a, forall {k} (x :: k -> *) (y :: k -> *) (a :: k).
CppCode x y a -> y a
hdr :: y a}
instance Pair CppCode where
pfst :: forall (x :: k -> *) (y :: k -> *) (a :: k). CppCode x y a -> x a
pfst (CPPC x a
xa y a
_) = x a
xa
psnd :: forall (x :: k -> *) (y :: k -> *) (b :: k). CppCode x y b -> y b
psnd (CPPC x b
_ y b
yb) = y b
yb
pair :: forall (x :: k -> *) (a :: k) (y :: k -> *).
x a -> y a -> CppCode x y a
pair = x a -> y a -> CppCode x y a
forall {k} (x :: k -> *) (y :: k -> *) (a :: k).
x a -> y a -> CppCode x y a
CPPC
unCPPC :: CppCode CppSrcCode CppHdrCode a -> a
unCPPC :: forall a. CppCode CppSrcCode CppHdrCode a -> a
unCPPC (CPPC (CPPSC a
a) CppHdrCode a
_) = a
a
hdrToSrc :: CppHdrCode a -> CppSrcCode a
hdrToSrc :: forall a. CppHdrCode a -> CppSrcCode a
hdrToSrc (CPPHC a
a) = a -> CppSrcCode a
forall a. a -> CppSrcCode a
CPPSC a
a
instance (Pair p) => OOProg (p CppSrcCode CppHdrCode) ProgData FileData ModData Class StateVarData MethodData AttachmentData (Doc, VisibilityTag) ParamData Body Block Statement Variable ScopeData Value BinderD TypeData
instance (Pair p) => ProgramSym (p CppSrcCode CppHdrCode) ProgData FileData where
prog :: String
-> String
-> [FS (p CppSrcCode CppHdrCode FileData)]
-> GSProgram (p CppSrcCode CppHdrCode) ProgData
prog String
n String
st [FS (p CppSrcCode CppHdrCode FileData)]
mods = do
m <- (FS (p CppSrcCode CppHdrCode FileData)
-> StateT GOOLState Identity (p CppSrcCode CppHdrCode FileData))
-> [FS (p CppSrcCode CppHdrCode FileData)]
-> StateT GOOLState Identity [p CppSrcCode CppHdrCode FileData]
forall (t :: * -> *) (m :: * -> *) a b.
(Traversable t, Monad m) =>
(a -> m b) -> t a -> m (t b)
forall (m :: * -> *) a b. Monad m => (a -> m b) -> [a] -> m [b]
mapM (LensLike'
(Zoomed
(StateT FileState Identity) (p CppSrcCode CppHdrCode FileData))
GOOLState
FileState
-> FS (p CppSrcCode CppHdrCode FileData)
-> StateT GOOLState Identity (p CppSrcCode CppHdrCode FileData)
forall c.
LensLike'
(Zoomed (StateT FileState Identity) c) GOOLState FileState
-> StateT FileState Identity c -> StateT GOOLState 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) (p CppSrcCode CppHdrCode FileData))
GOOLState
FileState
(FileState
-> Focusing Identity (p CppSrcCode CppHdrCode FileData) FileState)
-> GOOLState
-> Focusing Identity (p CppSrcCode CppHdrCode FileData) GOOLState
Lens' GOOLState FileState
lensGStoFS) [FS (p CppSrcCode CppHdrCode FileData)]
mods
let fm = p CppSrcCode CppHdrCode FileData -> CppSrcCode FileData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst (p CppSrcCode CppHdrCode FileData -> CppSrcCode FileData)
-> [p CppSrcCode CppHdrCode FileData] -> [CppSrcCode FileData]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [p CppSrcCode CppHdrCode FileData]
m
sm = CppHdrCode FileData -> CppSrcCode FileData
forall a. CppHdrCode a -> CppSrcCode a
hdrToSrc (CppHdrCode FileData -> CppSrcCode FileData)
-> (p CppSrcCode CppHdrCode FileData -> CppHdrCode FileData)
-> p CppSrcCode CppHdrCode FileData
-> CppSrcCode FileData
forall b c a. (b -> c) -> (a -> b) -> a -> c
. p CppSrcCode CppHdrCode FileData -> CppHdrCode FileData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd (p CppSrcCode CppHdrCode FileData -> CppSrcCode FileData)
-> [p CppSrcCode CppHdrCode FileData] -> [CppSrcCode FileData]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [p CppSrcCode CppHdrCode FileData]
m
p1 <- prog n st $ fmap pure sm P.<> fmap pure fm
modify revFiles
pure $ pair p1 (toCode emptyProg)
instance (Pair p) => CommonRenderSym (p CppSrcCode CppHdrCode) MethodData (Doc, VisibilityTag) ParamData Body Block Statement Variable ScopeData Value BinderD TypeData
instance (Pair p) => UnRepr (p CppSrcCode CppHdrCode) contents where
unRepr :: p CppSrcCode CppHdrCode contents -> contents
unRepr p CppSrcCode CppHdrCode contents
c = CppSrcCode contents -> contents
forall a. CppSrcCode a -> a
unCPPSC (CppSrcCode contents -> contents)
-> CppSrcCode contents -> contents
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode contents -> CppSrcCode contents
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode contents
c
instance (Pair p) => FileSym (p CppSrcCode CppHdrCode) FileData ModData where
fileDoc :: FS (p CppSrcCode CppHdrCode ModData)
-> FS (p CppSrcCode CppHdrCode FileData)
fileDoc = (SrcState FileState ModData -> FS (CppSrcCode FileData))
-> (HdrState FileState ModData -> HdrState FileState FileData)
-> FS (p CppSrcCode CppHdrCode ModData)
-> FS (p CppSrcCode CppHdrCode FileData)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 SrcState FileState ModData -> FS (CppSrcCode FileData)
forall {k} (r :: k -> *) (file :: k) (mod :: k).
FileSym r file mod =>
FS (r mod) -> FS (r file)
fileDoc HdrState FileState ModData -> HdrState FileState FileData
forall {k} (r :: k -> *) (file :: k) (mod :: k).
FileSym r file mod =>
FS (r mod) -> FS (r file)
fileDoc
docMod :: String
-> String
-> [String]
-> String
-> FS (p CppSrcCode CppHdrCode FileData)
-> FS (p CppSrcCode CppHdrCode FileData)
docMod String
d String
wm [String]
a String
dt = (FS (CppSrcCode FileData) -> FS (CppSrcCode FileData))
-> (HdrState FileState FileData -> HdrState FileState FileData)
-> FS (p CppSrcCode CppHdrCode FileData)
-> FS (p CppSrcCode CppHdrCode FileData)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 (String
-> String
-> [String]
-> String
-> FS (CppSrcCode FileData)
-> FS (CppSrcCode FileData)
forall {k} (r :: k -> *) (file :: k) (mod :: k).
FileSym r file mod =>
String
-> String -> [String] -> String -> FS (r file) -> FS (r file)
docMod String
d String
wm [String]
a String
dt) (String
-> String
-> [String]
-> String
-> HdrState FileState FileData
-> HdrState FileState FileData
forall {k} (r :: k -> *) (file :: k) (mod :: k).
FileSym r file mod =>
String
-> String -> [String] -> String -> FS (r file) -> FS (r file)
docMod String
d String
wm [String]
a String
dt)
instance (Pair p) => RenderFile (p CppSrcCode CppHdrCode) FileData ModData where
top :: p CppSrcCode CppHdrCode ModData -> p CppSrcCode CppHdrCode Doc
top p CppSrcCode CppHdrCode ModData
m = CppSrcCode Doc -> CppHdrCode Doc -> p CppSrcCode CppHdrCode Doc
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair (CppSrcCode ModData -> CppSrcCode Doc
forall (r :: * -> *) file mod.
RenderFile r file mod =>
r mod -> r Doc
top (CppSrcCode ModData -> CppSrcCode Doc)
-> CppSrcCode ModData -> CppSrcCode Doc
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode ModData -> CppSrcCode ModData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode ModData
m) (CppHdrCode ModData -> CppHdrCode Doc
forall (r :: * -> *) file mod.
RenderFile r file mod =>
r mod -> r Doc
top (CppHdrCode ModData -> CppHdrCode Doc)
-> CppHdrCode ModData -> CppHdrCode Doc
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode ModData -> CppHdrCode ModData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd p CppSrcCode CppHdrCode ModData
m)
bottom :: p CppSrcCode CppHdrCode Doc
bottom = CppSrcCode Doc -> CppHdrCode Doc -> p CppSrcCode CppHdrCode Doc
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair CppSrcCode Doc
forall (r :: * -> *) file mod. RenderFile r file mod => r Doc
bottom CppHdrCode Doc
forall (r :: * -> *) file mod. RenderFile r file mod => r Doc
bottom
commentedMod :: FS (p CppSrcCode CppHdrCode FileData)
-> FS (p CppSrcCode CppHdrCode Doc)
-> FS (p CppSrcCode CppHdrCode FileData)
commentedMod = (FS (CppSrcCode FileData)
-> SrcState FileState Doc -> FS (CppSrcCode FileData))
-> (HdrState FileState FileData
-> HdrState FileState Doc -> HdrState FileState FileData)
-> FS (p CppSrcCode CppHdrCode FileData)
-> FS (p CppSrcCode CppHdrCode Doc)
-> FS (p CppSrcCode CppHdrCode FileData)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 FS (CppSrcCode FileData)
-> SrcState FileState Doc -> FS (CppSrcCode FileData)
forall (r :: * -> *) file mod.
RenderFile r file mod =>
FS (r file) -> FS (r Doc) -> FS (r file)
commentedMod HdrState FileState FileData
-> HdrState FileState Doc -> HdrState FileState FileData
forall (r :: * -> *) file mod.
RenderFile r file mod =>
FS (r file) -> FS (r Doc) -> FS (r file)
commentedMod
fileFromData :: String
-> FS (p CppSrcCode CppHdrCode ModData)
-> FS (p CppSrcCode CppHdrCode FileData)
fileFromData String
fp = (SrcState FileState ModData -> FS (CppSrcCode FileData))
-> (HdrState FileState ModData -> HdrState FileState FileData)
-> FS (p CppSrcCode CppHdrCode ModData)
-> FS (p CppSrcCode CppHdrCode FileData)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 (String -> SrcState FileState ModData -> FS (CppSrcCode FileData)
forall (r :: * -> *) file mod.
RenderFile r file mod =>
String -> FS (r mod) -> FS (r file)
fileFromData String
fp) (String -> HdrState FileState ModData -> HdrState FileState FileData
forall (r :: * -> *) file mod.
RenderFile r file mod =>
String -> FS (r mod) -> FS (r file)
fileFromData String
fp)
instance (Pair p) => ImportSym (p CppSrcCode CppHdrCode) where
langImport :: String -> p CppSrcCode CppHdrCode Doc
langImport String
n = CppSrcCode Doc -> CppHdrCode Doc -> p CppSrcCode CppHdrCode Doc
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair (String -> CppSrcCode Doc
forall (r :: * -> *). ImportSym r => String -> r Doc
langImport String
n) (String -> CppHdrCode Doc
forall (r :: * -> *). ImportSym r => String -> r Doc
langImport String
n)
modImport :: String -> p CppSrcCode CppHdrCode Doc
modImport String
n = CppSrcCode Doc -> CppHdrCode Doc -> p CppSrcCode CppHdrCode Doc
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair (String -> CppSrcCode Doc
forall (r :: * -> *). ImportSym r => String -> r Doc
modImport String
n) (String -> CppHdrCode Doc
forall (r :: * -> *). ImportSym r => String -> r Doc
modImport String
n)
instance (Pair p) => AttachmentSym (p CppSrcCode CppHdrCode) AttachmentData where
classLevel :: p CppSrcCode CppHdrCode AttachmentData
classLevel = CppSrcCode AttachmentData
-> CppHdrCode AttachmentData
-> p CppSrcCode CppHdrCode AttachmentData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair CppSrcCode AttachmentData
forall {k} (r :: k -> *) (attch :: k).
AttachmentSym r attch =>
r attch
classLevel CppHdrCode AttachmentData
forall {k} (r :: k -> *) (attch :: k).
AttachmentSym r attch =>
r attch
classLevel
instanceLevel :: p CppSrcCode CppHdrCode AttachmentData
instanceLevel = CppSrcCode AttachmentData
-> CppHdrCode AttachmentData
-> p CppSrcCode CppHdrCode AttachmentData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair CppSrcCode AttachmentData
forall {k} (r :: k -> *) (attch :: k).
AttachmentSym r attch =>
r attch
instanceLevel CppHdrCode AttachmentData
forall {k} (r :: k -> *) (attch :: k).
AttachmentSym r attch =>
r attch
instanceLevel
instance (Pair p) => PermElim (p CppSrcCode CppHdrCode) AttachmentData where
perm :: p CppSrcCode CppHdrCode AttachmentData -> Doc
perm p CppSrcCode CppHdrCode AttachmentData
p = CppSrcCode AttachmentData -> Doc
forall {k} (r :: k -> *) (attch :: k).
PermElim r attch =>
r attch -> Doc
RC.perm (CppSrcCode AttachmentData -> Doc)
-> CppSrcCode AttachmentData -> Doc
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode AttachmentData -> CppSrcCode AttachmentData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode AttachmentData
p
binding :: p CppSrcCode CppHdrCode AttachmentData -> AttachmentTag
binding p CppSrcCode CppHdrCode AttachmentData
p = CppSrcCode AttachmentData -> AttachmentTag
forall {k} (r :: k -> *) (attch :: k).
PermElim r attch =>
r attch -> AttachmentTag
binding (CppSrcCode AttachmentData -> AttachmentTag)
-> CppSrcCode AttachmentData -> AttachmentTag
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode AttachmentData -> CppSrcCode AttachmentData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode AttachmentData
p
instance (Pair p) => BodySym (p CppSrcCode CppHdrCode) Body Block where
body :: [MS (p CppSrcCode CppHdrCode Doc)]
-> MS (p CppSrcCode CppHdrCode Doc)
body = ([SrcState MethodState Doc] -> SrcState MethodState Doc)
-> ([HdrState MethodState Doc] -> HdrState MethodState Doc)
-> [MS (p CppSrcCode CppHdrCode Doc)]
-> MS (p CppSrcCode CppHdrCode Doc)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
([SrcState r a] -> SrcState s b)
-> ([HdrState r a] -> HdrState s b)
-> [PairState s p a]
-> PairState s p b
pair1List [SrcState MethodState Doc] -> SrcState MethodState Doc
forall {k} (r :: k -> *) (bod :: k) (block :: k).
BodySym r bod block =>
[MS (r block)] -> MS (r bod)
body [HdrState MethodState Doc] -> HdrState MethodState Doc
forall {k} (r :: k -> *) (bod :: k) (block :: k).
BodySym r bod block =>
[MS (r block)] -> MS (r bod)
body
addComments :: String
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode Doc)
addComments String
s = (SrcState MethodState Doc -> SrcState MethodState Doc)
-> (HdrState MethodState Doc -> HdrState MethodState Doc)
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode Doc)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 (String -> SrcState MethodState Doc -> SrcState MethodState Doc
forall {k} (r :: k -> *) (bod :: k) (block :: k).
BodySym r bod block =>
String -> MS (r bod) -> MS (r bod)
addComments String
s) (String -> HdrState MethodState Doc -> HdrState MethodState Doc
forall {k} (r :: k -> *) (bod :: k) (block :: k).
BodySym r bod block =>
String -> MS (r bod) -> MS (r bod)
addComments String
s)
instance (Pair p) => RenderBody (p CppSrcCode CppHdrCode) Body where
multiBody :: [MS (p CppSrcCode CppHdrCode Doc)]
-> MS (p CppSrcCode CppHdrCode Doc)
multiBody = ([SrcState MethodState Doc] -> SrcState MethodState Doc)
-> ([HdrState MethodState Doc] -> HdrState MethodState Doc)
-> [MS (p CppSrcCode CppHdrCode Doc)]
-> MS (p CppSrcCode CppHdrCode Doc)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
([SrcState r a] -> SrcState s b)
-> ([HdrState r a] -> HdrState s b)
-> [PairState s p a]
-> PairState s p b
pair1List [SrcState MethodState Doc] -> SrcState MethodState Doc
forall {k} (r :: k -> *) (bod :: k).
RenderBody r bod =>
[MS (r bod)] -> MS (r bod)
multiBody [HdrState MethodState Doc] -> HdrState MethodState Doc
forall {k} (r :: k -> *) (bod :: k).
RenderBody r bod =>
[MS (r bod)] -> MS (r bod)
multiBody
instance (Pair p) => BodyElim (p CppSrcCode CppHdrCode) Body where
body :: p CppSrcCode CppHdrCode Doc -> Doc
body p CppSrcCode CppHdrCode Doc
b = CppSrcCode Doc -> Doc
forall {k} (r :: k -> *) (bod :: k). BodyElim r bod => r bod -> Doc
RC.body (CppSrcCode Doc -> Doc) -> CppSrcCode Doc -> Doc
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode Doc -> CppSrcCode Doc
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode Doc
b
instance (Pair p) => BlockSym (p CppSrcCode CppHdrCode) Block Statement where
block :: [MS (p CppSrcCode CppHdrCode Statement)]
-> MS (p CppSrcCode CppHdrCode Doc)
block = ([SrcState MethodState Statement] -> SrcState MethodState Doc)
-> ([HdrState MethodState Statement] -> HdrState MethodState Doc)
-> [MS (p CppSrcCode CppHdrCode Statement)]
-> MS (p CppSrcCode CppHdrCode Doc)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
([SrcState r a] -> SrcState s b)
-> ([HdrState r a] -> HdrState s b)
-> [PairState s p a]
-> PairState s p b
pair1List [SrcState MethodState Statement] -> SrcState MethodState Doc
forall {k} (r :: k -> *) (block :: k) (stmt :: k).
BlockSym r block stmt =>
[MS (r stmt)] -> MS (r block)
block [HdrState MethodState Statement] -> HdrState MethodState Doc
forall {k} (r :: k -> *) (block :: k) (stmt :: k).
BlockSym r block stmt =>
[MS (r stmt)] -> MS (r block)
block
instance (Pair p) => RenderBlock (p CppSrcCode CppHdrCode) Block where
multiBlock :: [MS (p CppSrcCode CppHdrCode Doc)]
-> MS (p CppSrcCode CppHdrCode Doc)
multiBlock = ([SrcState MethodState Doc] -> SrcState MethodState Doc)
-> ([HdrState MethodState Doc] -> HdrState MethodState Doc)
-> [MS (p CppSrcCode CppHdrCode Doc)]
-> MS (p CppSrcCode CppHdrCode Doc)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
([SrcState r a] -> SrcState s b)
-> ([HdrState r a] -> HdrState s b)
-> [PairState s p a]
-> PairState s p b
pair1List [SrcState MethodState Doc] -> SrcState MethodState Doc
forall {k} (r :: k -> *) (block :: k).
RenderBlock r block =>
[MS (r block)] -> MS (r block)
multiBlock [HdrState MethodState Doc] -> HdrState MethodState Doc
forall {k} (r :: k -> *) (block :: k).
RenderBlock r block =>
[MS (r block)] -> MS (r block)
multiBlock
instance (Pair p) => BlockElim (p CppSrcCode CppHdrCode) Block where
block :: p CppSrcCode CppHdrCode Doc -> Doc
block p CppSrcCode CppHdrCode Doc
b = CppSrcCode Doc -> Doc
forall {k} (r :: k -> *) (block :: k).
BlockElim r block =>
r block -> Doc
RC.block (CppSrcCode Doc -> Doc) -> CppSrcCode Doc -> Doc
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode Doc -> CppSrcCode Doc
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode Doc
b
instance (Pair p) => TypeSym (p CppSrcCode CppHdrCode) TypeData where
bool :: VS (p CppSrcCode CppHdrCode TypeData)
bool = (CppSrcCode TypeData
-> CppHdrCode TypeData -> p CppSrcCode CppHdrCode TypeData)
-> State ValueState (CppSrcCode TypeData)
-> State ValueState (CppHdrCode TypeData)
-> VS (p CppSrcCode CppHdrCode TypeData)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode TypeData
-> CppHdrCode TypeData -> p CppSrcCode CppHdrCode TypeData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
bool State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
bool
int :: VS (p CppSrcCode CppHdrCode TypeData)
int = (CppSrcCode TypeData
-> CppHdrCode TypeData -> p CppSrcCode CppHdrCode TypeData)
-> State ValueState (CppSrcCode TypeData)
-> State ValueState (CppHdrCode TypeData)
-> VS (p CppSrcCode CppHdrCode TypeData)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode TypeData
-> CppHdrCode TypeData -> p CppSrcCode CppHdrCode TypeData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
int State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
int
float :: VS (p CppSrcCode CppHdrCode TypeData)
float = (CppSrcCode TypeData
-> CppHdrCode TypeData -> p CppSrcCode CppHdrCode TypeData)
-> State ValueState (CppSrcCode TypeData)
-> State ValueState (CppHdrCode TypeData)
-> VS (p CppSrcCode CppHdrCode TypeData)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode TypeData
-> CppHdrCode TypeData -> p CppSrcCode CppHdrCode TypeData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
float State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
float
double :: VS (p CppSrcCode CppHdrCode TypeData)
double = (CppSrcCode TypeData
-> CppHdrCode TypeData -> p CppSrcCode CppHdrCode TypeData)
-> State ValueState (CppSrcCode TypeData)
-> State ValueState (CppHdrCode TypeData)
-> VS (p CppSrcCode CppHdrCode TypeData)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode TypeData
-> CppHdrCode TypeData -> p CppSrcCode CppHdrCode TypeData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
double State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
double
char :: VS (p CppSrcCode CppHdrCode TypeData)
char = (CppSrcCode TypeData
-> CppHdrCode TypeData -> p CppSrcCode CppHdrCode TypeData)
-> State ValueState (CppSrcCode TypeData)
-> State ValueState (CppHdrCode TypeData)
-> VS (p CppSrcCode CppHdrCode TypeData)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode TypeData
-> CppHdrCode TypeData -> p CppSrcCode CppHdrCode TypeData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
char State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
char
string :: VS (p CppSrcCode CppHdrCode TypeData)
string = (CppSrcCode TypeData
-> CppHdrCode TypeData -> p CppSrcCode CppHdrCode TypeData)
-> State ValueState (CppSrcCode TypeData)
-> State ValueState (CppHdrCode TypeData)
-> VS (p CppSrcCode CppHdrCode TypeData)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode TypeData
-> CppHdrCode TypeData -> p CppSrcCode CppHdrCode TypeData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
string State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
string
infile :: VS (p CppSrcCode CppHdrCode TypeData)
infile = (CppSrcCode TypeData
-> CppHdrCode TypeData -> p CppSrcCode CppHdrCode TypeData)
-> State ValueState (CppSrcCode TypeData)
-> State ValueState (CppHdrCode TypeData)
-> VS (p CppSrcCode CppHdrCode TypeData)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode TypeData
-> CppHdrCode TypeData -> p CppSrcCode CppHdrCode TypeData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
infile State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
infile
outfile :: VS (p CppSrcCode CppHdrCode TypeData)
outfile = (CppSrcCode TypeData
-> CppHdrCode TypeData -> p CppSrcCode CppHdrCode TypeData)
-> State ValueState (CppSrcCode TypeData)
-> State ValueState (CppHdrCode TypeData)
-> VS (p CppSrcCode CppHdrCode TypeData)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode TypeData
-> CppHdrCode TypeData -> p CppSrcCode CppHdrCode TypeData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
outfile State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
outfile
referenceType :: VS (p CppSrcCode CppHdrCode TypeData)
-> VS (p CppSrcCode CppHdrCode TypeData)
referenceType = (State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData))
-> (State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData))
-> VS (p CppSrcCode CppHdrCode TypeData)
-> VS (p CppSrcCode CppHdrCode TypeData)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k).
TypeSym r typ =>
VS (r typ) -> VS (r typ)
referenceType State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k).
TypeSym r typ =>
VS (r typ) -> VS (r typ)
referenceType
listType :: VS (p CppSrcCode CppHdrCode TypeData)
-> VS (p CppSrcCode CppHdrCode TypeData)
listType = (State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData))
-> (State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData))
-> VS (p CppSrcCode CppHdrCode TypeData)
-> VS (p CppSrcCode CppHdrCode TypeData)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k).
TypeSym r typ =>
VS (r typ) -> VS (r typ)
listType State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k).
TypeSym r typ =>
VS (r typ) -> VS (r typ)
listType
setType :: VS (p CppSrcCode CppHdrCode TypeData)
-> VS (p CppSrcCode CppHdrCode TypeData)
setType = (State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData))
-> (State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData))
-> VS (p CppSrcCode CppHdrCode TypeData)
-> VS (p CppSrcCode CppHdrCode TypeData)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k).
TypeSym r typ =>
VS (r typ) -> VS (r typ)
setType State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k).
TypeSym r typ =>
VS (r typ) -> VS (r typ)
setType
arrayType :: VS (p CppSrcCode CppHdrCode TypeData)
-> VS (p CppSrcCode CppHdrCode TypeData)
arrayType = (State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData))
-> (State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData))
-> VS (p CppSrcCode CppHdrCode TypeData)
-> VS (p CppSrcCode CppHdrCode TypeData)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k).
TypeSym r typ =>
VS (r typ) -> VS (r typ)
arrayType State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k).
TypeSym r typ =>
VS (r typ) -> VS (r typ)
arrayType
innerType :: VS (p CppSrcCode CppHdrCode TypeData)
-> VS (p CppSrcCode CppHdrCode TypeData)
innerType = (State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData))
-> (State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData))
-> VS (p CppSrcCode CppHdrCode TypeData)
-> VS (p CppSrcCode CppHdrCode TypeData)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k).
TypeSym r typ =>
VS (r typ) -> VS (r typ)
innerType State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k).
TypeSym r typ =>
VS (r typ) -> VS (r typ)
innerType
funcType :: [VS (p CppSrcCode CppHdrCode TypeData)]
-> VS (p CppSrcCode CppHdrCode TypeData)
-> VS (p CppSrcCode CppHdrCode TypeData)
funcType = ([State ValueState (CppSrcCode TypeData)]
-> State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData))
-> ([State ValueState (CppHdrCode TypeData)]
-> State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData))
-> [VS (p CppSrcCode CppHdrCode TypeData)]
-> VS (p CppSrcCode CppHdrCode TypeData)
-> VS (p CppSrcCode CppHdrCode TypeData)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
([SrcState r a] -> SrcState s b -> SrcState t c)
-> ([HdrState r a] -> HdrState s b -> HdrState t c)
-> [PairState t p a]
-> PairState t p b
-> PairState t p c
pair1List1Val [State ValueState (CppSrcCode TypeData)]
-> State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k).
TypeSym r typ =>
[VS (r typ)] -> VS (r typ) -> VS (r typ)
funcType [State ValueState (CppHdrCode TypeData)]
-> State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k).
TypeSym r typ =>
[VS (r typ)] -> VS (r typ) -> VS (r typ)
funcType
void :: VS (p CppSrcCode CppHdrCode TypeData)
void = (CppSrcCode TypeData
-> CppHdrCode TypeData -> p CppSrcCode CppHdrCode TypeData)
-> State ValueState (CppSrcCode TypeData)
-> State ValueState (CppHdrCode TypeData)
-> VS (p CppSrcCode CppHdrCode TypeData)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode TypeData
-> CppHdrCode TypeData -> p CppSrcCode CppHdrCode TypeData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void
instance (Pair p) => TypeElim (p CppSrcCode CppHdrCode) TypeData where
getCodeType :: p CppSrcCode CppHdrCode TypeData -> CodeType
getCodeType p CppSrcCode CppHdrCode TypeData
tp = CppSrcCode TypeData -> CodeType
forall {k} (r :: k -> *) (typ :: k).
TypeElim r typ =>
r typ -> CodeType
getCodeType (CppSrcCode TypeData -> CodeType)
-> CppSrcCode TypeData -> CodeType
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode TypeData -> CppSrcCode TypeData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode TypeData
tp
instance (Pair p) => OOTypeSym (p CppSrcCode CppHdrCode) TypeData where
obj :: String -> VS (p CppSrcCode CppHdrCode TypeData)
obj String
t = (CppSrcCode TypeData
-> CppHdrCode TypeData -> p CppSrcCode CppHdrCode TypeData)
-> State ValueState (CppSrcCode TypeData)
-> State ValueState (CppHdrCode TypeData)
-> VS (p CppSrcCode CppHdrCode TypeData)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode TypeData
-> CppHdrCode TypeData -> p CppSrcCode CppHdrCode TypeData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair (String -> State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k).
OOTypeSym r typ =>
String -> VS (r typ)
obj String
t) (String -> State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k).
OOTypeSym r typ =>
String -> VS (r typ)
obj String
t)
instance (Pair p) => RenderType (p CppSrcCode CppHdrCode) TypeData where
multiType :: [VS (p CppSrcCode CppHdrCode TypeData)]
-> VS (p CppSrcCode CppHdrCode TypeData)
multiType = ([State ValueState (CppSrcCode TypeData)]
-> State ValueState (CppSrcCode TypeData))
-> ([State ValueState (CppHdrCode TypeData)]
-> State ValueState (CppHdrCode TypeData))
-> [VS (p CppSrcCode CppHdrCode TypeData)]
-> VS (p CppSrcCode CppHdrCode TypeData)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
([SrcState r a] -> SrcState s b)
-> ([HdrState r a] -> HdrState s b)
-> [PairState s p a]
-> PairState s p b
pair1List [State ValueState (CppSrcCode TypeData)]
-> State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k).
RenderType r typ =>
[VS (r typ)] -> VS (r typ)
multiType [State ValueState (CppHdrCode TypeData)]
-> State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k).
RenderType r typ =>
[VS (r typ)] -> VS (r typ)
multiType
instance (Pair p) => UnaryOpSym (p CppSrcCode CppHdrCode) where
notOp :: VSUnOp (p CppSrcCode CppHdrCode)
notOp = (CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData)
-> State ValueState (CppSrcCode OpData)
-> State ValueState (CppHdrCode OpData)
-> VSUnOp (p CppSrcCode CppHdrCode)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair State ValueState (CppSrcCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
notOp State ValueState (CppHdrCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
notOp
negateOp :: VSUnOp (p CppSrcCode CppHdrCode)
negateOp = (CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData)
-> State ValueState (CppSrcCode OpData)
-> State ValueState (CppHdrCode OpData)
-> VSUnOp (p CppSrcCode CppHdrCode)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair State ValueState (CppSrcCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
negateOp State ValueState (CppHdrCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
negateOp
sqrtOp :: VSUnOp (p CppSrcCode CppHdrCode)
sqrtOp = (CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData)
-> State ValueState (CppSrcCode OpData)
-> State ValueState (CppHdrCode OpData)
-> VSUnOp (p CppSrcCode CppHdrCode)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair State ValueState (CppSrcCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
sqrtOp State ValueState (CppHdrCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
sqrtOp
absOp :: VSUnOp (p CppSrcCode CppHdrCode)
absOp = (CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData)
-> State ValueState (CppSrcCode OpData)
-> State ValueState (CppHdrCode OpData)
-> VSUnOp (p CppSrcCode CppHdrCode)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair State ValueState (CppSrcCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
absOp State ValueState (CppHdrCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
absOp
logOp :: VSUnOp (p CppSrcCode CppHdrCode)
logOp = (CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData)
-> State ValueState (CppSrcCode OpData)
-> State ValueState (CppHdrCode OpData)
-> VSUnOp (p CppSrcCode CppHdrCode)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair State ValueState (CppSrcCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
logOp State ValueState (CppHdrCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
logOp
lnOp :: VSUnOp (p CppSrcCode CppHdrCode)
lnOp = (CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData)
-> State ValueState (CppSrcCode OpData)
-> State ValueState (CppHdrCode OpData)
-> VSUnOp (p CppSrcCode CppHdrCode)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair State ValueState (CppSrcCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
lnOp State ValueState (CppHdrCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
lnOp
expOp :: VSUnOp (p CppSrcCode CppHdrCode)
expOp = (CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData)
-> State ValueState (CppSrcCode OpData)
-> State ValueState (CppHdrCode OpData)
-> VSUnOp (p CppSrcCode CppHdrCode)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair State ValueState (CppSrcCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
expOp State ValueState (CppHdrCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
expOp
sinOp :: VSUnOp (p CppSrcCode CppHdrCode)
sinOp = (CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData)
-> State ValueState (CppSrcCode OpData)
-> State ValueState (CppHdrCode OpData)
-> VSUnOp (p CppSrcCode CppHdrCode)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair State ValueState (CppSrcCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
sinOp State ValueState (CppHdrCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
sinOp
cosOp :: VSUnOp (p CppSrcCode CppHdrCode)
cosOp = (CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData)
-> State ValueState (CppSrcCode OpData)
-> State ValueState (CppHdrCode OpData)
-> VSUnOp (p CppSrcCode CppHdrCode)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair State ValueState (CppSrcCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
cosOp State ValueState (CppHdrCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
cosOp
tanOp :: VSUnOp (p CppSrcCode CppHdrCode)
tanOp = (CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData)
-> State ValueState (CppSrcCode OpData)
-> State ValueState (CppHdrCode OpData)
-> VSUnOp (p CppSrcCode CppHdrCode)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair State ValueState (CppSrcCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
tanOp State ValueState (CppHdrCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
tanOp
asinOp :: VSUnOp (p CppSrcCode CppHdrCode)
asinOp = (CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData)
-> State ValueState (CppSrcCode OpData)
-> State ValueState (CppHdrCode OpData)
-> VSUnOp (p CppSrcCode CppHdrCode)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair State ValueState (CppSrcCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
asinOp State ValueState (CppHdrCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
asinOp
acosOp :: VSUnOp (p CppSrcCode CppHdrCode)
acosOp = (CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData)
-> State ValueState (CppSrcCode OpData)
-> State ValueState (CppHdrCode OpData)
-> VSUnOp (p CppSrcCode CppHdrCode)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair State ValueState (CppSrcCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
acosOp State ValueState (CppHdrCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
acosOp
atanOp :: VSUnOp (p CppSrcCode CppHdrCode)
atanOp = (CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData)
-> State ValueState (CppSrcCode OpData)
-> State ValueState (CppHdrCode OpData)
-> VSUnOp (p CppSrcCode CppHdrCode)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair State ValueState (CppSrcCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
atanOp State ValueState (CppHdrCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
atanOp
floorOp :: VSUnOp (p CppSrcCode CppHdrCode)
floorOp = (CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData)
-> State ValueState (CppSrcCode OpData)
-> State ValueState (CppHdrCode OpData)
-> VSUnOp (p CppSrcCode CppHdrCode)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair State ValueState (CppSrcCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
floorOp State ValueState (CppHdrCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
floorOp
ceilOp :: VSUnOp (p CppSrcCode CppHdrCode)
ceilOp = (CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData)
-> State ValueState (CppSrcCode OpData)
-> State ValueState (CppHdrCode OpData)
-> VSUnOp (p CppSrcCode CppHdrCode)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair State ValueState (CppSrcCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
ceilOp State ValueState (CppHdrCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
ceilOp
instance (Pair p) => BinaryOpSym (p CppSrcCode CppHdrCode) where
equalOp :: VSBinOp (p CppSrcCode CppHdrCode)
equalOp = (CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData)
-> State ValueState (CppSrcCode OpData)
-> State ValueState (CppHdrCode OpData)
-> VSBinOp (p CppSrcCode CppHdrCode)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair State ValueState (CppSrcCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
equalOp State ValueState (CppHdrCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
equalOp
notEqualOp :: VSBinOp (p CppSrcCode CppHdrCode)
notEqualOp = (CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData)
-> State ValueState (CppSrcCode OpData)
-> State ValueState (CppHdrCode OpData)
-> VSBinOp (p CppSrcCode CppHdrCode)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair State ValueState (CppSrcCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
notEqualOp State ValueState (CppHdrCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
notEqualOp
greaterOp :: VSBinOp (p CppSrcCode CppHdrCode)
greaterOp = (CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData)
-> State ValueState (CppSrcCode OpData)
-> State ValueState (CppHdrCode OpData)
-> VSBinOp (p CppSrcCode CppHdrCode)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair State ValueState (CppSrcCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
greaterOp State ValueState (CppHdrCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
greaterOp
greaterEqualOp :: VSBinOp (p CppSrcCode CppHdrCode)
greaterEqualOp = (CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData)
-> State ValueState (CppSrcCode OpData)
-> State ValueState (CppHdrCode OpData)
-> VSBinOp (p CppSrcCode CppHdrCode)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair State ValueState (CppSrcCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
greaterEqualOp State ValueState (CppHdrCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
greaterEqualOp
lessOp :: VSBinOp (p CppSrcCode CppHdrCode)
lessOp = (CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData)
-> State ValueState (CppSrcCode OpData)
-> State ValueState (CppHdrCode OpData)
-> VSBinOp (p CppSrcCode CppHdrCode)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair State ValueState (CppSrcCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
lessOp State ValueState (CppHdrCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
lessOp
lessEqualOp :: VSBinOp (p CppSrcCode CppHdrCode)
lessEqualOp = (CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData)
-> State ValueState (CppSrcCode OpData)
-> State ValueState (CppHdrCode OpData)
-> VSBinOp (p CppSrcCode CppHdrCode)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair State ValueState (CppSrcCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
lessEqualOp State ValueState (CppHdrCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
lessEqualOp
plusOp :: VSBinOp (p CppSrcCode CppHdrCode)
plusOp = (CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData)
-> State ValueState (CppSrcCode OpData)
-> State ValueState (CppHdrCode OpData)
-> VSBinOp (p CppSrcCode CppHdrCode)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair State ValueState (CppSrcCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
plusOp State ValueState (CppHdrCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
plusOp
minusOp :: VSBinOp (p CppSrcCode CppHdrCode)
minusOp = (CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData)
-> State ValueState (CppSrcCode OpData)
-> State ValueState (CppHdrCode OpData)
-> VSBinOp (p CppSrcCode CppHdrCode)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair State ValueState (CppSrcCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
minusOp State ValueState (CppHdrCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
minusOp
multOp :: VSBinOp (p CppSrcCode CppHdrCode)
multOp = (CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData)
-> State ValueState (CppSrcCode OpData)
-> State ValueState (CppHdrCode OpData)
-> VSBinOp (p CppSrcCode CppHdrCode)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair State ValueState (CppSrcCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
multOp State ValueState (CppHdrCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
multOp
divideOp :: VSBinOp (p CppSrcCode CppHdrCode)
divideOp = (CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData)
-> State ValueState (CppSrcCode OpData)
-> State ValueState (CppHdrCode OpData)
-> VSBinOp (p CppSrcCode CppHdrCode)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair State ValueState (CppSrcCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
divideOp State ValueState (CppHdrCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
divideOp
powerOp :: VSBinOp (p CppSrcCode CppHdrCode)
powerOp = (CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData)
-> State ValueState (CppSrcCode OpData)
-> State ValueState (CppHdrCode OpData)
-> VSBinOp (p CppSrcCode CppHdrCode)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair State ValueState (CppSrcCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
powerOp State ValueState (CppHdrCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
powerOp
moduloOp :: VSBinOp (p CppSrcCode CppHdrCode)
moduloOp = (CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData)
-> State ValueState (CppSrcCode OpData)
-> State ValueState (CppHdrCode OpData)
-> VSBinOp (p CppSrcCode CppHdrCode)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair State ValueState (CppSrcCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
moduloOp State ValueState (CppHdrCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
moduloOp
andOp :: VSBinOp (p CppSrcCode CppHdrCode)
andOp = (CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData)
-> State ValueState (CppSrcCode OpData)
-> State ValueState (CppHdrCode OpData)
-> VSBinOp (p CppSrcCode CppHdrCode)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair State ValueState (CppSrcCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
andOp State ValueState (CppHdrCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
andOp
orOp :: VSBinOp (p CppSrcCode CppHdrCode)
orOp = (CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData)
-> State ValueState (CppSrcCode OpData)
-> State ValueState (CppHdrCode OpData)
-> VSBinOp (p CppSrcCode CppHdrCode)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode OpData
-> CppHdrCode OpData -> p CppSrcCode CppHdrCode OpData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair State ValueState (CppSrcCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
orOp State ValueState (CppHdrCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
orOp
instance (Pair p) => OpElim (p CppSrcCode CppHdrCode) where
uOp :: p CppSrcCode CppHdrCode OpData -> Doc
uOp p CppSrcCode CppHdrCode OpData
o = CppSrcCode OpData -> Doc
forall (r :: * -> *). OpElim r => r OpData -> Doc
RC.uOp (CppSrcCode OpData -> Doc) -> CppSrcCode OpData -> Doc
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode OpData -> CppSrcCode OpData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode OpData
o
bOp :: p CppSrcCode CppHdrCode OpData -> Doc
bOp p CppSrcCode CppHdrCode OpData
o = CppSrcCode OpData -> Doc
forall (r :: * -> *). OpElim r => r OpData -> Doc
RC.bOp (CppSrcCode OpData -> Doc) -> CppSrcCode OpData -> Doc
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode OpData -> CppSrcCode OpData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode OpData
o
uOpPrec :: p CppSrcCode CppHdrCode OpData -> Int
uOpPrec p CppSrcCode CppHdrCode OpData
o = CppSrcCode OpData -> Int
forall (r :: * -> *). OpElim r => r OpData -> Int
uOpPrec (CppSrcCode OpData -> Int) -> CppSrcCode OpData -> Int
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode OpData -> CppSrcCode OpData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode OpData
o
bOpPrec :: p CppSrcCode CppHdrCode OpData -> Int
bOpPrec p CppSrcCode CppHdrCode OpData
o = CppSrcCode OpData -> Int
forall (r :: * -> *). OpElim r => r OpData -> Int
bOpPrec (CppSrcCode OpData -> Int) -> CppSrcCode OpData -> Int
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode OpData -> CppSrcCode OpData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode OpData
o
instance (Pair p) => ScopeSym (p CppSrcCode CppHdrCode) ScopeData where
global :: p CppSrcCode CppHdrCode ScopeData
global = CppSrcCode ScopeData
-> CppHdrCode ScopeData -> p CppSrcCode CppHdrCode ScopeData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair CppSrcCode ScopeData
forall {k} (r :: k -> *) (scope :: k). ScopeSym r scope => r scope
global CppHdrCode ScopeData
forall {k} (r :: k -> *) (scope :: k). ScopeSym r scope => r scope
global
mainFn :: p CppSrcCode CppHdrCode ScopeData
mainFn = CppSrcCode ScopeData
-> CppHdrCode ScopeData -> p CppSrcCode CppHdrCode ScopeData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair CppSrcCode ScopeData
forall {k} (r :: k -> *) (scope :: k). ScopeSym r scope => r scope
mainFn CppHdrCode ScopeData
forall {k} (r :: k -> *) (scope :: k). ScopeSym r scope => r scope
mainFn
local :: p CppSrcCode CppHdrCode ScopeData
local = CppSrcCode ScopeData
-> CppHdrCode ScopeData -> p CppSrcCode CppHdrCode ScopeData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair CppSrcCode ScopeData
forall {k} (r :: k -> *) (scope :: k). ScopeSym r scope => r scope
local CppHdrCode ScopeData
forall {k} (r :: k -> *) (scope :: k). ScopeSym r scope => r scope
local
instance (Pair p) => ScopeElim (p CppSrcCode CppHdrCode) ScopeData where
scopeData :: p CppSrcCode CppHdrCode ScopeData -> ScopeData
scopeData = CppSrcCode ScopeData -> ScopeData
forall a. CppSrcCode a -> a
unCPPSC (CppSrcCode ScopeData -> ScopeData)
-> (p CppSrcCode CppHdrCode ScopeData -> CppSrcCode ScopeData)
-> p CppSrcCode CppHdrCode ScopeData
-> ScopeData
forall b c a. (b -> c) -> (a -> b) -> a -> c
. p CppSrcCode CppHdrCode ScopeData -> CppSrcCode ScopeData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst
instance (Pair p) => VariableSym (p CppSrcCode CppHdrCode) Variable TypeData where
var :: String
-> VS (p CppSrcCode CppHdrCode TypeData)
-> VS (p CppSrcCode CppHdrCode Variable)
var String
n = (State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable)
-> (State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Variable)
-> VS (p CppSrcCode CppHdrCode TypeData)
-> VS (p CppSrcCode CppHdrCode Variable)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 (String
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable
forall {k} (r :: k -> *) (var :: k) (typ :: k).
VariableSym r var typ =>
String -> VS (r typ) -> VS (r var)
var String
n) (String
-> State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Variable
forall {k} (r :: k -> *) (var :: k) (typ :: k).
VariableSym r var typ =>
String -> VS (r typ) -> VS (r var)
var String
n)
constant :: String
-> VS (p CppSrcCode CppHdrCode TypeData)
-> VS (p CppSrcCode CppHdrCode Variable)
constant String
n = (State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable)
-> (State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Variable)
-> VS (p CppSrcCode CppHdrCode TypeData)
-> VS (p CppSrcCode CppHdrCode Variable)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 (String
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable
forall {k} (r :: k -> *) (var :: k) (typ :: k).
VariableSym r var typ =>
String -> VS (r typ) -> VS (r var)
constant String
n) (String
-> State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Variable
forall {k} (r :: k -> *) (var :: k) (typ :: k).
VariableSym r var typ =>
String -> VS (r typ) -> VS (r var)
constant String
n)
extVar :: String
-> String
-> VS (p CppSrcCode CppHdrCode TypeData)
-> VS (p CppSrcCode CppHdrCode Variable)
extVar String
l String
n = (State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable)
-> (State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Variable)
-> VS (p CppSrcCode CppHdrCode TypeData)
-> VS (p CppSrcCode CppHdrCode Variable)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 (String
-> String
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable
forall {k} (r :: k -> *) (var :: k) (typ :: k).
VariableSym r var typ =>
String -> String -> VS (r typ) -> VS (r var)
extVar String
l String
n) (String
-> String
-> State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Variable
forall {k} (r :: k -> *) (var :: k) (typ :: k).
VariableSym r var typ =>
String -> String -> VS (r typ) -> VS (r var)
extVar String
l String
n)
instance (Pair p) => OOVariableSym (p CppSrcCode CppHdrCode) Variable Value TypeData where
classVar :: String
-> VS (p CppSrcCode CppHdrCode TypeData)
-> VS (p CppSrcCode CppHdrCode Variable)
classVar String
n = (State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable)
-> (State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Variable)
-> VS (p CppSrcCode CppHdrCode TypeData)
-> VS (p CppSrcCode CppHdrCode Variable)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 (String
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
OOVariableSym r var val typ =>
String -> VS (r typ) -> VS (r var)
classVar String
n) (String
-> State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Variable
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
OOVariableSym r var val typ =>
String -> VS (r typ) -> VS (r var)
classVar String
n)
classConst :: String
-> VS (p CppSrcCode CppHdrCode TypeData)
-> VS (p CppSrcCode CppHdrCode Variable)
classConst String
n = (State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable)
-> (State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Variable)
-> VS (p CppSrcCode CppHdrCode TypeData)
-> VS (p CppSrcCode CppHdrCode Variable)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 (String
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
OOVariableSym r var val typ =>
String -> VS (r typ) -> VS (r var)
classConst String
n) (String
-> State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Variable
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
OOVariableSym r var val typ =>
String -> VS (r typ) -> VS (r var)
classConst String
n)
classVarAccess :: VS (p CppSrcCode CppHdrCode TypeData)
-> VS (p CppSrcCode CppHdrCode Variable)
-> VS (p CppSrcCode CppHdrCode Variable)
classVarAccess = (State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable -> SrcState ValueState Variable)
-> (State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Variable -> HdrState ValueState Variable)
-> VS (p CppSrcCode CppHdrCode TypeData)
-> VS (p CppSrcCode CppHdrCode Variable)
-> VS (p CppSrcCode CppHdrCode Variable)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable -> SrcState ValueState Variable
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
OOVariableSym r var val typ =>
VS (r typ) -> VS (r var) -> VS (r var)
classVarAccess State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Variable -> HdrState ValueState Variable
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
OOVariableSym r var val typ =>
VS (r typ) -> VS (r var) -> VS (r var)
classVarAccess
extClassVarAccess :: VS (p CppSrcCode CppHdrCode TypeData)
-> VS (p CppSrcCode CppHdrCode Variable)
-> VS (p CppSrcCode CppHdrCode Variable)
extClassVarAccess = (State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable -> SrcState ValueState Variable)
-> (State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Variable -> HdrState ValueState Variable)
-> VS (p CppSrcCode CppHdrCode TypeData)
-> VS (p CppSrcCode CppHdrCode Variable)
-> VS (p CppSrcCode CppHdrCode Variable)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable -> SrcState ValueState Variable
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
OOVariableSym r var val typ =>
VS (r typ) -> VS (r var) -> VS (r var)
extClassVarAccess State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Variable -> HdrState ValueState Variable
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
OOVariableSym r var val typ =>
VS (r typ) -> VS (r var) -> VS (r var)
extClassVarAccess
instanceVarAccess :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Variable)
-> VS (p CppSrcCode CppHdrCode Variable)
instanceVarAccess = (VS (CppSrcCode Value)
-> SrcState ValueState Variable -> SrcState ValueState Variable)
-> (HdrState ValueState Value
-> HdrState ValueState Variable -> HdrState ValueState Variable)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Variable)
-> VS (p CppSrcCode CppHdrCode Variable)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 VS (CppSrcCode Value)
-> SrcState ValueState Variable -> SrcState ValueState Variable
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
OOVariableSym r var val typ =>
VS (r val) -> VS (r var) -> VS (r var)
instanceVarAccess HdrState ValueState Value
-> HdrState ValueState Variable -> HdrState ValueState Variable
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
OOVariableSym r var val typ =>
VS (r val) -> VS (r var) -> VS (r var)
instanceVarAccess
instance (Pair p) => SelfSym (p CppSrcCode CppHdrCode) Variable where
self :: VS (p CppSrcCode CppHdrCode Variable)
self = (CppSrcCode Variable
-> CppHdrCode Variable -> p CppSrcCode CppHdrCode Variable)
-> SrcState ValueState Variable
-> HdrState ValueState Variable
-> VS (p CppSrcCode CppHdrCode Variable)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode Variable
-> CppHdrCode Variable -> p CppSrcCode CppHdrCode Variable
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair SrcState ValueState Variable
forall {k} (r :: k -> *) (var :: k). SelfSym r var => VS (r var)
self HdrState ValueState Variable
forall {k} (r :: k -> *) (var :: k). SelfSym r var => VS (r var)
self
instance (Pair p) => VariableElim (p CppSrcCode CppHdrCode) Variable TypeData where
variableName :: p CppSrcCode CppHdrCode Variable -> String
variableName p CppSrcCode CppHdrCode Variable
v = CppSrcCode Variable -> String
forall {k} (r :: k -> *) (var :: k) (typ :: k).
VariableElim r var typ =>
r var -> String
variableName (CppSrcCode Variable -> String) -> CppSrcCode Variable -> String
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode Variable -> CppSrcCode Variable
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode Variable
v
variableType :: p CppSrcCode CppHdrCode Variable
-> p CppSrcCode CppHdrCode TypeData
variableType p CppSrcCode CppHdrCode Variable
v = CppSrcCode TypeData
-> CppHdrCode TypeData -> p CppSrcCode CppHdrCode TypeData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair (CppSrcCode Variable -> CppSrcCode TypeData
forall {k} (r :: k -> *) (var :: k) (typ :: k).
VariableElim r var typ =>
r var -> r typ
variableType (CppSrcCode Variable -> CppSrcCode TypeData)
-> CppSrcCode Variable -> CppSrcCode TypeData
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode Variable -> CppSrcCode Variable
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode Variable
v) (CppHdrCode Variable -> CppHdrCode TypeData
forall {k} (r :: k -> *) (var :: k) (typ :: k).
VariableElim r var typ =>
r var -> r typ
variableType (CppHdrCode Variable -> CppHdrCode TypeData)
-> CppHdrCode Variable -> CppHdrCode TypeData
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode Variable -> CppHdrCode Variable
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd p CppSrcCode CppHdrCode Variable
v)
instance (Pair p) => InternalVarElim (p CppSrcCode CppHdrCode) Variable where
variableBind :: p CppSrcCode CppHdrCode Variable -> AttachmentTag
variableBind p CppSrcCode CppHdrCode Variable
v = CppSrcCode Variable -> AttachmentTag
forall {k} (r :: k -> *) (var :: k).
InternalVarElim r var =>
r var -> AttachmentTag
variableBind (CppSrcCode Variable -> AttachmentTag)
-> CppSrcCode Variable -> AttachmentTag
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode Variable -> CppSrcCode Variable
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode Variable
v
variable :: p CppSrcCode CppHdrCode Variable -> Doc
variable p CppSrcCode CppHdrCode Variable
v = CppSrcCode Variable -> Doc
forall {k} (r :: k -> *) (var :: k).
InternalVarElim r var =>
r var -> Doc
RC.variable (CppSrcCode Variable -> Doc) -> CppSrcCode Variable -> Doc
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode Variable -> CppSrcCode Variable
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode Variable
v
instance (Pair p) => RenderVariable (p CppSrcCode CppHdrCode) Variable TypeData where
varFromData :: AttachmentTag
-> String
-> VS (p CppSrcCode CppHdrCode TypeData)
-> Doc
-> VS (p CppSrcCode CppHdrCode Variable)
varFromData AttachmentTag
b String
n VS (p CppSrcCode CppHdrCode TypeData)
t' Doc
d = (State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable)
-> (State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Variable)
-> VS (p CppSrcCode CppHdrCode TypeData)
-> VS (p CppSrcCode CppHdrCode Variable)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 (\State ValueState (CppSrcCode TypeData)
t ->AttachmentTag
-> String
-> State ValueState (CppSrcCode TypeData)
-> Doc
-> SrcState ValueState Variable
forall {k} (r :: k -> *) (var :: k) (typ :: k).
RenderVariable r var typ =>
AttachmentTag -> String -> VS (r typ) -> Doc -> VS (r var)
varFromData AttachmentTag
b String
n State ValueState (CppSrcCode TypeData)
t Doc
d)
(\State ValueState (CppHdrCode TypeData)
t -> AttachmentTag
-> String
-> State ValueState (CppHdrCode TypeData)
-> Doc
-> HdrState ValueState Variable
forall {k} (r :: k -> *) (var :: k) (typ :: k).
RenderVariable r var typ =>
AttachmentTag -> String -> VS (r typ) -> Doc -> VS (r var)
varFromData AttachmentTag
b String
n State ValueState (CppHdrCode TypeData)
t Doc
d) VS (p CppSrcCode CppHdrCode TypeData)
t'
instance (Pair p) => ValueSym (p CppSrcCode CppHdrCode) Value TypeData where
valueType :: p CppSrcCode CppHdrCode Value -> p CppSrcCode CppHdrCode TypeData
valueType p CppSrcCode CppHdrCode Value
v = CppSrcCode TypeData
-> CppHdrCode TypeData -> p CppSrcCode CppHdrCode TypeData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair (CppSrcCode Value -> CppSrcCode TypeData
forall {k} (r :: k -> *) (val :: k) (typ :: k).
ValueSym r val typ =>
r val -> r typ
valueType (CppSrcCode Value -> CppSrcCode TypeData)
-> CppSrcCode Value -> CppSrcCode TypeData
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode Value -> CppSrcCode Value
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode Value
v) (CppHdrCode Value -> CppHdrCode TypeData
forall {k} (r :: k -> *) (val :: k) (typ :: k).
ValueSym r val typ =>
r val -> r typ
valueType (CppHdrCode Value -> CppHdrCode TypeData)
-> CppHdrCode Value -> CppHdrCode TypeData
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode Value -> CppHdrCode Value
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd p CppSrcCode CppHdrCode Value
v)
instance (Pair p) => Argument (p CppSrcCode CppHdrCode) Value where
pointerArg :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
pointerArg = (VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
Argument r val =>
VS (r val) -> VS (r val)
pointerArg HdrState ValueState Value -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k).
Argument r val =>
VS (r val) -> VS (r val)
pointerArg
instance (Pair p) => Literal (p CppSrcCode CppHdrCode) Value TypeData where
litTrue :: VS (p CppSrcCode CppHdrCode Value)
litTrue = (CppSrcCode Value
-> CppHdrCode Value -> p CppSrcCode CppHdrCode Value)
-> VS (CppSrcCode Value)
-> HdrState ValueState Value
-> VS (p CppSrcCode CppHdrCode Value)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode Value
-> CppHdrCode Value -> p CppSrcCode CppHdrCode Value
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k) (typ :: k).
Literal r val typ =>
VS (r val)
litTrue HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k) (typ :: k).
Literal r val typ =>
VS (r val)
litTrue
litFalse :: VS (p CppSrcCode CppHdrCode Value)
litFalse = (CppSrcCode Value
-> CppHdrCode Value -> p CppSrcCode CppHdrCode Value)
-> VS (CppSrcCode Value)
-> HdrState ValueState Value
-> VS (p CppSrcCode CppHdrCode Value)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode Value
-> CppHdrCode Value -> p CppSrcCode CppHdrCode Value
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k) (typ :: k).
Literal r val typ =>
VS (r val)
litFalse HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k) (typ :: k).
Literal r val typ =>
VS (r val)
litFalse
litChar :: Char -> VS (p CppSrcCode CppHdrCode Value)
litChar Char
c = (CppSrcCode Value
-> CppHdrCode Value -> p CppSrcCode CppHdrCode Value)
-> VS (CppSrcCode Value)
-> HdrState ValueState Value
-> VS (p CppSrcCode CppHdrCode Value)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode Value
-> CppHdrCode Value -> p CppSrcCode CppHdrCode Value
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair (Char -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k) (typ :: k).
Literal r val typ =>
Char -> VS (r val)
litChar Char
c) (Char -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k) (typ :: k).
Literal r val typ =>
Char -> VS (r val)
litChar Char
c)
litDouble :: Double -> VS (p CppSrcCode CppHdrCode Value)
litDouble Double
v = (CppSrcCode Value
-> CppHdrCode Value -> p CppSrcCode CppHdrCode Value)
-> VS (CppSrcCode Value)
-> HdrState ValueState Value
-> VS (p CppSrcCode CppHdrCode Value)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode Value
-> CppHdrCode Value -> p CppSrcCode CppHdrCode Value
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair (Double -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k) (typ :: k).
Literal r val typ =>
Double -> VS (r val)
litDouble Double
v) (Double -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k) (typ :: k).
Literal r val typ =>
Double -> VS (r val)
litDouble Double
v)
litFloat :: Float -> VS (p CppSrcCode CppHdrCode Value)
litFloat Float
v = (CppSrcCode Value
-> CppHdrCode Value -> p CppSrcCode CppHdrCode Value)
-> VS (CppSrcCode Value)
-> HdrState ValueState Value
-> VS (p CppSrcCode CppHdrCode Value)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode Value
-> CppHdrCode Value -> p CppSrcCode CppHdrCode Value
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair (Float -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k) (typ :: k).
Literal r val typ =>
Float -> VS (r val)
litFloat Float
v) (Float -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k) (typ :: k).
Literal r val typ =>
Float -> VS (r val)
litFloat Float
v)
litInt :: Integer -> VS (p CppSrcCode CppHdrCode Value)
litInt Integer
v =(CppSrcCode Value
-> CppHdrCode Value -> p CppSrcCode CppHdrCode Value)
-> VS (CppSrcCode Value)
-> HdrState ValueState Value
-> VS (p CppSrcCode CppHdrCode Value)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode Value
-> CppHdrCode Value -> p CppSrcCode CppHdrCode Value
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair (Integer -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k) (typ :: k).
Literal r val typ =>
Integer -> VS (r val)
litInt Integer
v) (Integer -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k) (typ :: k).
Literal r val typ =>
Integer -> VS (r val)
litInt Integer
v)
litString :: String -> VS (p CppSrcCode CppHdrCode Value)
litString String
s = (CppSrcCode Value
-> CppHdrCode Value -> p CppSrcCode CppHdrCode Value)
-> VS (CppSrcCode Value)
-> HdrState ValueState Value
-> VS (p CppSrcCode CppHdrCode Value)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode Value
-> CppHdrCode Value -> p CppSrcCode CppHdrCode Value
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair (String -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k) (typ :: k).
Literal r val typ =>
String -> VS (r val)
litString String
s) (String -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k) (typ :: k).
Literal r val typ =>
String -> VS (r val)
litString String
s)
litArray :: VS (p CppSrcCode CppHdrCode TypeData)
-> [VS (p CppSrcCode CppHdrCode Value)]
-> VS (p CppSrcCode CppHdrCode Value)
litArray = (State ValueState (CppSrcCode TypeData)
-> [VS (CppSrcCode Value)] -> VS (CppSrcCode Value))
-> (State ValueState (CppHdrCode TypeData)
-> [HdrState ValueState Value] -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode TypeData)
-> [VS (p CppSrcCode CppHdrCode Value)]
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> [SrcState s b] -> SrcState t c)
-> (HdrState r a -> [HdrState s b] -> HdrState t c)
-> PairState t p a
-> [PairState t p b]
-> PairState t p c
pair1Val1List State ValueState (CppSrcCode TypeData)
-> [VS (CppSrcCode Value)] -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k) (typ :: k).
Literal r val typ =>
VS (r typ) -> [VS (r val)] -> VS (r val)
litArray State ValueState (CppHdrCode TypeData)
-> [HdrState ValueState Value] -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k) (typ :: k).
Literal r val typ =>
VS (r typ) -> [VS (r val)] -> VS (r val)
litArray
litSet :: VS (p CppSrcCode CppHdrCode TypeData)
-> [VS (p CppSrcCode CppHdrCode Value)]
-> VS (p CppSrcCode CppHdrCode Value)
litSet = (State ValueState (CppSrcCode TypeData)
-> [VS (CppSrcCode Value)] -> VS (CppSrcCode Value))
-> (State ValueState (CppHdrCode TypeData)
-> [HdrState ValueState Value] -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode TypeData)
-> [VS (p CppSrcCode CppHdrCode Value)]
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> [SrcState s b] -> SrcState t c)
-> (HdrState r a -> [HdrState s b] -> HdrState t c)
-> PairState t p a
-> [PairState t p b]
-> PairState t p c
pair1Val1List State ValueState (CppSrcCode TypeData)
-> [VS (CppSrcCode Value)] -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k) (typ :: k).
Literal r val typ =>
VS (r typ) -> [VS (r val)] -> VS (r val)
litSet State ValueState (CppHdrCode TypeData)
-> [HdrState ValueState Value] -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k) (typ :: k).
Literal r val typ =>
VS (r typ) -> [VS (r val)] -> VS (r val)
litSet
litList :: VS (p CppSrcCode CppHdrCode TypeData)
-> [VS (p CppSrcCode CppHdrCode Value)]
-> VS (p CppSrcCode CppHdrCode Value)
litList = (State ValueState (CppSrcCode TypeData)
-> [VS (CppSrcCode Value)] -> VS (CppSrcCode Value))
-> (State ValueState (CppHdrCode TypeData)
-> [HdrState ValueState Value] -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode TypeData)
-> [VS (p CppSrcCode CppHdrCode Value)]
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> [SrcState s b] -> SrcState t c)
-> (HdrState r a -> [HdrState s b] -> HdrState t c)
-> PairState t p a
-> [PairState t p b]
-> PairState t p c
pair1Val1List State ValueState (CppSrcCode TypeData)
-> [VS (CppSrcCode Value)] -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k) (typ :: k).
Literal r val typ =>
VS (r typ) -> [VS (r val)] -> VS (r val)
litList State ValueState (CppHdrCode TypeData)
-> [HdrState ValueState Value] -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k) (typ :: k).
Literal r val typ =>
VS (r typ) -> [VS (r val)] -> VS (r val)
litList
instance (Pair p) => MathConstant (p CppSrcCode CppHdrCode) Value where
pi :: VS (p CppSrcCode CppHdrCode Value)
pi = (CppSrcCode Value
-> CppHdrCode Value -> p CppSrcCode CppHdrCode Value)
-> VS (CppSrcCode Value)
-> HdrState ValueState Value
-> VS (p CppSrcCode CppHdrCode Value)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode Value
-> CppHdrCode Value -> p CppSrcCode CppHdrCode Value
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
MathConstant r val =>
VS (r val)
pi HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k).
MathConstant r val =>
VS (r val)
pi
instance (Pair p) => VariableValue (p CppSrcCode CppHdrCode) Variable Value where
valueOf :: VS (p CppSrcCode CppHdrCode Variable)
-> VS (p CppSrcCode CppHdrCode Value)
valueOf = (SrcState ValueState Variable -> VS (CppSrcCode Value))
-> (HdrState ValueState Variable -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode Variable)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 SrcState ValueState Variable -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k).
VariableValue r var val =>
VS (r var) -> VS (r val)
valueOf HdrState ValueState Variable -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k).
VariableValue r var val =>
VS (r var) -> VS (r val)
valueOf
instance (Pair p) => CommandLineArgs (p CppSrcCode CppHdrCode) Value where
arg :: Integer -> VS (p CppSrcCode CppHdrCode Value)
arg Integer
n = (CppSrcCode Value
-> CppHdrCode Value -> p CppSrcCode CppHdrCode Value)
-> VS (CppSrcCode Value)
-> HdrState ValueState Value
-> VS (p CppSrcCode CppHdrCode Value)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode Value
-> CppHdrCode Value -> p CppSrcCode CppHdrCode Value
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair (Integer -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
CommandLineArgs r val =>
Integer -> VS (r val)
arg Integer
n) (Integer -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k).
CommandLineArgs r val =>
Integer -> VS (r val)
arg Integer
n)
argsList :: VS (p CppSrcCode CppHdrCode Value)
argsList = (CppSrcCode Value
-> CppHdrCode Value -> p CppSrcCode CppHdrCode Value)
-> VS (CppSrcCode Value)
-> HdrState ValueState Value
-> VS (p CppSrcCode CppHdrCode Value)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode Value
-> CppHdrCode Value -> p CppSrcCode CppHdrCode Value
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
CommandLineArgs r val =>
VS (r val)
argsList HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k).
CommandLineArgs r val =>
VS (r val)
argsList
argExists :: Integer -> VS (p CppSrcCode CppHdrCode Value)
argExists Integer
i = (CppSrcCode Value
-> CppHdrCode Value -> p CppSrcCode CppHdrCode Value)
-> VS (CppSrcCode Value)
-> HdrState ValueState Value
-> VS (p CppSrcCode CppHdrCode Value)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode Value
-> CppHdrCode Value -> p CppSrcCode CppHdrCode Value
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair (Integer -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
CommandLineArgs r val =>
Integer -> VS (r val)
argExists Integer
i) (Integer -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k).
CommandLineArgs r val =>
Integer -> VS (r val)
argExists Integer
i)
instance (Pair p) => NumericExpression (p CppSrcCode CppHdrCode) Value where
#~ :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
(#~) = (VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
NumericExpression r val =>
VS (r val) -> VS (r val)
(#~) HdrState ValueState Value -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k).
NumericExpression r val =>
VS (r val) -> VS (r val)
(#~)
#/^ :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
(#/^) = (VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
NumericExpression r val =>
VS (r val) -> VS (r val)
(#/^) HdrState ValueState Value -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k).
NumericExpression r val =>
VS (r val) -> VS (r val)
(#/^)
#| :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
(#|) = (VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
NumericExpression r val =>
VS (r val) -> VS (r val)
(#|) HdrState ValueState Value -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k).
NumericExpression r val =>
VS (r val) -> VS (r val)
(#|)
#+ :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
(#+) = (VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> (HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
NumericExpression r val =>
VS (r val) -> VS (r val) -> VS (r val)
(#+) HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k).
NumericExpression r val =>
VS (r val) -> VS (r val) -> VS (r val)
(#+)
#- :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
(#-) = (VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> (HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
NumericExpression r val =>
VS (r val) -> VS (r val) -> VS (r val)
(#-) HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k).
NumericExpression r val =>
VS (r val) -> VS (r val) -> VS (r val)
(#-)
#* :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
(#*) = (VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> (HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
NumericExpression r val =>
VS (r val) -> VS (r val) -> VS (r val)
(#*) HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k).
NumericExpression r val =>
VS (r val) -> VS (r val) -> VS (r val)
(#*)
#/ :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
(#/) = (VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> (HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
NumericExpression r val =>
VS (r val) -> VS (r val) -> VS (r val)
(#/) HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k).
NumericExpression r val =>
VS (r val) -> VS (r val) -> VS (r val)
(#/)
#% :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
(#%) = (VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> (HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
NumericExpression r val =>
VS (r val) -> VS (r val) -> VS (r val)
(#%) HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k).
NumericExpression r val =>
VS (r val) -> VS (r val) -> VS (r val)
(#%)
#^ :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
(#^) = (VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> (HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
NumericExpression r val =>
VS (r val) -> VS (r val) -> VS (r val)
(#^) HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k).
NumericExpression r val =>
VS (r val) -> VS (r val) -> VS (r val)
(#^)
log :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
log = (VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
NumericExpression r val =>
VS (r val) -> VS (r val)
log HdrState ValueState Value -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k).
NumericExpression r val =>
VS (r val) -> VS (r val)
log
ln :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
ln = (VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
NumericExpression r val =>
VS (r val) -> VS (r val)
ln HdrState ValueState Value -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k).
NumericExpression r val =>
VS (r val) -> VS (r val)
ln
exp :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
exp = (VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
NumericExpression r val =>
VS (r val) -> VS (r val)
exp HdrState ValueState Value -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k).
NumericExpression r val =>
VS (r val) -> VS (r val)
exp
sin :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
sin = (VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
NumericExpression r val =>
VS (r val) -> VS (r val)
sin HdrState ValueState Value -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k).
NumericExpression r val =>
VS (r val) -> VS (r val)
sin
cos :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
cos = (VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
NumericExpression r val =>
VS (r val) -> VS (r val)
cos HdrState ValueState Value -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k).
NumericExpression r val =>
VS (r val) -> VS (r val)
cos
tan :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
tan = (VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
NumericExpression r val =>
VS (r val) -> VS (r val)
tan HdrState ValueState Value -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k).
NumericExpression r val =>
VS (r val) -> VS (r val)
tan
csc :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
csc = (VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
NumericExpression r val =>
VS (r val) -> VS (r val)
csc HdrState ValueState Value -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k).
NumericExpression r val =>
VS (r val) -> VS (r val)
csc
sec :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
sec = (VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
NumericExpression r val =>
VS (r val) -> VS (r val)
sec HdrState ValueState Value -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k).
NumericExpression r val =>
VS (r val) -> VS (r val)
sec
cot :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
cot = (VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
NumericExpression r val =>
VS (r val) -> VS (r val)
cot HdrState ValueState Value -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k).
NumericExpression r val =>
VS (r val) -> VS (r val)
cot
arcsin :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
arcsin = (VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
NumericExpression r val =>
VS (r val) -> VS (r val)
arcsin HdrState ValueState Value -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k).
NumericExpression r val =>
VS (r val) -> VS (r val)
arcsin
arccos :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
arccos = (VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
NumericExpression r val =>
VS (r val) -> VS (r val)
arccos HdrState ValueState Value -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k).
NumericExpression r val =>
VS (r val) -> VS (r val)
arccos
arctan :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
arctan = (VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
NumericExpression r val =>
VS (r val) -> VS (r val)
arctan HdrState ValueState Value -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k).
NumericExpression r val =>
VS (r val) -> VS (r val)
arctan
floor :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
floor = (VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
NumericExpression r val =>
VS (r val) -> VS (r val)
floor HdrState ValueState Value -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k).
NumericExpression r val =>
VS (r val) -> VS (r val)
floor
ceil :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
ceil = (VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
NumericExpression r val =>
VS (r val) -> VS (r val)
ceil HdrState ValueState Value -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k).
NumericExpression r val =>
VS (r val) -> VS (r val)
ceil
instance (Pair p) => BooleanExpression (p CppSrcCode CppHdrCode) Value where
?! :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
(?!) = (VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
BooleanExpression r val =>
VS (r val) -> VS (r val)
(?!) HdrState ValueState Value -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k).
BooleanExpression r val =>
VS (r val) -> VS (r val)
(?!)
?&& :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
(?&&) = (VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> (HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
BooleanExpression r val =>
VS (r val) -> VS (r val) -> VS (r val)
(?&&) HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k).
BooleanExpression r val =>
VS (r val) -> VS (r val) -> VS (r val)
(?&&)
?|| :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
(?||) = (VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> (HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
BooleanExpression r val =>
VS (r val) -> VS (r val) -> VS (r val)
(?||) HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k).
BooleanExpression r val =>
VS (r val) -> VS (r val) -> VS (r val)
(?||)
instance (Pair p) => Comparison (p CppSrcCode CppHdrCode) Value where
?< :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
(?<) = (VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> (HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
Comparison r val =>
VS (r val) -> VS (r val) -> VS (r val)
(?<) HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k).
Comparison r val =>
VS (r val) -> VS (r val) -> VS (r val)
(?<)
?<= :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
(?<=) = (VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> (HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
Comparison r val =>
VS (r val) -> VS (r val) -> VS (r val)
(?<=) HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k).
Comparison r val =>
VS (r val) -> VS (r val) -> VS (r val)
(?<=)
?> :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
(?>) = (VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> (HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
Comparison r val =>
VS (r val) -> VS (r val) -> VS (r val)
(?>) HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k).
Comparison r val =>
VS (r val) -> VS (r val) -> VS (r val)
(?>)
?>= :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
(?>=) = (VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> (HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
Comparison r val =>
VS (r val) -> VS (r val) -> VS (r val)
(?>=) HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k).
Comparison r val =>
VS (r val) -> VS (r val) -> VS (r val)
(?>=)
?== :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
(?==) = (VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> (HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
Comparison r val =>
VS (r val) -> VS (r val) -> VS (r val)
(?==) HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k).
Comparison r val =>
VS (r val) -> VS (r val) -> VS (r val)
(?==)
?!= :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
(?!=) = (VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> (HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
Comparison r val =>
VS (r val) -> VS (r val) -> VS (r val)
(?!=) HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k).
Comparison r val =>
VS (r val) -> VS (r val) -> VS (r val)
(?!=)
instance (Pair p) => ValueExpression (p CppSrcCode CppHdrCode) Variable Value BinderD TypeData where
inlineIf :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
inlineIf = (VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value))
-> (HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c u d.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c -> SrcState u d)
-> (HdrState r a -> HdrState s b -> HdrState t c -> HdrState u d)
-> PairState u p a
-> PairState u p b
-> PairState u p c
-> PairState u p d
pair3 VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (binder :: k)
(typ :: k).
ValueExpression r var val binder typ =>
VS (r val) -> VS (r val) -> VS (r val) -> VS (r val)
inlineIf HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (binder :: k)
(typ :: k).
ValueExpression r var val binder typ =>
VS (r val) -> VS (r val) -> VS (r val) -> VS (r val)
inlineIf
funcAppMixedArgs :: MixedCall (p CppSrcCode CppHdrCode) Variable Value TypeData
funcAppMixedArgs String
n = (State ValueState (CppSrcCode TypeData)
-> [VS (CppSrcCode Value)]
-> [(SrcState ValueState Variable, VS (CppSrcCode Value))]
-> VS (CppSrcCode Value))
-> (State ValueState (CppHdrCode TypeData)
-> [HdrState ValueState Value]
-> [(HdrState ValueState Variable, HdrState ValueState Value)]
-> HdrState ValueState Value)
-> PairState ValueState p TypeData
-> [VS (p CppSrcCode CppHdrCode Value)]
-> [(PairState ValueState p Variable,
VS (p CppSrcCode CppHdrCode Value))]
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c u d v e.
Pair p =>
(SrcState r a
-> [SrcState s b]
-> [(SrcState t c, SrcState u d)]
-> SrcState v e)
-> (HdrState r a
-> [HdrState s b]
-> [(HdrState t c, HdrState u d)]
-> HdrState v e)
-> PairState v p a
-> [PairState v p b]
-> [(PairState v p c, PairState v p d)]
-> PairState v p e
pair1Val3Lists (MixedCall CppSrcCode Variable Value TypeData
forall {k} (r :: k -> *) (var :: k) (val :: k) (binder :: k)
(typ :: k).
ValueExpression r var val binder typ =>
MixedCall r var val typ
funcAppMixedArgs String
n) (MixedCall CppHdrCode Variable Value TypeData
forall {k} (r :: k -> *) (var :: k) (val :: k) (binder :: k)
(typ :: k).
ValueExpression r var val binder typ =>
MixedCall r var val typ
funcAppMixedArgs String
n)
extFuncAppMixedArgs :: String
-> MixedCall (p CppSrcCode CppHdrCode) Variable Value TypeData
extFuncAppMixedArgs String
l String
n = (State ValueState (CppSrcCode TypeData)
-> [VS (CppSrcCode Value)]
-> [(SrcState ValueState Variable, VS (CppSrcCode Value))]
-> VS (CppSrcCode Value))
-> (State ValueState (CppHdrCode TypeData)
-> [HdrState ValueState Value]
-> [(HdrState ValueState Variable, HdrState ValueState Value)]
-> HdrState ValueState Value)
-> PairState ValueState p TypeData
-> [VS (p CppSrcCode CppHdrCode Value)]
-> [(PairState ValueState p Variable,
VS (p CppSrcCode CppHdrCode Value))]
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c u d v e.
Pair p =>
(SrcState r a
-> [SrcState s b]
-> [(SrcState t c, SrcState u d)]
-> SrcState v e)
-> (HdrState r a
-> [HdrState s b]
-> [(HdrState t c, HdrState u d)]
-> HdrState v e)
-> PairState v p a
-> [PairState v p b]
-> [(PairState v p c, PairState v p d)]
-> PairState v p e
pair1Val3Lists
(String -> MixedCall CppSrcCode Variable Value TypeData
forall {k} (r :: k -> *) (var :: k) (val :: k) (binder :: k)
(typ :: k).
ValueExpression r var val binder typ =>
String -> MixedCall r var val typ
extFuncAppMixedArgs String
l String
n)
(String -> MixedCall CppHdrCode Variable Value TypeData
forall {k} (r :: k -> *) (var :: k) (val :: k) (binder :: k)
(typ :: k).
ValueExpression r var val binder typ =>
String -> MixedCall r var val typ
extFuncAppMixedArgs String
l String
n)
libFuncAppMixedArgs :: String
-> MixedCall (p CppSrcCode CppHdrCode) Variable Value TypeData
libFuncAppMixedArgs String
l String
n = (State ValueState (CppSrcCode TypeData)
-> [VS (CppSrcCode Value)]
-> [(SrcState ValueState Variable, VS (CppSrcCode Value))]
-> VS (CppSrcCode Value))
-> (State ValueState (CppHdrCode TypeData)
-> [HdrState ValueState Value]
-> [(HdrState ValueState Variable, HdrState ValueState Value)]
-> HdrState ValueState Value)
-> PairState ValueState p TypeData
-> [VS (p CppSrcCode CppHdrCode Value)]
-> [(PairState ValueState p Variable,
VS (p CppSrcCode CppHdrCode Value))]
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c u d v e.
Pair p =>
(SrcState r a
-> [SrcState s b]
-> [(SrcState t c, SrcState u d)]
-> SrcState v e)
-> (HdrState r a
-> [HdrState s b]
-> [(HdrState t c, HdrState u d)]
-> HdrState v e)
-> PairState v p a
-> [PairState v p b]
-> [(PairState v p c, PairState v p d)]
-> PairState v p e
pair1Val3Lists
(String -> MixedCall CppSrcCode Variable Value TypeData
forall {k} (r :: k -> *) (var :: k) (val :: k) (binder :: k)
(typ :: k).
ValueExpression r var val binder typ =>
String -> MixedCall r var val typ
extFuncAppMixedArgs String
l String
n)
(String -> MixedCall CppHdrCode Variable Value TypeData
forall {k} (r :: k -> *) (var :: k) (val :: k) (binder :: k)
(typ :: k).
ValueExpression r var val binder typ =>
String -> MixedCall r var val typ
extFuncAppMixedArgs String
l String
n)
lambda :: [VS (p CppSrcCode CppHdrCode BinderD)]
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
lambda = ([SrcState ValueState BinderD]
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> ([HdrState ValueState BinderD]
-> HdrState ValueState Value -> HdrState ValueState Value)
-> [VS (p CppSrcCode CppHdrCode BinderD)]
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
([SrcState r a] -> SrcState s b -> SrcState t c)
-> ([HdrState r a] -> HdrState s b -> HdrState t c)
-> [PairState t p a]
-> PairState t p b
-> PairState t p c
pair1List1Val [SrcState ValueState BinderD]
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (binder :: k)
(typ :: k).
ValueExpression r var val binder typ =>
[VS (r binder)] -> VS (r val) -> VS (r val)
lambda [HdrState ValueState BinderD]
-> HdrState ValueState Value -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (binder :: k)
(typ :: k).
ValueExpression r var val binder typ =>
[VS (r binder)] -> VS (r val) -> VS (r val)
lambda
notNull :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
notNull = (VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (binder :: k)
(typ :: k).
ValueExpression r var val binder typ =>
VS (r val) -> VS (r val)
notNull HdrState ValueState Value -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (binder :: k)
(typ :: k).
ValueExpression r var val binder typ =>
VS (r val) -> VS (r val)
notNull
instance (Pair p) => OOValueExpression (p CppSrcCode CppHdrCode) Variable Value TypeData where
newObjMixedArgs :: MixedCtorCall (p CppSrcCode CppHdrCode) Variable Value TypeData
newObjMixedArgs = (State ValueState (CppSrcCode TypeData)
-> [VS (CppSrcCode Value)]
-> [(SrcState ValueState Variable, VS (CppSrcCode Value))]
-> VS (CppSrcCode Value))
-> (State ValueState (CppHdrCode TypeData)
-> [HdrState ValueState Value]
-> [(HdrState ValueState Variable, HdrState ValueState Value)]
-> HdrState ValueState Value)
-> MixedCtorCall (p CppSrcCode CppHdrCode) Variable Value TypeData
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c u d v e.
Pair p =>
(SrcState r a
-> [SrcState s b]
-> [(SrcState t c, SrcState u d)]
-> SrcState v e)
-> (HdrState r a
-> [HdrState s b]
-> [(HdrState t c, HdrState u d)]
-> HdrState v e)
-> PairState v p a
-> [PairState v p b]
-> [(PairState v p c, PairState v p d)]
-> PairState v p e
pair1Val3Lists State ValueState (CppSrcCode TypeData)
-> [VS (CppSrcCode Value)]
-> [(SrcState ValueState Variable, VS (CppSrcCode Value))]
-> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
OOValueExpression r var val typ =>
MixedCtorCall r var val typ
newObjMixedArgs State ValueState (CppHdrCode TypeData)
-> [HdrState ValueState Value]
-> [(HdrState ValueState Variable, HdrState ValueState Value)]
-> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
OOValueExpression r var val typ =>
MixedCtorCall r var val typ
newObjMixedArgs
extNewObjMixedArgs :: String
-> MixedCtorCall (p CppSrcCode CppHdrCode) Variable Value TypeData
extNewObjMixedArgs String
l = (State ValueState (CppSrcCode TypeData)
-> [VS (CppSrcCode Value)]
-> [(SrcState ValueState Variable, VS (CppSrcCode Value))]
-> VS (CppSrcCode Value))
-> (State ValueState (CppHdrCode TypeData)
-> [HdrState ValueState Value]
-> [(HdrState ValueState Variable, HdrState ValueState Value)]
-> HdrState ValueState Value)
-> MixedCtorCall (p CppSrcCode CppHdrCode) Variable Value TypeData
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c u d v e.
Pair p =>
(SrcState r a
-> [SrcState s b]
-> [(SrcState t c, SrcState u d)]
-> SrcState v e)
-> (HdrState r a
-> [HdrState s b]
-> [(HdrState t c, HdrState u d)]
-> HdrState v e)
-> PairState v p a
-> [PairState v p b]
-> [(PairState v p c, PairState v p d)]
-> PairState v p e
pair1Val3Lists
(MixedCall CppSrcCode Variable Value TypeData
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
OOValueExpression r var val typ =>
String -> MixedCtorCall r var val typ
extNewObjMixedArgs String
l)
(MixedCall CppHdrCode Variable Value TypeData
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
OOValueExpression r var val typ =>
String -> MixedCtorCall r var val typ
extNewObjMixedArgs String
l)
libNewObjMixedArgs :: String
-> MixedCtorCall (p CppSrcCode CppHdrCode) Variable Value TypeData
libNewObjMixedArgs String
l = (State ValueState (CppSrcCode TypeData)
-> [VS (CppSrcCode Value)]
-> [(SrcState ValueState Variable, VS (CppSrcCode Value))]
-> VS (CppSrcCode Value))
-> (State ValueState (CppHdrCode TypeData)
-> [HdrState ValueState Value]
-> [(HdrState ValueState Variable, HdrState ValueState Value)]
-> HdrState ValueState Value)
-> MixedCtorCall (p CppSrcCode CppHdrCode) Variable Value TypeData
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c u d v e.
Pair p =>
(SrcState r a
-> [SrcState s b]
-> [(SrcState t c, SrcState u d)]
-> SrcState v e)
-> (HdrState r a
-> [HdrState s b]
-> [(HdrState t c, HdrState u d)]
-> HdrState v e)
-> PairState v p a
-> [PairState v p b]
-> [(PairState v p c, PairState v p d)]
-> PairState v p e
pair1Val3Lists
(MixedCall CppSrcCode Variable Value TypeData
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
OOValueExpression r var val typ =>
String -> MixedCtorCall r var val typ
extNewObjMixedArgs String
l)
(MixedCall CppHdrCode Variable Value TypeData
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
OOValueExpression r var val typ =>
String -> MixedCtorCall r var val typ
extNewObjMixedArgs String
l)
instance (Pair p) => RenderValue (p CppSrcCode CppHdrCode) Variable Value TypeData where
inputFunc :: VS (p CppSrcCode CppHdrCode Value)
inputFunc = (CppSrcCode Value
-> CppHdrCode Value -> p CppSrcCode CppHdrCode Value)
-> VS (CppSrcCode Value)
-> HdrState ValueState Value
-> VS (p CppSrcCode CppHdrCode Value)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode Value
-> CppHdrCode Value -> p CppSrcCode CppHdrCode Value
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r val)
inputFunc HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r val)
inputFunc
printFunc :: VS (p CppSrcCode CppHdrCode Value)
printFunc = (CppSrcCode Value
-> CppHdrCode Value -> p CppSrcCode CppHdrCode Value)
-> VS (CppSrcCode Value)
-> HdrState ValueState Value
-> VS (p CppSrcCode CppHdrCode Value)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode Value
-> CppHdrCode Value -> p CppSrcCode CppHdrCode Value
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r val)
printFunc HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r val)
printFunc
printLnFunc :: VS (p CppSrcCode CppHdrCode Value)
printLnFunc = (CppSrcCode Value
-> CppHdrCode Value -> p CppSrcCode CppHdrCode Value)
-> VS (CppSrcCode Value)
-> HdrState ValueState Value
-> VS (p CppSrcCode CppHdrCode Value)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode Value
-> CppHdrCode Value -> p CppSrcCode CppHdrCode Value
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r val)
printLnFunc HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r val)
printLnFunc
printFileFunc :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
printFileFunc = (VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r val) -> VS (r val)
printFileFunc HdrState ValueState Value -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r val) -> VS (r val)
printFileFunc
printFileLnFunc :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
printFileLnFunc = (VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r val) -> VS (r val)
printFileLnFunc HdrState ValueState Value -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r val) -> VS (r val)
printFileLnFunc
cast :: VS (p CppSrcCode CppHdrCode TypeData)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
cast = (State ValueState (CppSrcCode TypeData)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> (State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Value -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode TypeData)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 State ValueState (CppSrcCode TypeData)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> VS (r val) -> VS (r val)
cast State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Value -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> VS (r val) -> VS (r val)
cast
call :: Maybe String
-> Maybe Doc
-> MixedCall (p CppSrcCode CppHdrCode) Variable Value TypeData
call Maybe String
l Maybe Doc
o String
n = (State ValueState (CppSrcCode TypeData)
-> [VS (CppSrcCode Value)]
-> [(SrcState ValueState Variable, VS (CppSrcCode Value))]
-> VS (CppSrcCode Value))
-> (State ValueState (CppHdrCode TypeData)
-> [HdrState ValueState Value]
-> [(HdrState ValueState Variable, HdrState ValueState Value)]
-> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode TypeData)
-> [VS (p CppSrcCode CppHdrCode Value)]
-> [(PairState ValueState p Variable,
VS (p CppSrcCode CppHdrCode Value))]
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c u d v e.
Pair p =>
(SrcState r a
-> [SrcState s b]
-> [(SrcState t c, SrcState u d)]
-> SrcState v e)
-> (HdrState r a
-> [HdrState s b]
-> [(HdrState t c, HdrState u d)]
-> HdrState v e)
-> PairState v p a
-> [PairState v p b]
-> [(PairState v p c, PairState v p d)]
-> PairState v p e
pair1Val3Lists (Maybe String
-> Maybe Doc -> MixedCall CppSrcCode Variable Value TypeData
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
Maybe String -> Maybe Doc -> MixedCall r var val typ
call Maybe String
l Maybe Doc
o String
n) (Maybe String
-> Maybe Doc -> MixedCall CppHdrCode Variable Value TypeData
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
Maybe String -> Maybe Doc -> MixedCall r var val typ
call Maybe String
l Maybe Doc
o String
n)
valFromData :: Maybe Int
-> Maybe Integer
-> VS (p CppSrcCode CppHdrCode TypeData)
-> Doc
-> VS (p CppSrcCode CppHdrCode Value)
valFromData Maybe Int
p Maybe Integer
i VS (p CppSrcCode CppHdrCode TypeData)
t' Doc
d = (State ValueState (CppSrcCode TypeData) -> VS (CppSrcCode Value))
-> (State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode TypeData)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 (\State ValueState (CppSrcCode TypeData)
t -> Maybe Int
-> Maybe Integer
-> State ValueState (CppSrcCode TypeData)
-> Doc
-> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
Maybe Int -> Maybe Integer -> VS (r typ) -> Doc -> VS (r val)
valFromData Maybe Int
p Maybe Integer
i State ValueState (CppSrcCode TypeData)
t Doc
d)
(\State ValueState (CppHdrCode TypeData)
t -> Maybe Int
-> Maybe Integer
-> State ValueState (CppHdrCode TypeData)
-> Doc
-> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
Maybe Int -> Maybe Integer -> VS (r typ) -> Doc -> VS (r val)
valFromData Maybe Int
p Maybe Integer
i State ValueState (CppHdrCode TypeData)
t Doc
d) VS (p CppSrcCode CppHdrCode TypeData)
t'
instance (Pair p) => ValueElim (p CppSrcCode CppHdrCode) Value where
valuePrec :: p CppSrcCode CppHdrCode Value -> Maybe Int
valuePrec p CppSrcCode CppHdrCode Value
v = CppSrcCode Value -> Maybe Int
forall {k} (r :: k -> *) (val :: k).
ValueElim r val =>
r val -> Maybe Int
valuePrec (CppSrcCode Value -> Maybe Int) -> CppSrcCode Value -> Maybe Int
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode Value -> CppSrcCode Value
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode Value
v
valueInt :: p CppSrcCode CppHdrCode Value -> Maybe Integer
valueInt p CppSrcCode CppHdrCode Value
v = CppSrcCode Value -> Maybe Integer
forall {k} (r :: k -> *) (val :: k).
ValueElim r val =>
r val -> Maybe Integer
valueInt (CppSrcCode Value -> Maybe Integer)
-> CppSrcCode Value -> Maybe Integer
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode Value -> CppSrcCode Value
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode Value
v
value :: p CppSrcCode CppHdrCode Value -> Doc
value p CppSrcCode CppHdrCode Value
v = CppSrcCode Value -> Doc
forall {k} (r :: k -> *) (val :: k).
ValueElim r val =>
r val -> Doc
RC.value (CppSrcCode Value -> Doc) -> CppSrcCode Value -> Doc
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode Value -> CppSrcCode Value
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode Value
v
instance (Pair p) => InternalValueExp (p CppSrcCode CppHdrCode) Variable Value TypeData where
objMethodCallMixedArgs' :: String
-> VS (p CppSrcCode CppHdrCode TypeData)
-> VS (p CppSrcCode CppHdrCode Value)
-> [VS (p CppSrcCode CppHdrCode Value)]
-> NamedArgs (p CppSrcCode CppHdrCode) Variable Value
-> VS (p CppSrcCode CppHdrCode Value)
objMethodCallMixedArgs' String
f = (State ValueState (CppSrcCode TypeData)
-> VS (CppSrcCode Value)
-> [VS (CppSrcCode Value)]
-> [(SrcState ValueState Variable, VS (CppSrcCode Value))]
-> VS (CppSrcCode Value))
-> (State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Value
-> [HdrState ValueState Value]
-> [(HdrState ValueState Variable, HdrState ValueState Value)]
-> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode TypeData)
-> VS (p CppSrcCode CppHdrCode Value)
-> [VS (p CppSrcCode CppHdrCode Value)]
-> NamedArgs (p CppSrcCode CppHdrCode) Variable Value
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c u d v e w
f.
Pair p =>
(SrcState r a
-> SrcState s b
-> [SrcState t c]
-> [(SrcState u d, SrcState v e)]
-> SrcState w f)
-> (HdrState r a
-> HdrState s b
-> [HdrState t c]
-> [(HdrState u d, HdrState v e)]
-> HdrState w f)
-> PairState w p a
-> PairState w p b
-> [PairState w p c]
-> [(PairState w p d, PairState w p e)]
-> PairState w p f
pair2Vals3Lists
(String
-> State ValueState (CppSrcCode TypeData)
-> VS (CppSrcCode Value)
-> [VS (CppSrcCode Value)]
-> [(SrcState ValueState Variable, VS (CppSrcCode Value))]
-> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
InternalValueExp r var val typ =>
String
-> VS (r typ)
-> VS (r val)
-> [VS (r val)]
-> NamedArgs r var val
-> VS (r val)
objMethodCallMixedArgs' String
f)
(String
-> State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Value
-> [HdrState ValueState Value]
-> [(HdrState ValueState Variable, HdrState ValueState Value)]
-> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
InternalValueExp r var val typ =>
String
-> VS (r typ)
-> VS (r val)
-> [VS (r val)]
-> NamedArgs r var val
-> VS (r val)
objMethodCallMixedArgs' String
f)
classMethodCallMixedArgs' :: String
-> VS (p CppSrcCode CppHdrCode TypeData)
-> VS (p CppSrcCode CppHdrCode TypeData)
-> [VS (p CppSrcCode CppHdrCode Value)]
-> NamedArgs (p CppSrcCode CppHdrCode) Variable Value
-> VS (p CppSrcCode CppHdrCode Value)
classMethodCallMixedArgs' String
f = (State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData)
-> [VS (CppSrcCode Value)]
-> [(SrcState ValueState Variable, VS (CppSrcCode Value))]
-> VS (CppSrcCode Value))
-> (State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData)
-> [HdrState ValueState Value]
-> [(HdrState ValueState Variable, HdrState ValueState Value)]
-> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode TypeData)
-> VS (p CppSrcCode CppHdrCode TypeData)
-> [VS (p CppSrcCode CppHdrCode Value)]
-> NamedArgs (p CppSrcCode CppHdrCode) Variable Value
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c u d v e w
f.
Pair p =>
(SrcState r a
-> SrcState s b
-> [SrcState t c]
-> [(SrcState u d, SrcState v e)]
-> SrcState w f)
-> (HdrState r a
-> HdrState s b
-> [HdrState t c]
-> [(HdrState u d, HdrState v e)]
-> HdrState w f)
-> PairState w p a
-> PairState w p b
-> [PairState w p c]
-> [(PairState w p d, PairState w p e)]
-> PairState w p f
pair2Vals3Lists
(String
-> State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData)
-> [VS (CppSrcCode Value)]
-> [(SrcState ValueState Variable, VS (CppSrcCode Value))]
-> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
InternalValueExp r var val typ =>
String
-> VS (r typ)
-> VS (r typ)
-> [VS (r val)]
-> NamedArgs r var val
-> VS (r val)
classMethodCallMixedArgs' String
f)
(String
-> State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData)
-> [HdrState ValueState Value]
-> [(HdrState ValueState Variable, HdrState ValueState Value)]
-> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
InternalValueExp r var val typ =>
String
-> VS (r typ)
-> VS (r typ)
-> [VS (r val)]
-> NamedArgs r var val
-> VS (r val)
classMethodCallMixedArgs' String
f)
instance (Pair p) => OOFunctionSym (p CppSrcCode CppHdrCode) Value TypeData where
func :: String
-> VS (p CppSrcCode CppHdrCode TypeData)
-> [VS (p CppSrcCode CppHdrCode Value)]
-> VS (p CppSrcCode CppHdrCode FuncData)
func String
l = (State ValueState (CppSrcCode TypeData)
-> [VS (CppSrcCode Value)] -> SrcState ValueState FuncData)
-> (State ValueState (CppHdrCode TypeData)
-> [HdrState ValueState Value] -> HdrState ValueState FuncData)
-> VS (p CppSrcCode CppHdrCode TypeData)
-> [VS (p CppSrcCode CppHdrCode Value)]
-> VS (p CppSrcCode CppHdrCode FuncData)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> [SrcState s b] -> SrcState t c)
-> (HdrState r a -> [HdrState s b] -> HdrState t c)
-> PairState t p a
-> [PairState t p b]
-> PairState t p c
pair1Val1List (String
-> State ValueState (CppSrcCode TypeData)
-> [VS (CppSrcCode Value)]
-> SrcState ValueState FuncData
forall (r :: * -> *) val typ.
OOFunctionSym r val typ =>
String -> VS (r typ) -> [VS (r val)] -> VS (r FuncData)
func String
l) (String
-> State ValueState (CppHdrCode TypeData)
-> [HdrState ValueState Value]
-> HdrState ValueState FuncData
forall (r :: * -> *) val typ.
OOFunctionSym r val typ =>
String -> VS (r typ) -> [VS (r val)] -> VS (r FuncData)
func String
l)
objAccess :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode FuncData)
-> VS (p CppSrcCode CppHdrCode Value)
objAccess = (VS (CppSrcCode Value)
-> SrcState ValueState FuncData -> VS (CppSrcCode Value))
-> (HdrState ValueState Value
-> HdrState ValueState FuncData -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode FuncData)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 VS (CppSrcCode Value)
-> SrcState ValueState FuncData -> VS (CppSrcCode Value)
forall (r :: * -> *) val typ.
OOFunctionSym r val typ =>
VS (r val) -> VS (r FuncData) -> VS (r val)
objAccess HdrState ValueState Value
-> HdrState ValueState FuncData -> HdrState ValueState Value
forall (r :: * -> *) val typ.
OOFunctionSym r val typ =>
VS (r val) -> VS (r FuncData) -> VS (r val)
objAccess
instance (Pair p) => GetSet (p CppSrcCode CppHdrCode) Variable Value where
get :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Variable)
-> VS (p CppSrcCode CppHdrCode Value)
get = (VS (CppSrcCode Value)
-> SrcState ValueState Variable -> VS (CppSrcCode Value))
-> (HdrState ValueState Value
-> HdrState ValueState Variable -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Variable)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 VS (CppSrcCode Value)
-> SrcState ValueState Variable -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k).
GetSet r var val =>
VS (r val) -> VS (r var) -> VS (r val)
get HdrState ValueState Value
-> HdrState ValueState Variable -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k).
GetSet r var val =>
VS (r val) -> VS (r var) -> VS (r val)
get
set :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Variable)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
set = (VS (CppSrcCode Value)
-> SrcState ValueState Variable
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value))
-> (HdrState ValueState Value
-> HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Variable)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c u d.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c -> SrcState u d)
-> (HdrState r a -> HdrState s b -> HdrState t c -> HdrState u d)
-> PairState u p a
-> PairState u p b
-> PairState u p c
-> PairState u p d
pair3 VS (CppSrcCode Value)
-> SrcState ValueState Variable
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k).
GetSet r var val =>
VS (r val) -> VS (r var) -> VS (r val) -> VS (r val)
set HdrState ValueState Value
-> HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k).
GetSet r var val =>
VS (r val) -> VS (r var) -> VS (r val) -> VS (r val)
set
instance (Pair p) => IndexTranslator (p CppSrcCode CppHdrCode) Value where
intToIndex :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
intToIndex = (VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
IndexTranslator r val =>
VS (r val) -> VS (r val)
intToIndex HdrState ValueState Value -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k).
IndexTranslator r val =>
VS (r val) -> VS (r val)
intToIndex
indexToInt :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
indexToInt = (VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
IndexTranslator r val =>
VS (r val) -> VS (r val)
indexToInt HdrState ValueState Value -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k).
IndexTranslator r val =>
VS (r val) -> VS (r val)
indexToInt
instance (Pair p) => Reference (p CppSrcCode CppHdrCode) Value where
makeRef :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
makeRef = (VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
Reference r val =>
VS (r val) -> VS (r val)
makeRef HdrState ValueState Value -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k).
Reference r val =>
VS (r val) -> VS (r val)
makeRef
maybeDeref :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
maybeDeref = (VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
Reference r val =>
VS (r val) -> VS (r val)
maybeDeref HdrState ValueState Value -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k).
Reference r val =>
VS (r val) -> VS (r val)
maybeDeref
instance (Pair p) => Array (p CppSrcCode CppHdrCode) Variable Value where
arrayElem :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Variable)
arrayElem = (VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> SrcState ValueState Variable)
-> (HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Variable)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Variable)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> SrcState ValueState Variable
forall {k} (r :: k -> *) (var :: k) (val :: k).
Array r var val =>
VS (r val) -> VS (r val) -> VS (r var)
arrayElem HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Variable
forall {k} (r :: k -> *) (var :: k) (val :: k).
Array r var val =>
VS (r val) -> VS (r val) -> VS (r var)
arrayElem
arrayLength :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
arrayLength = (VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k).
Array r var val =>
VS (r val) -> VS (r val)
arrayLength HdrState ValueState Value -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k).
Array r var val =>
VS (r val) -> VS (r val)
arrayLength
arrayCopy :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
arrayCopy = (VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k).
Array r var val =>
VS (r val) -> VS (r val)
arrayCopy HdrState ValueState Value -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k).
Array r var val =>
VS (r val) -> VS (r val)
arrayCopy
instance (Pair p) => List (p CppSrcCode CppHdrCode) Value where
listSize :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
listSize = (VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
List r val =>
VS (r val) -> VS (r val)
listSize HdrState ValueState Value -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k).
List r val =>
VS (r val) -> VS (r val)
listSize
listAccess :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
listAccess = (VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> (HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
List r val =>
VS (r val) -> VS (r val) -> VS (r val)
listAccess HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k).
List r val =>
VS (r val) -> VS (r val) -> VS (r val)
listAccess
indexOf :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
indexOf = (VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> (HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
List r val =>
VS (r val) -> VS (r val) -> VS (r val)
indexOf HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k).
List r val =>
VS (r val) -> VS (r val) -> VS (r val)
indexOf
instance (Pair p) => ListStatement (p CppSrcCode CppHdrCode) Statement Value where
listAdd :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> MS (p CppSrcCode CppHdrCode Statement)
listAdd VS (p CppSrcCode CppHdrCode Value)
l VS (p CppSrcCode CppHdrCode Value)
i VS (p CppSrcCode CppHdrCode Value)
v = (VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> SrcState MethodState Statement)
-> (HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState MethodState Statement)
-> PairState MethodState p Value
-> PairState MethodState p Value
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c u d.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c -> SrcState u d)
-> (HdrState r a -> HdrState s b -> HdrState t c -> HdrState u d)
-> PairState u p a
-> PairState u p b
-> PairState u p c
-> PairState u p d
pair3 VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (val :: k).
ListStatement r stmt val =>
VS (r val) -> VS (r val) -> VS (r val) -> MS (r stmt)
listAdd HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (val :: k).
ListStatement r stmt val =>
VS (r val) -> VS (r val) -> VS (r val) -> MS (r stmt)
listAdd (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Value)
l) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Value)
i) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Value)
v)
listAppend :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> MS (p CppSrcCode CppHdrCode Statement)
listAppend VS (p CppSrcCode CppHdrCode Value)
l VS (p CppSrcCode CppHdrCode Value)
v = (VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> SrcState MethodState Statement)
-> (HdrState ValueState Value
-> HdrState ValueState Value -> HdrState MethodState Statement)
-> PairState MethodState p Value
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (val :: k).
ListStatement r stmt val =>
VS (r val) -> VS (r val) -> MS (r stmt)
listAppend HdrState ValueState Value
-> HdrState ValueState Value -> HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (val :: k).
ListStatement r stmt val =>
VS (r val) -> VS (r val) -> MS (r stmt)
listAppend (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Value)
l) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Value)
v)
listSet :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> MS (p CppSrcCode CppHdrCode Statement)
listSet VS (p CppSrcCode CppHdrCode Value)
l VS (p CppSrcCode CppHdrCode Value)
i VS (p CppSrcCode CppHdrCode Value)
v = (VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> SrcState MethodState Statement)
-> (HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState MethodState Statement)
-> PairState MethodState p Value
-> PairState MethodState p Value
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c u d.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c -> SrcState u d)
-> (HdrState r a -> HdrState s b -> HdrState t c -> HdrState u d)
-> PairState u p a
-> PairState u p b
-> PairState u p c
-> PairState u p d
pair3 VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (val :: k).
ListStatement r stmt val =>
VS (r val) -> VS (r val) -> VS (r val) -> MS (r stmt)
listSet HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (val :: k).
ListStatement r stmt val =>
VS (r val) -> VS (r val) -> VS (r val) -> MS (r stmt)
listSet (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Value)
l) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Value)
i) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Value)
v)
instance (Pair p) => Set (p CppSrcCode CppHdrCode) Value where
contains :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
contains = (VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> (HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
Set r val =>
VS (r val) -> VS (r val) -> VS (r val)
contains HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k).
Set r val =>
VS (r val) -> VS (r val) -> VS (r val)
contains
setAdd :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
setAdd = (VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> (HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
Set r val =>
VS (r val) -> VS (r val) -> VS (r val)
setAdd HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k).
Set r val =>
VS (r val) -> VS (r val) -> VS (r val)
setAdd
setRemove :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
setRemove = (VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> (HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
Set r val =>
VS (r val) -> VS (r val) -> VS (r val)
setRemove HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k).
Set r val =>
VS (r val) -> VS (r val) -> VS (r val)
setRemove
setUnion :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
setUnion = (VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> (HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
Set r val =>
VS (r val) -> VS (r val) -> VS (r val)
setUnion HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k).
Set r val =>
VS (r val) -> VS (r val) -> VS (r val)
setUnion
instance (Pair p) => InternalList (p CppSrcCode CppHdrCode) Block Variable Value where
listSlice' :: Maybe (VS (p CppSrcCode CppHdrCode Value))
-> Maybe (VS (p CppSrcCode CppHdrCode Value))
-> Maybe (VS (p CppSrcCode CppHdrCode Value))
-> VS (p CppSrcCode CppHdrCode Variable)
-> VS (p CppSrcCode CppHdrCode Value)
-> MS (p CppSrcCode CppHdrCode Doc)
listSlice' Maybe (VS (p CppSrcCode CppHdrCode Value))
b Maybe (VS (p CppSrcCode CppHdrCode Value))
e Maybe (VS (p CppSrcCode CppHdrCode Value))
s VS (p CppSrcCode CppHdrCode Variable)
vr VS (p CppSrcCode CppHdrCode Value)
vl = (SrcState ValueState Variable
-> VS (CppSrcCode Value) -> SrcState MethodState Doc)
-> (HdrState ValueState Variable
-> HdrState ValueState Value -> HdrState MethodState Doc)
-> PairState MethodState p Variable
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode Doc)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2
(Maybe (VS (CppSrcCode Value))
-> Maybe (VS (CppSrcCode Value))
-> Maybe (VS (CppSrcCode Value))
-> SrcState ValueState Variable
-> VS (CppSrcCode Value)
-> SrcState MethodState Doc
forall {k} (r :: k -> *) (block :: k) (var :: k) (val :: k).
InternalList r block var val =>
Maybe (VS (r val))
-> Maybe (VS (r val))
-> Maybe (VS (r val))
-> VS (r var)
-> VS (r val)
-> MS (r block)
listSlice' ((p CppSrcCode CppHdrCode Value -> CppSrcCode Value)
-> VS (p CppSrcCode CppHdrCode Value) -> VS (CppSrcCode Value)
forall a b s. (a -> b) -> State s a -> State s b
onStateValue p CppSrcCode CppHdrCode Value -> CppSrcCode Value
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst (VS (p CppSrcCode CppHdrCode Value) -> VS (CppSrcCode Value))
-> Maybe (VS (p CppSrcCode CppHdrCode Value))
-> Maybe (VS (CppSrcCode Value))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe (VS (p CppSrcCode CppHdrCode Value))
b) ((p CppSrcCode CppHdrCode Value -> CppSrcCode Value)
-> VS (p CppSrcCode CppHdrCode Value) -> VS (CppSrcCode Value)
forall a b s. (a -> b) -> State s a -> State s b
onStateValue p CppSrcCode CppHdrCode Value -> CppSrcCode Value
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst (VS (p CppSrcCode CppHdrCode Value) -> VS (CppSrcCode Value))
-> Maybe (VS (p CppSrcCode CppHdrCode Value))
-> Maybe (VS (CppSrcCode Value))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe (VS (p CppSrcCode CppHdrCode Value))
e)
((p CppSrcCode CppHdrCode Value -> CppSrcCode Value)
-> VS (p CppSrcCode CppHdrCode Value) -> VS (CppSrcCode Value)
forall a b s. (a -> b) -> State s a -> State s b
onStateValue p CppSrcCode CppHdrCode Value -> CppSrcCode Value
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst (VS (p CppSrcCode CppHdrCode Value) -> VS (CppSrcCode Value))
-> Maybe (VS (p CppSrcCode CppHdrCode Value))
-> Maybe (VS (CppSrcCode Value))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe (VS (p CppSrcCode CppHdrCode Value))
s))
(Maybe (HdrState ValueState Value)
-> Maybe (HdrState ValueState Value)
-> Maybe (HdrState ValueState Value)
-> HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState MethodState Doc
forall {k} (r :: k -> *) (block :: k) (var :: k) (val :: k).
InternalList r block var val =>
Maybe (VS (r val))
-> Maybe (VS (r val))
-> Maybe (VS (r val))
-> VS (r var)
-> VS (r val)
-> MS (r block)
listSlice' ((p CppSrcCode CppHdrCode Value -> CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value) -> HdrState ValueState Value
forall a b s. (a -> b) -> State s a -> State s b
onStateValue p CppSrcCode CppHdrCode Value -> CppHdrCode Value
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd (VS (p CppSrcCode CppHdrCode Value) -> HdrState ValueState Value)
-> Maybe (VS (p CppSrcCode CppHdrCode Value))
-> Maybe (HdrState ValueState Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe (VS (p CppSrcCode CppHdrCode Value))
b) ((p CppSrcCode CppHdrCode Value -> CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value) -> HdrState ValueState Value
forall a b s. (a -> b) -> State s a -> State s b
onStateValue p CppSrcCode CppHdrCode Value -> CppHdrCode Value
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd (VS (p CppSrcCode CppHdrCode Value) -> HdrState ValueState Value)
-> Maybe (VS (p CppSrcCode CppHdrCode Value))
-> Maybe (HdrState ValueState Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe (VS (p CppSrcCode CppHdrCode Value))
e)
((p CppSrcCode CppHdrCode Value -> CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value) -> HdrState ValueState Value
forall a b s. (a -> b) -> State s a -> State s b
onStateValue p CppSrcCode CppHdrCode Value -> CppHdrCode Value
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd (VS (p CppSrcCode CppHdrCode Value) -> HdrState ValueState Value)
-> Maybe (VS (p CppSrcCode CppHdrCode Value))
-> Maybe (HdrState ValueState Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe (VS (p CppSrcCode CppHdrCode Value))
s))
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Variable)
vr) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Value)
vl)
instance (Pair p) => InternalGetSet (p CppSrcCode CppHdrCode) Variable Value TypeData where
getFunc :: VS (p CppSrcCode CppHdrCode Variable)
-> VS (p CppSrcCode CppHdrCode FuncData)
getFunc = (SrcState ValueState Variable -> SrcState ValueState FuncData)
-> (HdrState ValueState Variable -> HdrState ValueState FuncData)
-> VS (p CppSrcCode CppHdrCode Variable)
-> VS (p CppSrcCode CppHdrCode FuncData)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 SrcState ValueState Variable -> SrcState ValueState FuncData
forall (r :: * -> *) var val typ.
InternalGetSet r var val typ =>
VS (r var) -> VS (r FuncData)
getFunc HdrState ValueState Variable -> HdrState ValueState FuncData
forall (r :: * -> *) var val typ.
InternalGetSet r var val typ =>
VS (r var) -> VS (r FuncData)
getFunc
setFunc :: VS (p CppSrcCode CppHdrCode TypeData)
-> VS (p CppSrcCode CppHdrCode Variable)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode FuncData)
setFunc = (State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable
-> VS (CppSrcCode Value)
-> SrcState ValueState FuncData)
-> (State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState ValueState FuncData)
-> VS (p CppSrcCode CppHdrCode TypeData)
-> VS (p CppSrcCode CppHdrCode Variable)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode FuncData)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c u d.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c -> SrcState u d)
-> (HdrState r a -> HdrState s b -> HdrState t c -> HdrState u d)
-> PairState u p a
-> PairState u p b
-> PairState u p c
-> PairState u p d
pair3 State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable
-> VS (CppSrcCode Value)
-> SrcState ValueState FuncData
forall (r :: * -> *) var val typ.
InternalGetSet r var val typ =>
VS (r typ) -> VS (r var) -> VS (r val) -> VS (r FuncData)
setFunc State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState ValueState FuncData
forall (r :: * -> *) var val typ.
InternalGetSet r var val typ =>
VS (r typ) -> VS (r var) -> VS (r val) -> VS (r FuncData)
setFunc
instance (Pair p) => InternalListFunc (p CppSrcCode CppHdrCode) Value TypeData where
listAccessFunc :: VS (p CppSrcCode CppHdrCode TypeData)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode FuncData)
listAccessFunc = (State ValueState (CppSrcCode TypeData)
-> VS (CppSrcCode Value) -> SrcState ValueState FuncData)
-> (State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Value -> HdrState ValueState FuncData)
-> VS (p CppSrcCode CppHdrCode TypeData)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode FuncData)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 State ValueState (CppSrcCode TypeData)
-> VS (CppSrcCode Value) -> SrcState ValueState FuncData
forall (r :: * -> *) val typ.
InternalListFunc r val typ =>
VS (r typ) -> VS (r val) -> VS (r FuncData)
listAccessFunc State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Value -> HdrState ValueState FuncData
forall (r :: * -> *) val typ.
InternalListFunc r val typ =>
VS (r typ) -> VS (r val) -> VS (r FuncData)
listAccessFunc
instance Pair p => BinderSym (p CppSrcCode CppHdrCode) BinderD TypeData where
binder :: String
-> VS (p CppSrcCode CppHdrCode TypeData)
-> VS (p CppSrcCode CppHdrCode BinderD)
binder String
nm = (State ValueState (CppSrcCode TypeData)
-> SrcState ValueState BinderD)
-> (State ValueState (CppHdrCode TypeData)
-> HdrState ValueState BinderD)
-> VS (p CppSrcCode CppHdrCode TypeData)
-> VS (p CppSrcCode CppHdrCode BinderD)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 (String
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState BinderD
forall {k} (r :: k -> *) (binder :: k) (typ :: k).
BinderSym r binder typ =>
String -> VS (r typ) -> VS (r binder)
binder String
nm) (String
-> State ValueState (CppHdrCode TypeData)
-> HdrState ValueState BinderD
forall {k} (r :: k -> *) (binder :: k) (typ :: k).
BinderSym r binder typ =>
String -> VS (r typ) -> VS (r binder)
binder String
nm)
instance (Pair p) => BinderElim (p CppSrcCode CppHdrCode) BinderD TypeData where
binderName :: p CppSrcCode CppHdrCode BinderD -> String
binderName p CppSrcCode CppHdrCode BinderD
b = BinderD -> String
bindName (BinderD -> String) -> BinderD -> String
forall a b. (a -> b) -> a -> b
$ CppSrcCode BinderD -> BinderD
forall a. CppSrcCode a -> a
unCPPSC (CppSrcCode BinderD -> BinderD) -> CppSrcCode BinderD -> BinderD
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode BinderD -> CppSrcCode BinderD
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode BinderD
b
binderType :: p CppSrcCode CppHdrCode BinderD -> p CppSrcCode CppHdrCode TypeData
binderType p CppSrcCode CppHdrCode BinderD
b = CppSrcCode TypeData
-> CppHdrCode TypeData -> p CppSrcCode CppHdrCode TypeData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair (CppSrcCode BinderD -> CppSrcCode TypeData
forall {k} (r :: k -> *) (binder :: k) (typ :: k).
BinderElim r binder typ =>
r binder -> r typ
binderType (CppSrcCode BinderD -> CppSrcCode TypeData)
-> CppSrcCode BinderD -> CppSrcCode TypeData
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode BinderD -> CppSrcCode BinderD
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode BinderD
b) (CppHdrCode BinderD -> CppHdrCode TypeData
forall {k} (r :: k -> *) (binder :: k) (typ :: k).
BinderElim r binder typ =>
r binder -> r typ
binderType (CppHdrCode BinderD -> CppHdrCode TypeData)
-> CppHdrCode BinderD -> CppHdrCode TypeData
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode BinderD -> CppHdrCode BinderD
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd p CppSrcCode CppHdrCode BinderD
b)
instance (Pair p) => InternalBinderElim (p CppSrcCode CppHdrCode) BinderD where
binderElim :: p CppSrcCode CppHdrCode BinderD -> Doc
binderElim p CppSrcCode CppHdrCode BinderD
b = CppSrcCode BinderD -> Doc
forall {k} (r :: k -> *) (binder :: k).
InternalBinderElim r binder =>
r binder -> Doc
binderElim (CppSrcCode BinderD -> Doc) -> CppSrcCode BinderD -> Doc
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode BinderD -> CppSrcCode BinderD
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode BinderD
b
instance (Pair p) => RenderFunction (p CppSrcCode CppHdrCode) TypeData where
funcFromData :: Doc
-> VS (p CppSrcCode CppHdrCode TypeData)
-> VS (p CppSrcCode CppHdrCode FuncData)
funcFromData Doc
d = (State ValueState (CppSrcCode TypeData)
-> SrcState ValueState FuncData)
-> (State ValueState (CppHdrCode TypeData)
-> HdrState ValueState FuncData)
-> VS (p CppSrcCode CppHdrCode TypeData)
-> VS (p CppSrcCode CppHdrCode FuncData)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 (Doc
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState FuncData
forall (r :: * -> *) typ.
RenderFunction r typ =>
Doc -> VS (r typ) -> VS (r FuncData)
funcFromData Doc
d) (Doc
-> State ValueState (CppHdrCode TypeData)
-> HdrState ValueState FuncData
forall (r :: * -> *) typ.
RenderFunction r typ =>
Doc -> VS (r typ) -> VS (r FuncData)
funcFromData Doc
d)
instance (Pair p) => FunctionElim (p CppSrcCode CppHdrCode) TypeData where
functionType :: p CppSrcCode CppHdrCode FuncData
-> p CppSrcCode CppHdrCode TypeData
functionType p CppSrcCode CppHdrCode FuncData
f = CppSrcCode TypeData
-> CppHdrCode TypeData -> p CppSrcCode CppHdrCode TypeData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair (CppSrcCode FuncData -> CppSrcCode TypeData
forall (r :: * -> *) typ. FunctionElim r typ => r FuncData -> r typ
functionType (CppSrcCode FuncData -> CppSrcCode TypeData)
-> CppSrcCode FuncData -> CppSrcCode TypeData
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode FuncData -> CppSrcCode FuncData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode FuncData
f) (CppHdrCode FuncData -> CppHdrCode TypeData
forall (r :: * -> *) typ. FunctionElim r typ => r FuncData -> r typ
functionType (CppHdrCode FuncData -> CppHdrCode TypeData)
-> CppHdrCode FuncData -> CppHdrCode TypeData
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode FuncData -> CppHdrCode FuncData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd p CppSrcCode CppHdrCode FuncData
f)
function :: p CppSrcCode CppHdrCode FuncData -> Doc
function p CppSrcCode CppHdrCode FuncData
f = CppSrcCode FuncData -> Doc
forall (r :: * -> *) typ. FunctionElim r typ => r FuncData -> Doc
RC.function (CppSrcCode FuncData -> Doc) -> CppSrcCode FuncData -> Doc
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode FuncData -> CppSrcCode FuncData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode FuncData
f
instance (Pair p) => InternalAssignStmt (p CppSrcCode CppHdrCode) Statement Variable Value where
multiAssign :: [VS (p CppSrcCode CppHdrCode Variable)]
-> [VS (p CppSrcCode CppHdrCode Value)]
-> MS (p CppSrcCode CppHdrCode Statement)
multiAssign [VS (p CppSrcCode CppHdrCode Variable)]
vrs [VS (p CppSrcCode CppHdrCode Value)]
vls = ([SrcState ValueState Variable]
-> [VS (CppSrcCode Value)] -> SrcState MethodState Statement)
-> ([HdrState ValueState Variable]
-> [HdrState ValueState Value] -> HdrState MethodState Statement)
-> [PairState MethodState p Variable]
-> [PairState MethodState p Value]
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
([SrcState r a] -> [SrcState s b] -> SrcState t c)
-> ([HdrState r a] -> [HdrState s b] -> HdrState t c)
-> [PairState t p a]
-> [PairState t p b]
-> PairState t p c
pair2Lists [SrcState ValueState Variable]
-> [VS (CppSrcCode Value)] -> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (var :: k) (val :: k).
InternalAssignStmt r stmt var val =>
[VS (r var)] -> [VS (r val)] -> MS (r stmt)
multiAssign [HdrState ValueState Variable]
-> [HdrState ValueState Value] -> HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (var :: k) (val :: k).
InternalAssignStmt r stmt var val =>
[VS (r var)] -> [VS (r val)] -> MS (r stmt)
multiAssign
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS (VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable)
-> [VS (p CppSrcCode CppHdrCode Variable)]
-> [PairState MethodState p Variable]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [VS (p CppSrcCode CppHdrCode Variable)]
vrs) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS (VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value)
-> [VS (p CppSrcCode CppHdrCode Value)]
-> [PairState MethodState p Value]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [VS (p CppSrcCode CppHdrCode Value)]
vls)
instance (Pair p) => InternalIOStmt (p CppSrcCode CppHdrCode) Statement Value where
printSt :: Bool
-> Maybe (VS (p CppSrcCode CppHdrCode Value))
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> MS (p CppSrcCode CppHdrCode Statement)
printSt Bool
nl Maybe (VS (p CppSrcCode CppHdrCode Value))
f VS (p CppSrcCode CppHdrCode Value)
p VS (p CppSrcCode CppHdrCode Value)
v = (VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> SrcState MethodState Statement)
-> (HdrState ValueState Value
-> HdrState ValueState Value -> HdrState MethodState Statement)
-> PairState MethodState p Value
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2
(Bool
-> Maybe (VS (CppSrcCode Value))
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (val :: k).
InternalIOStmt r stmt val =>
Bool
-> Maybe (VS (r val)) -> VS (r val) -> VS (r val) -> MS (r stmt)
printSt Bool
nl ((p CppSrcCode CppHdrCode Value -> CppSrcCode Value)
-> VS (p CppSrcCode CppHdrCode Value) -> VS (CppSrcCode Value)
forall a b s. (a -> b) -> State s a -> State s b
onStateValue p CppSrcCode CppHdrCode Value -> CppSrcCode Value
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst (VS (p CppSrcCode CppHdrCode Value) -> VS (CppSrcCode Value))
-> Maybe (VS (p CppSrcCode CppHdrCode Value))
-> Maybe (VS (CppSrcCode Value))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe (VS (p CppSrcCode CppHdrCode Value))
f))
(Bool
-> Maybe (HdrState ValueState Value)
-> HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (val :: k).
InternalIOStmt r stmt val =>
Bool
-> Maybe (VS (r val)) -> VS (r val) -> VS (r val) -> MS (r stmt)
printSt Bool
nl ((p CppSrcCode CppHdrCode Value -> CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value) -> HdrState ValueState Value
forall a b s. (a -> b) -> State s a -> State s b
onStateValue p CppSrcCode CppHdrCode Value -> CppHdrCode Value
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd (VS (p CppSrcCode CppHdrCode Value) -> HdrState ValueState Value)
-> Maybe (VS (p CppSrcCode CppHdrCode Value))
-> Maybe (HdrState ValueState Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe (VS (p CppSrcCode CppHdrCode Value))
f))
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Value)
p) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Value)
v)
instance (Pair p) => InternalControlStmt (p CppSrcCode CppHdrCode) Statement Value where
multiReturn :: [VS (p CppSrcCode CppHdrCode Value)]
-> MS (p CppSrcCode CppHdrCode Statement)
multiReturn = ([VS (CppSrcCode Value)] -> SrcState MethodState Statement)
-> ([HdrState ValueState Value] -> HdrState MethodState Statement)
-> [PairState MethodState p Value]
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
([SrcState r a] -> SrcState s b)
-> ([HdrState r a] -> HdrState s b)
-> [PairState s p a]
-> PairState s p b
pair1List [VS (CppSrcCode Value)] -> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (val :: k).
InternalControlStmt r stmt val =>
[VS (r val)] -> MS (r stmt)
multiReturn [HdrState ValueState Value] -> HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (val :: k).
InternalControlStmt r stmt val =>
[VS (r val)] -> MS (r stmt)
multiReturn ([PairState MethodState p Value]
-> MS (p CppSrcCode CppHdrCode Statement))
-> ([VS (p CppSrcCode CppHdrCode Value)]
-> [PairState MethodState p Value])
-> [VS (p CppSrcCode CppHdrCode Value)]
-> MS (p CppSrcCode CppHdrCode Statement)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value)
-> [VS (p CppSrcCode CppHdrCode Value)]
-> [PairState MethodState p Value]
forall a b. (a -> b) -> [a] -> [b]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS)
instance (Pair p) => RenderStatement (p CppSrcCode CppHdrCode) Statement where
stmt :: MS (p CppSrcCode CppHdrCode Statement)
-> MS (p CppSrcCode CppHdrCode Statement)
stmt = (SrcState MethodState Statement -> SrcState MethodState Statement)
-> (HdrState MethodState Statement
-> HdrState MethodState Statement)
-> MS (p CppSrcCode CppHdrCode Statement)
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 SrcState MethodState Statement -> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
RenderStatement r stmt =>
MS (r stmt) -> MS (r stmt)
stmt HdrState MethodState Statement -> HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
RenderStatement r stmt =>
MS (r stmt) -> MS (r stmt)
stmt
loopStmt :: MS (p CppSrcCode CppHdrCode Statement)
-> MS (p CppSrcCode CppHdrCode Statement)
loopStmt = (SrcState MethodState Statement -> SrcState MethodState Statement)
-> (HdrState MethodState Statement
-> HdrState MethodState Statement)
-> MS (p CppSrcCode CppHdrCode Statement)
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 SrcState MethodState Statement -> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
RenderStatement r stmt =>
MS (r stmt) -> MS (r stmt)
loopStmt HdrState MethodState Statement -> HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
RenderStatement r stmt =>
MS (r stmt) -> MS (r stmt)
loopStmt
stmtFromData :: Doc -> Terminator -> MS (p CppSrcCode CppHdrCode Statement)
stmtFromData Doc
d Terminator
t = (CppSrcCode Statement
-> CppHdrCode Statement -> p CppSrcCode CppHdrCode Statement)
-> SrcState MethodState Statement
-> HdrState MethodState Statement
-> MS (p CppSrcCode CppHdrCode Statement)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode Statement
-> CppHdrCode Statement -> p CppSrcCode CppHdrCode Statement
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair (Doc -> Terminator -> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
RenderStatement r stmt =>
Doc -> Terminator -> MS (r stmt)
stmtFromData Doc
d Terminator
t) (Doc -> Terminator -> HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
RenderStatement r stmt =>
Doc -> Terminator -> MS (r stmt)
stmtFromData Doc
d Terminator
t)
instance (Pair p) => StatementElim (p CppSrcCode CppHdrCode) Statement where
statement :: p CppSrcCode CppHdrCode Statement -> Doc
statement p CppSrcCode CppHdrCode Statement
s = CppSrcCode Statement -> Doc
forall {k} (r :: k -> *) (stmt :: k).
StatementElim r stmt =>
r stmt -> Doc
RC.statement (CppSrcCode Statement -> Doc) -> CppSrcCode Statement -> Doc
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode Statement -> CppSrcCode Statement
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode Statement
s
statementTerm :: p CppSrcCode CppHdrCode Statement -> Terminator
statementTerm p CppSrcCode CppHdrCode Statement
s = CppSrcCode Statement -> Terminator
forall {k} (r :: k -> *) (stmt :: k).
StatementElim r stmt =>
r stmt -> Terminator
statementTerm (CppSrcCode Statement -> Terminator)
-> CppSrcCode Statement -> Terminator
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode Statement -> CppSrcCode Statement
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode Statement
s
instance (Pair p) => EmptyStatement (p CppSrcCode CppHdrCode) Statement where
emptyStmt :: MS (p CppSrcCode CppHdrCode Statement)
emptyStmt = (CppSrcCode Statement
-> CppHdrCode Statement -> p CppSrcCode CppHdrCode Statement)
-> SrcState MethodState Statement
-> HdrState MethodState Statement
-> MS (p CppSrcCode CppHdrCode Statement)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode Statement
-> CppHdrCode Statement -> p CppSrcCode CppHdrCode Statement
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
instance (Pair p) => MultiStatement (p CppSrcCode CppHdrCode) Statement where
multi :: [MS (p CppSrcCode CppHdrCode Statement)]
-> MS (p CppSrcCode CppHdrCode Statement)
multi = ([SrcState MethodState Statement]
-> SrcState MethodState Statement)
-> ([HdrState MethodState Statement]
-> HdrState MethodState Statement)
-> [MS (p CppSrcCode CppHdrCode Statement)]
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
([SrcState r a] -> SrcState s b)
-> ([HdrState r a] -> HdrState s b)
-> [PairState s p a]
-> PairState s p b
pair1List [SrcState MethodState Statement] -> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
MultiStatement r stmt =>
[MS (r stmt)] -> MS (r stmt)
multi [HdrState MethodState Statement] -> HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
MultiStatement r stmt =>
[MS (r stmt)] -> MS (r stmt)
multi
instance (Pair p) => ValueStatement (p CppSrcCode CppHdrCode) Statement Value where
valStmt :: VS (p CppSrcCode CppHdrCode Value)
-> MS (p CppSrcCode CppHdrCode Statement)
valStmt = (VS (CppSrcCode Value) -> SrcState MethodState Statement)
-> (HdrState ValueState Value -> HdrState MethodState Statement)
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 VS (CppSrcCode Value) -> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (val :: k).
ValueStatement r stmt val =>
VS (r val) -> MS (r stmt)
valStmt HdrState ValueState Value -> HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (val :: k).
ValueStatement r stmt val =>
VS (r val) -> MS (r stmt)
valStmt (PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode Statement))
-> (VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> MS (p CppSrcCode CppHdrCode Statement)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS
instance (Pair p) => AssignStatement (p CppSrcCode CppHdrCode) Statement Variable Value where
assign :: VS (p CppSrcCode CppHdrCode Variable)
-> VS (p CppSrcCode CppHdrCode Value)
-> MS (p CppSrcCode CppHdrCode Statement)
assign VS (p CppSrcCode CppHdrCode Variable)
vr VS (p CppSrcCode CppHdrCode Value)
vl = (SrcState ValueState Variable
-> VS (CppSrcCode Value) -> SrcState MethodState Statement)
-> (HdrState ValueState Variable
-> HdrState ValueState Value -> HdrState MethodState Statement)
-> PairState MethodState p Variable
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 SrcState ValueState Variable
-> VS (CppSrcCode Value) -> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (var :: k) (val :: k).
AssignStatement r stmt var val =>
VS (r var) -> VS (r val) -> MS (r stmt)
assign HdrState ValueState Variable
-> HdrState ValueState Value -> HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (var :: k) (val :: k).
AssignStatement r stmt var val =>
VS (r var) -> VS (r val) -> MS (r stmt)
assign (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Variable)
vr) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Value)
vl)
&-= :: VS (p CppSrcCode CppHdrCode Variable)
-> VS (p CppSrcCode CppHdrCode Value)
-> MS (p CppSrcCode CppHdrCode Statement)
(&-=) VS (p CppSrcCode CppHdrCode Variable)
vr VS (p CppSrcCode CppHdrCode Value)
vl = (SrcState ValueState Variable
-> VS (CppSrcCode Value) -> SrcState MethodState Statement)
-> (HdrState ValueState Variable
-> HdrState ValueState Value -> HdrState MethodState Statement)
-> PairState MethodState p Variable
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 SrcState ValueState Variable
-> VS (CppSrcCode Value) -> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (var :: k) (val :: k).
AssignStatement r stmt var val =>
VS (r var) -> VS (r val) -> MS (r stmt)
(&-=) HdrState ValueState Variable
-> HdrState ValueState Value -> HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (var :: k) (val :: k).
AssignStatement r stmt var val =>
VS (r var) -> VS (r val) -> MS (r stmt)
(&-=) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Variable)
vr) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Value)
vl)
&+= :: VS (p CppSrcCode CppHdrCode Variable)
-> VS (p CppSrcCode CppHdrCode Value)
-> MS (p CppSrcCode CppHdrCode Statement)
(&+=) VS (p CppSrcCode CppHdrCode Variable)
vr VS (p CppSrcCode CppHdrCode Value)
vl = (SrcState ValueState Variable
-> VS (CppSrcCode Value) -> SrcState MethodState Statement)
-> (HdrState ValueState Variable
-> HdrState ValueState Value -> HdrState MethodState Statement)
-> PairState MethodState p Variable
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 SrcState ValueState Variable
-> VS (CppSrcCode Value) -> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (var :: k) (val :: k).
AssignStatement r stmt var val =>
VS (r var) -> VS (r val) -> MS (r stmt)
(&+=) HdrState ValueState Variable
-> HdrState ValueState Value -> HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (var :: k) (val :: k).
AssignStatement r stmt var val =>
VS (r var) -> VS (r val) -> MS (r stmt)
(&+=) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Variable)
vr) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Value)
vl)
&++ :: VS (p CppSrcCode CppHdrCode Variable)
-> MS (p CppSrcCode CppHdrCode Statement)
(&++) VS (p CppSrcCode CppHdrCode Variable)
vl = (SrcState ValueState Variable -> SrcState MethodState Statement)
-> (HdrState ValueState Variable -> HdrState MethodState Statement)
-> PairState MethodState p Variable
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 SrcState ValueState Variable -> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (var :: k) (val :: k).
AssignStatement r stmt var val =>
VS (r var) -> MS (r stmt)
(&++) HdrState ValueState Variable -> HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (var :: k) (val :: k).
AssignStatement r stmt var val =>
VS (r var) -> MS (r stmt)
(&++) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Variable)
vl)
&-- :: VS (p CppSrcCode CppHdrCode Variable)
-> MS (p CppSrcCode CppHdrCode Statement)
(&--) VS (p CppSrcCode CppHdrCode Variable)
vl = (SrcState ValueState Variable -> SrcState MethodState Statement)
-> (HdrState ValueState Variable -> HdrState MethodState Statement)
-> PairState MethodState p Variable
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 SrcState ValueState Variable -> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (var :: k) (val :: k).
AssignStatement r stmt var val =>
VS (r var) -> MS (r stmt)
(&--) HdrState ValueState Variable -> HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (var :: k) (val :: k).
AssignStatement r stmt var val =>
VS (r var) -> MS (r stmt)
(&--) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Variable)
vl)
instance (Pair p) => DeclStatement (p CppSrcCode CppHdrCode) Body Statement Variable ScopeData Value where
varDec :: VS (p CppSrcCode CppHdrCode Variable)
-> p CppSrcCode CppHdrCode ScopeData
-> MS (p CppSrcCode CppHdrCode Statement)
varDec VS (p CppSrcCode CppHdrCode Variable)
vr p CppSrcCode CppHdrCode ScopeData
scp = (SrcState ValueState Variable -> SrcState MethodState Statement)
-> (HdrState ValueState Variable -> HdrState MethodState Statement)
-> PairState MethodState p Variable
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 (SrcState ValueState Variable
-> CppSrcCode ScopeData -> SrcState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(scope :: k) (val :: k).
DeclStatement r bod stmt var scope val =>
VS (r var) -> r scope -> MS (r stmt)
`varDec` p CppSrcCode CppHdrCode ScopeData -> CppSrcCode ScopeData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode ScopeData
scp) (HdrState ValueState Variable
-> CppHdrCode ScopeData -> HdrState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(scope :: k) (val :: k).
DeclStatement r bod stmt var scope val =>
VS (r var) -> r scope -> MS (r stmt)
`varDec` p CppSrcCode CppHdrCode ScopeData -> CppHdrCode ScopeData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd p CppSrcCode CppHdrCode ScopeData
scp)
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Variable)
vr)
varDecDef :: VS (p CppSrcCode CppHdrCode Variable)
-> p CppSrcCode CppHdrCode ScopeData
-> VS (p CppSrcCode CppHdrCode Value)
-> MS (p CppSrcCode CppHdrCode Statement)
varDecDef VS (p CppSrcCode CppHdrCode Variable)
vr p CppSrcCode CppHdrCode ScopeData
scp VS (p CppSrcCode CppHdrCode Value)
vl = (SrcState ValueState Variable
-> VS (CppSrcCode Value) -> SrcState MethodState Statement)
-> (HdrState ValueState Variable
-> HdrState ValueState Value -> HdrState MethodState Statement)
-> PairState MethodState p Variable
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 (SrcState ValueState Variable
-> CppSrcCode ScopeData
-> VS (CppSrcCode Value)
-> SrcState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(scope :: k) (val :: k).
DeclStatement r bod stmt var scope val =>
VS (r var) -> r scope -> VS (r val) -> MS (r stmt)
`varDecDef` p CppSrcCode CppHdrCode ScopeData -> CppSrcCode ScopeData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode ScopeData
scp) (HdrState ValueState Variable
-> CppHdrCode ScopeData
-> HdrState ValueState Value
-> HdrState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(scope :: k) (val :: k).
DeclStatement r bod stmt var scope val =>
VS (r var) -> r scope -> VS (r val) -> MS (r stmt)
`varDecDef` p CppSrcCode CppHdrCode ScopeData -> CppHdrCode ScopeData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd p CppSrcCode CppHdrCode ScopeData
scp)
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Variable)
vr) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Value)
vl)
setDec :: VS (p CppSrcCode CppHdrCode Variable)
-> p CppSrcCode CppHdrCode ScopeData
-> MS (p CppSrcCode CppHdrCode Statement)
setDec VS (p CppSrcCode CppHdrCode Variable)
vr p CppSrcCode CppHdrCode ScopeData
scp = (SrcState ValueState Variable -> SrcState MethodState Statement)
-> (HdrState ValueState Variable -> HdrState MethodState Statement)
-> PairState MethodState p Variable
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 (SrcState ValueState Variable
-> CppSrcCode ScopeData -> SrcState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(scope :: k) (val :: k).
DeclStatement r bod stmt var scope val =>
VS (r var) -> r scope -> MS (r stmt)
`setDec` p CppSrcCode CppHdrCode ScopeData -> CppSrcCode ScopeData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode ScopeData
scp) (HdrState ValueState Variable
-> CppHdrCode ScopeData -> HdrState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(scope :: k) (val :: k).
DeclStatement r bod stmt var scope val =>
VS (r var) -> r scope -> MS (r stmt)
`setDec` p CppSrcCode CppHdrCode ScopeData -> CppHdrCode ScopeData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd p CppSrcCode CppHdrCode ScopeData
scp)
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Variable)
vr)
setDecDef :: VS (p CppSrcCode CppHdrCode Variable)
-> p CppSrcCode CppHdrCode ScopeData
-> VS (p CppSrcCode CppHdrCode Value)
-> MS (p CppSrcCode CppHdrCode Statement)
setDecDef VS (p CppSrcCode CppHdrCode Variable)
vr p CppSrcCode CppHdrCode ScopeData
scp VS (p CppSrcCode CppHdrCode Value)
vl = (SrcState ValueState Variable
-> VS (CppSrcCode Value) -> SrcState MethodState Statement)
-> (HdrState ValueState Variable
-> HdrState ValueState Value -> HdrState MethodState Statement)
-> PairState MethodState p Variable
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 (SrcState ValueState Variable
-> CppSrcCode ScopeData
-> VS (CppSrcCode Value)
-> SrcState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(scope :: k) (val :: k).
DeclStatement r bod stmt var scope val =>
VS (r var) -> r scope -> VS (r val) -> MS (r stmt)
`setDecDef` p CppSrcCode CppHdrCode ScopeData -> CppSrcCode ScopeData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode ScopeData
scp) (HdrState ValueState Variable
-> CppHdrCode ScopeData
-> HdrState ValueState Value
-> HdrState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(scope :: k) (val :: k).
DeclStatement r bod stmt var scope val =>
VS (r var) -> r scope -> VS (r val) -> MS (r stmt)
`setDecDef` p CppSrcCode CppHdrCode ScopeData -> CppHdrCode ScopeData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd p CppSrcCode CppHdrCode ScopeData
scp)
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Variable)
vr) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Value)
vl)
listDec :: Integer
-> VS (p CppSrcCode CppHdrCode Variable)
-> p CppSrcCode CppHdrCode ScopeData
-> MS (p CppSrcCode CppHdrCode Statement)
listDec Integer
n VS (p CppSrcCode CppHdrCode Variable)
vr p CppSrcCode CppHdrCode ScopeData
scp = (SrcState ValueState Variable -> SrcState MethodState Statement)
-> (HdrState ValueState Variable -> HdrState MethodState Statement)
-> PairState MethodState p Variable
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 (\SrcState ValueState Variable
v -> Integer
-> SrcState ValueState Variable
-> CppSrcCode ScopeData
-> SrcState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(scope :: k) (val :: k).
DeclStatement r bod stmt var scope val =>
Integer -> VS (r var) -> r scope -> MS (r stmt)
listDec Integer
n SrcState ValueState Variable
v (p CppSrcCode CppHdrCode ScopeData -> CppSrcCode ScopeData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode ScopeData
scp))
(\HdrState ValueState Variable
v -> Integer
-> HdrState ValueState Variable
-> CppHdrCode ScopeData
-> HdrState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(scope :: k) (val :: k).
DeclStatement r bod stmt var scope val =>
Integer -> VS (r var) -> r scope -> MS (r stmt)
listDec Integer
n HdrState ValueState Variable
v (p CppSrcCode CppHdrCode ScopeData -> CppHdrCode ScopeData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd p CppSrcCode CppHdrCode ScopeData
scp)) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Variable)
vr)
listDecDef :: VS (p CppSrcCode CppHdrCode Variable)
-> p CppSrcCode CppHdrCode ScopeData
-> [VS (p CppSrcCode CppHdrCode Value)]
-> MS (p CppSrcCode CppHdrCode Statement)
listDecDef VS (p CppSrcCode CppHdrCode Variable)
vr p CppSrcCode CppHdrCode ScopeData
scp [VS (p CppSrcCode CppHdrCode Value)]
vs = (SrcState ValueState Variable
-> [VS (CppSrcCode Value)] -> SrcState MethodState Statement)
-> (HdrState ValueState Variable
-> [HdrState ValueState Value] -> HdrState MethodState Statement)
-> PairState MethodState p Variable
-> [PairState MethodState p Value]
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> [SrcState s b] -> SrcState t c)
-> (HdrState r a -> [HdrState s b] -> HdrState t c)
-> PairState t p a
-> [PairState t p b]
-> PairState t p c
pair1Val1List (SrcState ValueState Variable
-> CppSrcCode ScopeData
-> [VS (CppSrcCode Value)]
-> SrcState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(scope :: k) (val :: k).
DeclStatement r bod stmt var scope val =>
VS (r var) -> r scope -> [VS (r val)] -> MS (r stmt)
`listDecDef` p CppSrcCode CppHdrCode ScopeData -> CppSrcCode ScopeData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode ScopeData
scp)
(HdrState ValueState Variable
-> CppHdrCode ScopeData
-> [HdrState ValueState Value]
-> HdrState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(scope :: k) (val :: k).
DeclStatement r bod stmt var scope val =>
VS (r var) -> r scope -> [VS (r val)] -> MS (r stmt)
`listDecDef` p CppSrcCode CppHdrCode ScopeData -> CppHdrCode ScopeData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd p CppSrcCode CppHdrCode ScopeData
scp) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Variable)
vr) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS (VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value)
-> [VS (p CppSrcCode CppHdrCode Value)]
-> [PairState MethodState p Value]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [VS (p CppSrcCode CppHdrCode Value)]
vs)
arrayDec :: Integer
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Variable)
-> p CppSrcCode CppHdrCode ScopeData
-> MS (p CppSrcCode CppHdrCode Statement)
arrayDec Integer
n VS (p CppSrcCode CppHdrCode Value)
dflt VS (p CppSrcCode CppHdrCode Variable)
vr p CppSrcCode CppHdrCode ScopeData
scp = (SrcState ValueState Variable
-> VS (CppSrcCode Value) -> SrcState MethodState Statement)
-> (HdrState ValueState Variable
-> HdrState ValueState Value -> HdrState MethodState Statement)
-> PairState MethodState p Variable
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 (\SrcState ValueState Variable
v VS (CppSrcCode Value)
d -> Integer
-> VS (CppSrcCode Value)
-> SrcState ValueState Variable
-> CppSrcCode ScopeData
-> SrcState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(scope :: k) (val :: k).
DeclStatement r bod stmt var scope val =>
Integer -> VS (r val) -> VS (r var) -> r scope -> MS (r stmt)
arrayDec Integer
n VS (CppSrcCode Value)
d SrcState ValueState Variable
v (p CppSrcCode CppHdrCode ScopeData -> CppSrcCode ScopeData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode ScopeData
scp))
(\HdrState ValueState Variable
v HdrState ValueState Value
d -> Integer
-> HdrState ValueState Value
-> HdrState ValueState Variable
-> CppHdrCode ScopeData
-> HdrState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(scope :: k) (val :: k).
DeclStatement r bod stmt var scope val =>
Integer -> VS (r val) -> VS (r var) -> r scope -> MS (r stmt)
arrayDec Integer
n HdrState ValueState Value
d HdrState ValueState Variable
v (p CppSrcCode CppHdrCode ScopeData -> CppHdrCode ScopeData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd p CppSrcCode CppHdrCode ScopeData
scp)) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Variable)
vr) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Value)
dflt)
arrayDecDef :: VS (p CppSrcCode CppHdrCode Variable)
-> p CppSrcCode CppHdrCode ScopeData
-> [VS (p CppSrcCode CppHdrCode Value)]
-> MS (p CppSrcCode CppHdrCode Statement)
arrayDecDef VS (p CppSrcCode CppHdrCode Variable)
vr p CppSrcCode CppHdrCode ScopeData
scp [VS (p CppSrcCode CppHdrCode Value)]
vs = (SrcState ValueState Variable
-> [VS (CppSrcCode Value)] -> SrcState MethodState Statement)
-> (HdrState ValueState Variable
-> [HdrState ValueState Value] -> HdrState MethodState Statement)
-> PairState MethodState p Variable
-> [PairState MethodState p Value]
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> [SrcState s b] -> SrcState t c)
-> (HdrState r a -> [HdrState s b] -> HdrState t c)
-> PairState t p a
-> [PairState t p b]
-> PairState t p c
pair1Val1List (SrcState ValueState Variable
-> CppSrcCode ScopeData
-> [VS (CppSrcCode Value)]
-> SrcState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(scope :: k) (val :: k).
DeclStatement r bod stmt var scope val =>
VS (r var) -> r scope -> [VS (r val)] -> MS (r stmt)
`arrayDecDef` p CppSrcCode CppHdrCode ScopeData -> CppSrcCode ScopeData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode ScopeData
scp)
(HdrState ValueState Variable
-> CppHdrCode ScopeData
-> [HdrState ValueState Value]
-> HdrState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(scope :: k) (val :: k).
DeclStatement r bod stmt var scope val =>
VS (r var) -> r scope -> [VS (r val)] -> MS (r stmt)
`arrayDecDef` p CppSrcCode CppHdrCode ScopeData -> CppHdrCode ScopeData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd p CppSrcCode CppHdrCode ScopeData
scp) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Variable)
vr) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS (VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value)
-> [VS (p CppSrcCode CppHdrCode Value)]
-> [PairState MethodState p Value]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [VS (p CppSrcCode CppHdrCode Value)]
vs)
constDecDef :: VS (p CppSrcCode CppHdrCode Variable)
-> p CppSrcCode CppHdrCode ScopeData
-> VS (p CppSrcCode CppHdrCode Value)
-> MS (p CppSrcCode CppHdrCode Statement)
constDecDef VS (p CppSrcCode CppHdrCode Variable)
vr p CppSrcCode CppHdrCode ScopeData
scp VS (p CppSrcCode CppHdrCode Value)
vl = (SrcState ValueState Variable
-> VS (CppSrcCode Value) -> SrcState MethodState Statement)
-> (HdrState ValueState Variable
-> HdrState ValueState Value -> HdrState MethodState Statement)
-> PairState MethodState p Variable
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 (SrcState ValueState Variable
-> CppSrcCode ScopeData
-> VS (CppSrcCode Value)
-> SrcState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(scope :: k) (val :: k).
DeclStatement r bod stmt var scope val =>
VS (r var) -> r scope -> VS (r val) -> MS (r stmt)
`constDecDef` p CppSrcCode CppHdrCode ScopeData -> CppSrcCode ScopeData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode ScopeData
scp)
(HdrState ValueState Variable
-> CppHdrCode ScopeData
-> HdrState ValueState Value
-> HdrState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(scope :: k) (val :: k).
DeclStatement r bod stmt var scope val =>
VS (r var) -> r scope -> VS (r val) -> MS (r stmt)
`constDecDef` p CppSrcCode CppHdrCode ScopeData -> CppHdrCode ScopeData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd p CppSrcCode CppHdrCode ScopeData
scp) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Variable)
vr) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Value)
vl)
funcDecDef :: VS (p CppSrcCode CppHdrCode Variable)
-> p CppSrcCode CppHdrCode ScopeData
-> [VS (p CppSrcCode CppHdrCode Variable)]
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode Statement)
funcDecDef VS (p CppSrcCode CppHdrCode Variable)
v p CppSrcCode CppHdrCode ScopeData
scp [VS (p CppSrcCode CppHdrCode Variable)]
ps = (SrcState ValueState Variable
-> [SrcState ValueState Variable]
-> SrcState MethodState Doc
-> SrcState MethodState Statement)
-> (HdrState ValueState Variable
-> [HdrState ValueState Variable]
-> HdrState MethodState Doc
-> HdrState MethodState Statement)
-> PairState MethodState p Variable
-> [PairState MethodState p Variable]
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c u d.
Pair p =>
(SrcState r a -> [SrcState s b] -> SrcState t c -> SrcState u d)
-> (HdrState r a -> [HdrState s b] -> HdrState t c -> HdrState u d)
-> PairState u p a
-> [PairState u p b]
-> PairState u p c
-> PairState u p d
pairValListVal (SrcState ValueState Variable
-> CppSrcCode ScopeData
-> [SrcState ValueState Variable]
-> SrcState MethodState Doc
-> SrcState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(scope :: k) (val :: k).
DeclStatement r bod stmt var scope val =>
VS (r var) -> r scope -> [VS (r var)] -> MS (r bod) -> MS (r stmt)
`funcDecDef` p CppSrcCode CppHdrCode ScopeData -> CppSrcCode ScopeData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode ScopeData
scp)
(HdrState ValueState Variable
-> CppHdrCode ScopeData
-> [HdrState ValueState Variable]
-> HdrState MethodState Doc
-> HdrState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(scope :: k) (val :: k).
DeclStatement r bod stmt var scope val =>
VS (r var) -> r scope -> [VS (r var)] -> MS (r bod) -> MS (r stmt)
`funcDecDef` p CppSrcCode CppHdrCode ScopeData -> CppHdrCode ScopeData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd p CppSrcCode CppHdrCode ScopeData
scp) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Variable)
v) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS (VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable)
-> [VS (p CppSrcCode CppHdrCode Variable)]
-> [PairState MethodState p Variable]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [VS (p CppSrcCode CppHdrCode Variable)]
ps)
instance (Pair p) => OODeclStatement (p CppSrcCode CppHdrCode) Statement Variable ScopeData Value where
objDecDef :: VS (p CppSrcCode CppHdrCode Variable)
-> p CppSrcCode CppHdrCode ScopeData
-> VS (p CppSrcCode CppHdrCode Value)
-> MS (p CppSrcCode CppHdrCode Statement)
objDecDef VS (p CppSrcCode CppHdrCode Variable)
o p CppSrcCode CppHdrCode ScopeData
scp VS (p CppSrcCode CppHdrCode Value)
v = (SrcState ValueState Variable
-> VS (CppSrcCode Value) -> SrcState MethodState Statement)
-> (HdrState ValueState Variable
-> HdrState ValueState Value -> HdrState MethodState Statement)
-> PairState MethodState p Variable
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 (SrcState ValueState Variable
-> CppSrcCode ScopeData
-> VS (CppSrcCode Value)
-> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (var :: k) (scope :: k)
(val :: k).
OODeclStatement r stmt var scope val =>
VS (r var) -> r scope -> VS (r val) -> MS (r stmt)
`objDecDef` p CppSrcCode CppHdrCode ScopeData -> CppSrcCode ScopeData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode ScopeData
scp) (HdrState ValueState Variable
-> CppHdrCode ScopeData
-> HdrState ValueState Value
-> HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (var :: k) (scope :: k)
(val :: k).
OODeclStatement r stmt var scope val =>
VS (r var) -> r scope -> VS (r val) -> MS (r stmt)
`objDecDef` p CppSrcCode CppHdrCode ScopeData -> CppHdrCode ScopeData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd p CppSrcCode CppHdrCode ScopeData
scp)
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Variable)
o) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Value)
v)
objDecNew :: VS (p CppSrcCode CppHdrCode Variable)
-> p CppSrcCode CppHdrCode ScopeData
-> [VS (p CppSrcCode CppHdrCode Value)]
-> MS (p CppSrcCode CppHdrCode Statement)
objDecNew VS (p CppSrcCode CppHdrCode Variable)
vr p CppSrcCode CppHdrCode ScopeData
scp [VS (p CppSrcCode CppHdrCode Value)]
vs = (SrcState ValueState Variable
-> [VS (CppSrcCode Value)] -> SrcState MethodState Statement)
-> (HdrState ValueState Variable
-> [HdrState ValueState Value] -> HdrState MethodState Statement)
-> PairState MethodState p Variable
-> [PairState MethodState p Value]
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> [SrcState s b] -> SrcState t c)
-> (HdrState r a -> [HdrState s b] -> HdrState t c)
-> PairState t p a
-> [PairState t p b]
-> PairState t p c
pair1Val1List (SrcState ValueState Variable
-> CppSrcCode ScopeData
-> [VS (CppSrcCode Value)]
-> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (var :: k) (scope :: k)
(val :: k).
OODeclStatement r stmt var scope val =>
VS (r var) -> r scope -> [VS (r val)] -> MS (r stmt)
`objDecNew` p CppSrcCode CppHdrCode ScopeData -> CppSrcCode ScopeData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode ScopeData
scp)
(HdrState ValueState Variable
-> CppHdrCode ScopeData
-> [HdrState ValueState Value]
-> HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (var :: k) (scope :: k)
(val :: k).
OODeclStatement r stmt var scope val =>
VS (r var) -> r scope -> [VS (r val)] -> MS (r stmt)
`objDecNew` p CppSrcCode CppHdrCode ScopeData -> CppHdrCode ScopeData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd p CppSrcCode CppHdrCode ScopeData
scp) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Variable)
vr) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS (VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value)
-> [VS (p CppSrcCode CppHdrCode Value)]
-> [PairState MethodState p Value]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [VS (p CppSrcCode CppHdrCode Value)]
vs)
extObjDecNew :: String
-> VS (p CppSrcCode CppHdrCode Variable)
-> p CppSrcCode CppHdrCode ScopeData
-> [VS (p CppSrcCode CppHdrCode Value)]
-> MS (p CppSrcCode CppHdrCode Statement)
extObjDecNew String
lib VS (p CppSrcCode CppHdrCode Variable)
vr p CppSrcCode CppHdrCode ScopeData
scp [VS (p CppSrcCode CppHdrCode Value)]
vs = (SrcState ValueState Variable
-> [VS (CppSrcCode Value)] -> SrcState MethodState Statement)
-> (HdrState ValueState Variable
-> [HdrState ValueState Value] -> HdrState MethodState Statement)
-> PairState MethodState p Variable
-> [PairState MethodState p Value]
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> [SrcState s b] -> SrcState t c)
-> (HdrState r a -> [HdrState s b] -> HdrState t c)
-> PairState t p a
-> [PairState t p b]
-> PairState t p c
pair1Val1List
(\SrcState ValueState Variable
vr' -> String
-> SrcState ValueState Variable
-> CppSrcCode ScopeData
-> [VS (CppSrcCode Value)]
-> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (var :: k) (scope :: k)
(val :: k).
OODeclStatement r stmt var scope val =>
String -> VS (r var) -> r scope -> [VS (r val)] -> MS (r stmt)
extObjDecNew String
lib SrcState ValueState Variable
vr' (p CppSrcCode CppHdrCode ScopeData -> CppSrcCode ScopeData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode ScopeData
scp))
(\HdrState ValueState Variable
vr' -> String
-> HdrState ValueState Variable
-> CppHdrCode ScopeData
-> [HdrState ValueState Value]
-> HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (var :: k) (scope :: k)
(val :: k).
OODeclStatement r stmt var scope val =>
String -> VS (r var) -> r scope -> [VS (r val)] -> MS (r stmt)
extObjDecNew String
lib HdrState ValueState Variable
vr' (p CppSrcCode CppHdrCode ScopeData -> CppHdrCode ScopeData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd p CppSrcCode CppHdrCode ScopeData
scp))
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Variable)
vr) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS (VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value)
-> [VS (p CppSrcCode CppHdrCode Value)]
-> [PairState MethodState p Value]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [VS (p CppSrcCode CppHdrCode Value)]
vs)
instance (Pair p) => PrintConsole (p CppSrcCode CppHdrCode) Statement Value where
print :: VS (p CppSrcCode CppHdrCode Value)
-> MS (p CppSrcCode CppHdrCode Statement)
print = (VS (CppSrcCode Value) -> SrcState MethodState Statement)
-> (HdrState ValueState Value -> HdrState MethodState Statement)
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 VS (CppSrcCode Value) -> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (val :: k).
PrintConsole r stmt val =>
VS (r val) -> MS (r stmt)
print HdrState ValueState Value -> HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (val :: k).
PrintConsole r stmt val =>
VS (r val) -> MS (r stmt)
print (PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode Statement))
-> (VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> MS (p CppSrcCode CppHdrCode Statement)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS
printLn :: VS (p CppSrcCode CppHdrCode Value)
-> MS (p CppSrcCode CppHdrCode Statement)
printLn = (VS (CppSrcCode Value) -> SrcState MethodState Statement)
-> (HdrState ValueState Value -> HdrState MethodState Statement)
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 VS (CppSrcCode Value) -> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (val :: k).
PrintConsole r stmt val =>
VS (r val) -> MS (r stmt)
printLn HdrState ValueState Value -> HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (val :: k).
PrintConsole r stmt val =>
VS (r val) -> MS (r stmt)
printLn (PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode Statement))
-> (VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> MS (p CppSrcCode CppHdrCode Statement)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS
printStr :: String -> MS (p CppSrcCode CppHdrCode Statement)
printStr String
s = (CppSrcCode Statement
-> CppHdrCode Statement -> p CppSrcCode CppHdrCode Statement)
-> SrcState MethodState Statement
-> HdrState MethodState Statement
-> MS (p CppSrcCode CppHdrCode Statement)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode Statement
-> CppHdrCode Statement -> p CppSrcCode CppHdrCode Statement
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair (String -> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (val :: k).
PrintConsole r stmt val =>
String -> MS (r stmt)
printStr String
s) (String -> HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (val :: k).
PrintConsole r stmt val =>
String -> MS (r stmt)
printStr String
s)
printStrLn :: String -> MS (p CppSrcCode CppHdrCode Statement)
printStrLn String
s = (CppSrcCode Statement
-> CppHdrCode Statement -> p CppSrcCode CppHdrCode Statement)
-> SrcState MethodState Statement
-> HdrState MethodState Statement
-> MS (p CppSrcCode CppHdrCode Statement)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode Statement
-> CppHdrCode Statement -> p CppSrcCode CppHdrCode Statement
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair (String -> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (val :: k).
PrintConsole r stmt val =>
String -> MS (r stmt)
printStrLn String
s) (String -> HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (val :: k).
PrintConsole r stmt val =>
String -> MS (r stmt)
printStrLn String
s)
instance (Pair p) => ReadConsole (p CppSrcCode CppHdrCode) Statement Variable where
getInput :: VS (p CppSrcCode CppHdrCode Variable)
-> MS (p CppSrcCode CppHdrCode Statement)
getInput = (SrcState ValueState Variable -> SrcState MethodState Statement)
-> (HdrState ValueState Variable -> HdrState MethodState Statement)
-> PairState MethodState p Variable
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 SrcState ValueState Variable -> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (var :: k).
ReadConsole r stmt var =>
VS (r var) -> MS (r stmt)
getInput HdrState ValueState Variable -> HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (var :: k).
ReadConsole r stmt var =>
VS (r var) -> MS (r stmt)
getInput (PairState MethodState p Variable
-> MS (p CppSrcCode CppHdrCode Statement))
-> (VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable)
-> VS (p CppSrcCode CppHdrCode Variable)
-> MS (p CppSrcCode CppHdrCode Statement)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS
discardInput :: MS (p CppSrcCode CppHdrCode Statement)
discardInput = (CppSrcCode Statement
-> CppHdrCode Statement -> p CppSrcCode CppHdrCode Statement)
-> SrcState MethodState Statement
-> HdrState MethodState Statement
-> MS (p CppSrcCode CppHdrCode Statement)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode Statement
-> CppHdrCode Statement -> p CppSrcCode CppHdrCode Statement
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (var :: k).
ReadConsole r stmt var =>
MS (r stmt)
discardInput HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (var :: k).
ReadConsole r stmt var =>
MS (r stmt)
discardInput
instance (Pair p) => FileHandling (p CppSrcCode CppHdrCode) Statement Variable Value where
openFileR :: VS (p CppSrcCode CppHdrCode Variable)
-> VS (p CppSrcCode CppHdrCode Value)
-> MS (p CppSrcCode CppHdrCode Statement)
openFileR VS (p CppSrcCode CppHdrCode Variable)
f VS (p CppSrcCode CppHdrCode Value)
v = (SrcState ValueState Variable
-> VS (CppSrcCode Value) -> SrcState MethodState Statement)
-> (HdrState ValueState Variable
-> HdrState ValueState Value -> HdrState MethodState Statement)
-> PairState MethodState p Variable
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 SrcState ValueState Variable
-> VS (CppSrcCode Value) -> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (var :: k) (val :: k).
FileHandling r stmt var val =>
VS (r var) -> VS (r val) -> MS (r stmt)
openFileR HdrState ValueState Variable
-> HdrState ValueState Value -> HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (var :: k) (val :: k).
FileHandling r stmt var val =>
VS (r var) -> VS (r val) -> MS (r stmt)
openFileR (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Variable)
f)
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Value)
v)
openFileW :: VS (p CppSrcCode CppHdrCode Variable)
-> VS (p CppSrcCode CppHdrCode Value)
-> MS (p CppSrcCode CppHdrCode Statement)
openFileW VS (p CppSrcCode CppHdrCode Variable)
f VS (p CppSrcCode CppHdrCode Value)
v = (SrcState ValueState Variable
-> VS (CppSrcCode Value) -> SrcState MethodState Statement)
-> (HdrState ValueState Variable
-> HdrState ValueState Value -> HdrState MethodState Statement)
-> PairState MethodState p Variable
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 SrcState ValueState Variable
-> VS (CppSrcCode Value) -> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (var :: k) (val :: k).
FileHandling r stmt var val =>
VS (r var) -> VS (r val) -> MS (r stmt)
openFileW HdrState ValueState Variable
-> HdrState ValueState Value -> HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (var :: k) (val :: k).
FileHandling r stmt var val =>
VS (r var) -> VS (r val) -> MS (r stmt)
openFileW (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Variable)
f)
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Value)
v)
openFileA :: VS (p CppSrcCode CppHdrCode Variable)
-> VS (p CppSrcCode CppHdrCode Value)
-> MS (p CppSrcCode CppHdrCode Statement)
openFileA VS (p CppSrcCode CppHdrCode Variable)
f VS (p CppSrcCode CppHdrCode Value)
v = (SrcState ValueState Variable
-> VS (CppSrcCode Value) -> SrcState MethodState Statement)
-> (HdrState ValueState Variable
-> HdrState ValueState Value -> HdrState MethodState Statement)
-> PairState MethodState p Variable
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 SrcState ValueState Variable
-> VS (CppSrcCode Value) -> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (var :: k) (val :: k).
FileHandling r stmt var val =>
VS (r var) -> VS (r val) -> MS (r stmt)
openFileA HdrState ValueState Variable
-> HdrState ValueState Value -> HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (var :: k) (val :: k).
FileHandling r stmt var val =>
VS (r var) -> VS (r val) -> MS (r stmt)
openFileA (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Variable)
f)
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Value)
v)
closeFile :: VS (p CppSrcCode CppHdrCode Value)
-> MS (p CppSrcCode CppHdrCode Statement)
closeFile = (VS (CppSrcCode Value) -> SrcState MethodState Statement)
-> (HdrState ValueState Value -> HdrState MethodState Statement)
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 VS (CppSrcCode Value) -> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (var :: k) (val :: k).
FileHandling r stmt var val =>
VS (r val) -> MS (r stmt)
closeFile HdrState ValueState Value -> HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (var :: k) (val :: k).
FileHandling r stmt var val =>
VS (r val) -> MS (r stmt)
closeFile (PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode Statement))
-> (VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> MS (p CppSrcCode CppHdrCode Statement)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS
instance (Pair p) => PrintFile (p CppSrcCode CppHdrCode) Statement Value where
printFile :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> MS (p CppSrcCode CppHdrCode Statement)
printFile VS (p CppSrcCode CppHdrCode Value)
f VS (p CppSrcCode CppHdrCode Value)
v = (VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> SrcState MethodState Statement)
-> (HdrState ValueState Value
-> HdrState ValueState Value -> HdrState MethodState Statement)
-> PairState MethodState p Value
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (val :: k).
PrintFile r stmt val =>
VS (r val) -> VS (r val) -> MS (r stmt)
printFile HdrState ValueState Value
-> HdrState ValueState Value -> HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (val :: k).
PrintFile r stmt val =>
VS (r val) -> VS (r val) -> MS (r stmt)
printFile (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Value)
f)
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Value)
v)
printFileLn :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> MS (p CppSrcCode CppHdrCode Statement)
printFileLn VS (p CppSrcCode CppHdrCode Value)
f VS (p CppSrcCode CppHdrCode Value)
v = (VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> SrcState MethodState Statement)
-> (HdrState ValueState Value
-> HdrState ValueState Value -> HdrState MethodState Statement)
-> PairState MethodState p Value
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (val :: k).
PrintFile r stmt val =>
VS (r val) -> VS (r val) -> MS (r stmt)
printFileLn HdrState ValueState Value
-> HdrState ValueState Value -> HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (val :: k).
PrintFile r stmt val =>
VS (r val) -> VS (r val) -> MS (r stmt)
printFileLn (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Value)
f)
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Value)
v)
printFileStr :: VS (p CppSrcCode CppHdrCode Value)
-> String -> MS (p CppSrcCode CppHdrCode Statement)
printFileStr VS (p CppSrcCode CppHdrCode Value)
f String
s = (VS (CppSrcCode Value) -> SrcState MethodState Statement)
-> (HdrState ValueState Value -> HdrState MethodState Statement)
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 (VS (CppSrcCode Value) -> String -> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (val :: k).
PrintFile r stmt val =>
VS (r val) -> String -> MS (r stmt)
`printFileStr` String
s) (HdrState ValueState Value
-> String -> HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (val :: k).
PrintFile r stmt val =>
VS (r val) -> String -> MS (r stmt)
`printFileStr` String
s)
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Value)
f)
printFileStrLn :: VS (p CppSrcCode CppHdrCode Value)
-> String -> MS (p CppSrcCode CppHdrCode Statement)
printFileStrLn VS (p CppSrcCode CppHdrCode Value)
f String
s = (VS (CppSrcCode Value) -> SrcState MethodState Statement)
-> (HdrState ValueState Value -> HdrState MethodState Statement)
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 (VS (CppSrcCode Value) -> String -> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (val :: k).
PrintFile r stmt val =>
VS (r val) -> String -> MS (r stmt)
`printFileStrLn` String
s) (HdrState ValueState Value
-> String -> HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (val :: k).
PrintFile r stmt val =>
VS (r val) -> String -> MS (r stmt)
`printFileStrLn` String
s)
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Value)
f)
instance (Pair p) => ReadFile (p CppSrcCode CppHdrCode) Statement Variable Value where
getFileInput :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Variable)
-> MS (p CppSrcCode CppHdrCode Statement)
getFileInput VS (p CppSrcCode CppHdrCode Value)
f VS (p CppSrcCode CppHdrCode Variable)
v = (VS (CppSrcCode Value)
-> SrcState ValueState Variable -> SrcState MethodState Statement)
-> (HdrState ValueState Value
-> HdrState ValueState Variable -> HdrState MethodState Statement)
-> PairState MethodState p Value
-> PairState MethodState p Variable
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 VS (CppSrcCode Value)
-> SrcState ValueState Variable -> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (var :: k) (val :: k).
ReadFile r stmt var val =>
VS (r val) -> VS (r var) -> MS (r stmt)
getFileInput HdrState ValueState Value
-> HdrState ValueState Variable -> HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (var :: k) (val :: k).
ReadFile r stmt var val =>
VS (r val) -> VS (r var) -> MS (r stmt)
getFileInput (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Value)
f)
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Variable)
v)
discardFileInput :: VS (p CppSrcCode CppHdrCode Value)
-> MS (p CppSrcCode CppHdrCode Statement)
discardFileInput = (VS (CppSrcCode Value) -> SrcState MethodState Statement)
-> (HdrState ValueState Value -> HdrState MethodState Statement)
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 VS (CppSrcCode Value) -> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (var :: k) (val :: k).
ReadFile r stmt var val =>
VS (r val) -> MS (r stmt)
discardFileInput HdrState ValueState Value -> HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (var :: k) (val :: k).
ReadFile r stmt var val =>
VS (r val) -> MS (r stmt)
discardFileInput (PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode Statement))
-> (VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> MS (p CppSrcCode CppHdrCode Statement)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS
getFileInputLine :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Variable)
-> MS (p CppSrcCode CppHdrCode Statement)
getFileInputLine VS (p CppSrcCode CppHdrCode Value)
f VS (p CppSrcCode CppHdrCode Variable)
v = (VS (CppSrcCode Value)
-> SrcState ValueState Variable -> SrcState MethodState Statement)
-> (HdrState ValueState Value
-> HdrState ValueState Variable -> HdrState MethodState Statement)
-> PairState MethodState p Value
-> PairState MethodState p Variable
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 VS (CppSrcCode Value)
-> SrcState ValueState Variable -> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (var :: k) (val :: k).
ReadFile r stmt var val =>
VS (r val) -> VS (r var) -> MS (r stmt)
getFileInputLine HdrState ValueState Value
-> HdrState ValueState Variable -> HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (var :: k) (val :: k).
ReadFile r stmt var val =>
VS (r val) -> VS (r var) -> MS (r stmt)
getFileInputLine
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Value)
f) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Variable)
v)
discardFileLine :: VS (p CppSrcCode CppHdrCode Value)
-> MS (p CppSrcCode CppHdrCode Statement)
discardFileLine = (VS (CppSrcCode Value) -> SrcState MethodState Statement)
-> (HdrState ValueState Value -> HdrState MethodState Statement)
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 VS (CppSrcCode Value) -> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (var :: k) (val :: k).
ReadFile r stmt var val =>
VS (r val) -> MS (r stmt)
discardFileLine HdrState ValueState Value -> HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (var :: k) (val :: k).
ReadFile r stmt var val =>
VS (r val) -> MS (r stmt)
discardFileLine (PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode Statement))
-> (VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> MS (p CppSrcCode CppHdrCode Statement)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS
getFileInputAll :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Variable)
-> MS (p CppSrcCode CppHdrCode Statement)
getFileInputAll VS (p CppSrcCode CppHdrCode Value)
f VS (p CppSrcCode CppHdrCode Variable)
v = (VS (CppSrcCode Value)
-> SrcState ValueState Variable -> SrcState MethodState Statement)
-> (HdrState ValueState Value
-> HdrState ValueState Variable -> HdrState MethodState Statement)
-> PairState MethodState p Value
-> PairState MethodState p Variable
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 VS (CppSrcCode Value)
-> SrcState ValueState Variable -> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (var :: k) (val :: k).
ReadFile r stmt var val =>
VS (r val) -> VS (r var) -> MS (r stmt)
getFileInputAll HdrState ValueState Value
-> HdrState ValueState Variable -> HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (var :: k) (val :: k).
ReadFile r stmt var val =>
VS (r val) -> VS (r var) -> MS (r stmt)
getFileInputAll
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Value)
f) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Variable)
v)
instance (Pair p) => StringStatement (p CppSrcCode CppHdrCode) Statement Variable Value where
stringSplit :: Char
-> VS (p CppSrcCode CppHdrCode Variable)
-> VS (p CppSrcCode CppHdrCode Value)
-> MS (p CppSrcCode CppHdrCode Statement)
stringSplit Char
d VS (p CppSrcCode CppHdrCode Variable)
vnew VS (p CppSrcCode CppHdrCode Value)
s = (SrcState ValueState Variable
-> VS (CppSrcCode Value) -> SrcState MethodState Statement)
-> (HdrState ValueState Variable
-> HdrState ValueState Value -> HdrState MethodState Statement)
-> PairState MethodState p Variable
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 (Char
-> SrcState ValueState Variable
-> VS (CppSrcCode Value)
-> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (var :: k) (val :: k).
StringStatement r stmt var val =>
Char -> VS (r var) -> VS (r val) -> MS (r stmt)
stringSplit Char
d) (Char
-> HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (var :: k) (val :: k).
StringStatement r stmt var val =>
Char -> VS (r var) -> VS (r val) -> MS (r stmt)
stringSplit Char
d)
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Variable)
vnew) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Value)
s)
stringListVals :: [VS (p CppSrcCode CppHdrCode Variable)]
-> VS (p CppSrcCode CppHdrCode Value)
-> MS (p CppSrcCode CppHdrCode Statement)
stringListVals [VS (p CppSrcCode CppHdrCode Variable)]
vars VS (p CppSrcCode CppHdrCode Value)
sl = ([SrcState ValueState Variable]
-> VS (CppSrcCode Value) -> SrcState MethodState Statement)
-> ([HdrState ValueState Variable]
-> HdrState ValueState Value -> HdrState MethodState Statement)
-> [PairState MethodState p Variable]
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
([SrcState r a] -> SrcState s b -> SrcState t c)
-> ([HdrState r a] -> HdrState s b -> HdrState t c)
-> [PairState t p a]
-> PairState t p b
-> PairState t p c
pair1List1Val [SrcState ValueState Variable]
-> VS (CppSrcCode Value) -> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (var :: k) (val :: k).
StringStatement r stmt var val =>
[VS (r var)] -> VS (r val) -> MS (r stmt)
stringListVals [HdrState ValueState Variable]
-> HdrState ValueState Value -> HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (var :: k) (val :: k).
StringStatement r stmt var val =>
[VS (r var)] -> VS (r val) -> MS (r stmt)
stringListVals
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS (VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable)
-> [VS (p CppSrcCode CppHdrCode Variable)]
-> [PairState MethodState p Variable]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [VS (p CppSrcCode CppHdrCode Variable)]
vars) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Value)
sl)
stringListLists :: [VS (p CppSrcCode CppHdrCode Variable)]
-> VS (p CppSrcCode CppHdrCode Value)
-> MS (p CppSrcCode CppHdrCode Statement)
stringListLists [VS (p CppSrcCode CppHdrCode Variable)]
lsts VS (p CppSrcCode CppHdrCode Value)
sl = ([SrcState ValueState Variable]
-> VS (CppSrcCode Value) -> SrcState MethodState Statement)
-> ([HdrState ValueState Variable]
-> HdrState ValueState Value -> HdrState MethodState Statement)
-> [PairState MethodState p Variable]
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
([SrcState r a] -> SrcState s b -> SrcState t c)
-> ([HdrState r a] -> HdrState s b -> HdrState t c)
-> [PairState t p a]
-> PairState t p b
-> PairState t p c
pair1List1Val [SrcState ValueState Variable]
-> VS (CppSrcCode Value) -> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (var :: k) (val :: k).
StringStatement r stmt var val =>
[VS (r var)] -> VS (r val) -> MS (r stmt)
stringListLists [HdrState ValueState Variable]
-> HdrState ValueState Value -> HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (var :: k) (val :: k).
StringStatement r stmt var val =>
[VS (r var)] -> VS (r val) -> MS (r stmt)
stringListLists
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS (VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable)
-> [VS (p CppSrcCode CppHdrCode Variable)]
-> [PairState MethodState p Variable]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [VS (p CppSrcCode CppHdrCode Variable)]
lsts) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Value)
sl)
instance (Pair p) => FuncAppStatement (p CppSrcCode CppHdrCode) Statement Variable Value where
inOutCall :: InOutCall (p CppSrcCode CppHdrCode) Statement Variable Value
inOutCall String
n [VS (p CppSrcCode CppHdrCode Value)]
is [VS (p CppSrcCode CppHdrCode Variable)]
os [VS (p CppSrcCode CppHdrCode Variable)]
bs = ([VS (CppSrcCode Value)]
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> SrcState MethodState Statement)
-> ([HdrState ValueState Value]
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> HdrState MethodState Statement)
-> [PairState MethodState p Value]
-> [PairState MethodState p Variable]
-> [PairState MethodState p Variable]
-> PairState MethodState p Statement
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c u d.
Pair p =>
([SrcState r a]
-> [SrcState s b] -> [SrcState t c] -> SrcState u d)
-> ([HdrState r a]
-> [HdrState s b] -> [HdrState t c] -> HdrState u d)
-> [PairState u p a]
-> [PairState u p b]
-> [PairState u p c]
-> PairState u p d
pair3Lists (InOutCall CppSrcCode Statement Variable Value
forall {k} (r :: k -> *) (stmt :: k) (var :: k) (val :: k).
FuncAppStatement r stmt var val =>
InOutCall r stmt var val
inOutCall String
n) (InOutCall CppHdrCode Statement Variable Value
forall {k} (r :: k -> *) (stmt :: k) (var :: k) (val :: k).
FuncAppStatement r stmt var val =>
InOutCall r stmt var val
inOutCall String
n)
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS (VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value)
-> [VS (p CppSrcCode CppHdrCode Value)]
-> [PairState MethodState p Value]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [VS (p CppSrcCode CppHdrCode Value)]
is) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS (VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable)
-> [VS (p CppSrcCode CppHdrCode Variable)]
-> [PairState MethodState p Variable]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [VS (p CppSrcCode CppHdrCode Variable)]
os)
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS (VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable)
-> [VS (p CppSrcCode CppHdrCode Variable)]
-> [PairState MethodState p Variable]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [VS (p CppSrcCode CppHdrCode Variable)]
bs)
extInOutCall :: String
-> InOutCall (p CppSrcCode CppHdrCode) Statement Variable Value
extInOutCall String
m String
n [VS (p CppSrcCode CppHdrCode Value)]
is [VS (p CppSrcCode CppHdrCode Variable)]
os [VS (p CppSrcCode CppHdrCode Variable)]
bs = ([VS (CppSrcCode Value)]
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> SrcState MethodState Statement)
-> ([HdrState ValueState Value]
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> HdrState MethodState Statement)
-> [PairState MethodState p Value]
-> [PairState MethodState p Variable]
-> [PairState MethodState p Variable]
-> PairState MethodState p Statement
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c u d.
Pair p =>
([SrcState r a]
-> [SrcState s b] -> [SrcState t c] -> SrcState u d)
-> ([HdrState r a]
-> [HdrState s b] -> [HdrState t c] -> HdrState u d)
-> [PairState u p a]
-> [PairState u p b]
-> [PairState u p c]
-> PairState u p d
pair3Lists (String -> InOutCall CppSrcCode Statement Variable Value
forall {k} (r :: k -> *) (stmt :: k) (var :: k) (val :: k).
FuncAppStatement r stmt var val =>
String -> InOutCall r stmt var val
extInOutCall String
m String
n) (String -> InOutCall CppHdrCode Statement Variable Value
forall {k} (r :: k -> *) (stmt :: k) (var :: k) (val :: k).
FuncAppStatement r stmt var val =>
String -> InOutCall r stmt var val
extInOutCall String
m String
n)
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS (VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value)
-> [VS (p CppSrcCode CppHdrCode Value)]
-> [PairState MethodState p Value]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [VS (p CppSrcCode CppHdrCode Value)]
is) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS (VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable)
-> [VS (p CppSrcCode CppHdrCode Variable)]
-> [PairState MethodState p Variable]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [VS (p CppSrcCode CppHdrCode Variable)]
os)
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS (VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable)
-> [VS (p CppSrcCode CppHdrCode Variable)]
-> [PairState MethodState p Variable]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [VS (p CppSrcCode CppHdrCode Variable)]
bs)
instance (Pair p) => OOFuncAppStatement (p CppSrcCode CppHdrCode) Statement Variable Value where
selfInOutCall :: InOutCall (p CppSrcCode CppHdrCode) Statement Variable Value
selfInOutCall String
n [VS (p CppSrcCode CppHdrCode Value)]
is [VS (p CppSrcCode CppHdrCode Variable)]
os [VS (p CppSrcCode CppHdrCode Variable)]
bs = ([VS (CppSrcCode Value)]
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> SrcState MethodState Statement)
-> ([HdrState ValueState Value]
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> HdrState MethodState Statement)
-> [PairState MethodState p Value]
-> [PairState MethodState p Variable]
-> [PairState MethodState p Variable]
-> PairState MethodState p Statement
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c u d.
Pair p =>
([SrcState r a]
-> [SrcState s b] -> [SrcState t c] -> SrcState u d)
-> ([HdrState r a]
-> [HdrState s b] -> [HdrState t c] -> HdrState u d)
-> [PairState u p a]
-> [PairState u p b]
-> [PairState u p c]
-> PairState u p d
pair3Lists (InOutCall CppSrcCode Statement Variable Value
forall {k} (r :: k -> *) (stmt :: k) (var :: k) (val :: k).
OOFuncAppStatement r stmt var val =>
InOutCall r stmt var val
selfInOutCall String
n) (InOutCall CppHdrCode Statement Variable Value
forall {k} (r :: k -> *) (stmt :: k) (var :: k) (val :: k).
OOFuncAppStatement r stmt var val =>
InOutCall r stmt var val
selfInOutCall String
n)
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS (VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value)
-> [VS (p CppSrcCode CppHdrCode Value)]
-> [PairState MethodState p Value]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [VS (p CppSrcCode CppHdrCode Value)]
is) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS (VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable)
-> [VS (p CppSrcCode CppHdrCode Variable)]
-> [PairState MethodState p Variable]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [VS (p CppSrcCode CppHdrCode Variable)]
os)
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS (VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable)
-> [VS (p CppSrcCode CppHdrCode Variable)]
-> [PairState MethodState p Variable]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [VS (p CppSrcCode CppHdrCode Variable)]
bs)
instance (Pair p) => CommentStatement (p CppSrcCode CppHdrCode) Statement where
comment :: String -> MS (p CppSrcCode CppHdrCode Statement)
comment String
cmt = (CppSrcCode Statement
-> CppHdrCode Statement -> p CppSrcCode CppHdrCode Statement)
-> SrcState MethodState Statement
-> HdrState MethodState Statement
-> MS (p CppSrcCode CppHdrCode Statement)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode Statement
-> CppHdrCode Statement -> p CppSrcCode CppHdrCode Statement
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair (String -> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
CommentStatement r stmt =>
String -> MS (r stmt)
comment String
cmt) (String -> HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
CommentStatement r stmt =>
String -> MS (r stmt)
comment String
cmt)
instance (Pair p) => ControlStatement (p CppSrcCode CppHdrCode) Body Statement Variable Value where
break :: MS (p CppSrcCode CppHdrCode Statement)
break = (CppSrcCode Statement
-> CppHdrCode Statement -> p CppSrcCode CppHdrCode Statement)
-> SrcState MethodState Statement
-> HdrState MethodState Statement
-> MS (p CppSrcCode CppHdrCode Statement)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode Statement
-> CppHdrCode Statement -> p CppSrcCode CppHdrCode Statement
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair SrcState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(val :: k).
ControlStatement r bod stmt var val =>
MS (r stmt)
break HdrState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(val :: k).
ControlStatement r bod stmt var val =>
MS (r stmt)
break
continue :: MS (p CppSrcCode CppHdrCode Statement)
continue = (CppSrcCode Statement
-> CppHdrCode Statement -> p CppSrcCode CppHdrCode Statement)
-> SrcState MethodState Statement
-> HdrState MethodState Statement
-> MS (p CppSrcCode CppHdrCode Statement)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode Statement
-> CppHdrCode Statement -> p CppSrcCode CppHdrCode Statement
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair SrcState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(val :: k).
ControlStatement r bod stmt var val =>
MS (r stmt)
continue HdrState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(val :: k).
ControlStatement r bod stmt var val =>
MS (r stmt)
continue
returnStmt :: VS (p CppSrcCode CppHdrCode Value)
-> MS (p CppSrcCode CppHdrCode Statement)
returnStmt = (VS (CppSrcCode Value) -> SrcState MethodState Statement)
-> (HdrState ValueState Value -> HdrState MethodState Statement)
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 VS (CppSrcCode Value) -> SrcState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(val :: k).
ControlStatement r bod stmt var val =>
VS (r val) -> MS (r stmt)
returnStmt HdrState ValueState Value -> HdrState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(val :: k).
ControlStatement r bod stmt var val =>
VS (r val) -> MS (r stmt)
returnStmt (PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode Statement))
-> (VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> MS (p CppSrcCode CppHdrCode Statement)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS
throw :: String -> MS (p CppSrcCode CppHdrCode Statement)
throw String
errMsg = (CppSrcCode Statement
-> CppHdrCode Statement -> p CppSrcCode CppHdrCode Statement)
-> SrcState MethodState Statement
-> HdrState MethodState Statement
-> MS (p CppSrcCode CppHdrCode Statement)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode Statement
-> CppHdrCode Statement -> p CppSrcCode CppHdrCode Statement
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair (String -> SrcState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(val :: k).
ControlStatement r bod stmt var val =>
String -> MS (r stmt)
throw String
errMsg) (String -> HdrState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(val :: k).
ControlStatement r bod stmt var val =>
String -> MS (r stmt)
throw String
errMsg)
ifCond :: [(VS (p CppSrcCode CppHdrCode Value),
MS (p CppSrcCode CppHdrCode Doc))]
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode Statement)
ifCond [(VS (p CppSrcCode CppHdrCode Value),
MS (p CppSrcCode CppHdrCode Doc))]
bs = ([VS (CppSrcCode Value)]
-> [SrcState MethodState Doc]
-> SrcState MethodState Doc
-> SrcState MethodState Statement)
-> ([HdrState ValueState Value]
-> [HdrState MethodState Doc]
-> HdrState MethodState Doc
-> HdrState MethodState Statement)
-> [PairState MethodState p Value]
-> [MS (p CppSrcCode CppHdrCode Doc)]
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c u d.
Pair p =>
([SrcState r a] -> [SrcState s b] -> SrcState t c -> SrcState u d)
-> ([HdrState r a]
-> [HdrState s b] -> HdrState t c -> HdrState u d)
-> [PairState u p a]
-> [PairState u p b]
-> PairState u p c
-> PairState u p d
pair2Lists1Val
(\[VS (CppSrcCode Value)]
cs [SrcState MethodState Doc]
bods -> [(VS (CppSrcCode Value), SrcState MethodState Doc)]
-> SrcState MethodState Doc -> SrcState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(val :: k).
ControlStatement r bod stmt var val =>
[(VS (r val), MS (r bod))] -> MS (r bod) -> MS (r stmt)
ifCond ([VS (CppSrcCode Value)]
-> [SrcState MethodState Doc]
-> [(VS (CppSrcCode Value), SrcState MethodState Doc)]
forall a b. [a] -> [b] -> [(a, b)]
zip [VS (CppSrcCode Value)]
cs [SrcState MethodState Doc]
bods))
(\[HdrState ValueState Value]
cs [HdrState MethodState Doc]
bods -> [(HdrState ValueState Value, HdrState MethodState Doc)]
-> HdrState MethodState Doc -> HdrState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(val :: k).
ControlStatement r bod stmt var val =>
[(VS (r val), MS (r bod))] -> MS (r bod) -> MS (r stmt)
ifCond ([HdrState ValueState Value]
-> [HdrState MethodState Doc]
-> [(HdrState ValueState Value, HdrState MethodState Doc)]
forall a b. [a] -> [b] -> [(a, b)]
zip [HdrState ValueState Value]
cs [HdrState MethodState Doc]
bods))
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS (VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value)
-> ((VS (p CppSrcCode CppHdrCode Value),
MS (p CppSrcCode CppHdrCode Doc))
-> VS (p CppSrcCode CppHdrCode Value))
-> (VS (p CppSrcCode CppHdrCode Value),
MS (p CppSrcCode CppHdrCode Doc))
-> PairState MethodState p Value
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (VS (p CppSrcCode CppHdrCode Value),
MS (p CppSrcCode CppHdrCode Doc))
-> VS (p CppSrcCode CppHdrCode Value)
forall a b. (a, b) -> a
fst ((VS (p CppSrcCode CppHdrCode Value),
MS (p CppSrcCode CppHdrCode Doc))
-> PairState MethodState p Value)
-> [(VS (p CppSrcCode CppHdrCode Value),
MS (p CppSrcCode CppHdrCode Doc))]
-> [PairState MethodState p Value]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [(VS (p CppSrcCode CppHdrCode Value),
MS (p CppSrcCode CppHdrCode Doc))]
bs) ((VS (p CppSrcCode CppHdrCode Value),
MS (p CppSrcCode CppHdrCode Doc))
-> MS (p CppSrcCode CppHdrCode Doc)
forall a b. (a, b) -> b
snd ((VS (p CppSrcCode CppHdrCode Value),
MS (p CppSrcCode CppHdrCode Doc))
-> MS (p CppSrcCode CppHdrCode Doc))
-> [(VS (p CppSrcCode CppHdrCode Value),
MS (p CppSrcCode CppHdrCode Doc))]
-> [MS (p CppSrcCode CppHdrCode Doc)]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [(VS (p CppSrcCode CppHdrCode Value),
MS (p CppSrcCode CppHdrCode Doc))]
bs)
switch :: VS (p CppSrcCode CppHdrCode Value)
-> [(VS (p CppSrcCode CppHdrCode Value),
MS (p CppSrcCode CppHdrCode Doc))]
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode Statement)
switch VS (p CppSrcCode CppHdrCode Value)
v [(VS (p CppSrcCode CppHdrCode Value),
MS (p CppSrcCode CppHdrCode Doc))]
cs = (VS (CppSrcCode Value)
-> [VS (CppSrcCode Value)]
-> [SrcState MethodState Doc]
-> SrcState MethodState Doc
-> SrcState MethodState Statement)
-> (HdrState ValueState Value
-> [HdrState ValueState Value]
-> [HdrState MethodState Doc]
-> HdrState MethodState Doc
-> HdrState MethodState Statement)
-> PairState MethodState p Value
-> [PairState MethodState p Value]
-> [MS (p CppSrcCode CppHdrCode Doc)]
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c u d v e.
Pair p =>
(SrcState r a
-> [SrcState s b]
-> [SrcState t c]
-> SrcState u d
-> SrcState v e)
-> (HdrState r a
-> [HdrState s b]
-> [HdrState t c]
-> HdrState u d
-> HdrState v e)
-> PairState v p a
-> [PairState v p b]
-> [PairState v p c]
-> PairState v p d
-> PairState v p e
pairVal2ListsVal
(\VS (CppSrcCode Value)
s [VS (CppSrcCode Value)]
cv [SrcState MethodState Doc]
cb -> VS (CppSrcCode Value)
-> [(VS (CppSrcCode Value), SrcState MethodState Doc)]
-> SrcState MethodState Doc
-> SrcState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(val :: k).
ControlStatement r bod stmt var val =>
VS (r val)
-> [(VS (r val), MS (r bod))] -> MS (r bod) -> MS (r stmt)
switch VS (CppSrcCode Value)
s ([VS (CppSrcCode Value)]
-> [SrcState MethodState Doc]
-> [(VS (CppSrcCode Value), SrcState MethodState Doc)]
forall a b. [a] -> [b] -> [(a, b)]
zip [VS (CppSrcCode Value)]
cv [SrcState MethodState Doc]
cb))
(\HdrState ValueState Value
s [HdrState ValueState Value]
cv [HdrState MethodState Doc]
cb -> HdrState ValueState Value
-> [(HdrState ValueState Value, HdrState MethodState Doc)]
-> HdrState MethodState Doc
-> HdrState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(val :: k).
ControlStatement r bod stmt var val =>
VS (r val)
-> [(VS (r val), MS (r bod))] -> MS (r bod) -> MS (r stmt)
switch HdrState ValueState Value
s ([HdrState ValueState Value]
-> [HdrState MethodState Doc]
-> [(HdrState ValueState Value, HdrState MethodState Doc)]
forall a b. [a] -> [b] -> [(a, b)]
zip [HdrState ValueState Value]
cv [HdrState MethodState Doc]
cb))
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Value)
v) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS (VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value)
-> ((VS (p CppSrcCode CppHdrCode Value),
MS (p CppSrcCode CppHdrCode Doc))
-> VS (p CppSrcCode CppHdrCode Value))
-> (VS (p CppSrcCode CppHdrCode Value),
MS (p CppSrcCode CppHdrCode Doc))
-> PairState MethodState p Value
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (VS (p CppSrcCode CppHdrCode Value),
MS (p CppSrcCode CppHdrCode Doc))
-> VS (p CppSrcCode CppHdrCode Value)
forall a b. (a, b) -> a
fst ((VS (p CppSrcCode CppHdrCode Value),
MS (p CppSrcCode CppHdrCode Doc))
-> PairState MethodState p Value)
-> [(VS (p CppSrcCode CppHdrCode Value),
MS (p CppSrcCode CppHdrCode Doc))]
-> [PairState MethodState p Value]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [(VS (p CppSrcCode CppHdrCode Value),
MS (p CppSrcCode CppHdrCode Doc))]
cs) ((VS (p CppSrcCode CppHdrCode Value),
MS (p CppSrcCode CppHdrCode Doc))
-> MS (p CppSrcCode CppHdrCode Doc)
forall a b. (a, b) -> b
snd ((VS (p CppSrcCode CppHdrCode Value),
MS (p CppSrcCode CppHdrCode Doc))
-> MS (p CppSrcCode CppHdrCode Doc))
-> [(VS (p CppSrcCode CppHdrCode Value),
MS (p CppSrcCode CppHdrCode Doc))]
-> [MS (p CppSrcCode CppHdrCode Doc)]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [(VS (p CppSrcCode CppHdrCode Value),
MS (p CppSrcCode CppHdrCode Doc))]
cs)
ifExists :: VS (p CppSrcCode CppHdrCode Value)
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode Statement)
ifExists VS (p CppSrcCode CppHdrCode Value)
v = (VS (CppSrcCode Value)
-> SrcState MethodState Doc
-> SrcState MethodState Doc
-> SrcState MethodState Statement)
-> (HdrState ValueState Value
-> HdrState MethodState Doc
-> HdrState MethodState Doc
-> HdrState MethodState Statement)
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c u d.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c -> SrcState u d)
-> (HdrState r a -> HdrState s b -> HdrState t c -> HdrState u d)
-> PairState u p a
-> PairState u p b
-> PairState u p c
-> PairState u p d
pair3 VS (CppSrcCode Value)
-> SrcState MethodState Doc
-> SrcState MethodState Doc
-> SrcState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(val :: k).
ControlStatement r bod stmt var val =>
VS (r val) -> MS (r bod) -> MS (r bod) -> MS (r stmt)
ifExists HdrState ValueState Value
-> HdrState MethodState Doc
-> HdrState MethodState Doc
-> HdrState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(val :: k).
ControlStatement r bod stmt var val =>
VS (r val) -> MS (r bod) -> MS (r bod) -> MS (r stmt)
ifExists (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Value)
v)
for :: MS (p CppSrcCode CppHdrCode Statement)
-> VS (p CppSrcCode CppHdrCode Value)
-> MS (p CppSrcCode CppHdrCode Statement)
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode Statement)
for MS (p CppSrcCode CppHdrCode Statement)
i VS (p CppSrcCode CppHdrCode Value)
initv = (SrcState MethodState Statement
-> VS (CppSrcCode Value)
-> SrcState MethodState Statement
-> SrcState MethodState Doc
-> SrcState MethodState Statement)
-> (HdrState MethodState Statement
-> HdrState ValueState Value
-> HdrState MethodState Statement
-> HdrState MethodState Doc
-> HdrState MethodState Statement)
-> MS (p CppSrcCode CppHdrCode Statement)
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode Statement)
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c u d v e.
Pair p =>
(SrcState r a
-> SrcState s b -> SrcState t c -> SrcState u d -> SrcState v e)
-> (HdrState r a
-> HdrState s b -> HdrState t c -> HdrState u d -> HdrState v e)
-> PairState v p a
-> PairState v p b
-> PairState v p c
-> PairState v p d
-> PairState v p e
pair4 SrcState MethodState Statement
-> VS (CppSrcCode Value)
-> SrcState MethodState Statement
-> SrcState MethodState Doc
-> SrcState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(val :: k).
ControlStatement r bod stmt var val =>
MS (r stmt)
-> VS (r val) -> MS (r stmt) -> MS (r bod) -> MS (r stmt)
for HdrState MethodState Statement
-> HdrState ValueState Value
-> HdrState MethodState Statement
-> HdrState MethodState Doc
-> HdrState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(val :: k).
ControlStatement r bod stmt var val =>
MS (r stmt)
-> VS (r val) -> MS (r stmt) -> MS (r bod) -> MS (r stmt)
for MS (p CppSrcCode CppHdrCode Statement)
i (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Value)
initv)
forRange :: VS (p CppSrcCode CppHdrCode Variable)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode Statement)
forRange VS (p CppSrcCode CppHdrCode Variable)
i VS (p CppSrcCode CppHdrCode Value)
initv VS (p CppSrcCode CppHdrCode Value)
finalv VS (p CppSrcCode CppHdrCode Value)
stepv = (SrcState ValueState Variable
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> SrcState MethodState Doc
-> SrcState MethodState Statement)
-> (HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState MethodState Doc
-> HdrState MethodState Statement)
-> PairState MethodState p Variable
-> PairState MethodState p Value
-> PairState MethodState p Value
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c u d v e w
f.
Pair p =>
(SrcState r a
-> SrcState s b
-> SrcState t c
-> SrcState u d
-> SrcState v e
-> SrcState w f)
-> (HdrState r a
-> HdrState s b
-> HdrState t c
-> HdrState u d
-> HdrState v e
-> HdrState w f)
-> PairState w p a
-> PairState w p b
-> PairState w p c
-> PairState w p d
-> PairState w p e
-> PairState w p f
pair5 SrcState ValueState Variable
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> SrcState MethodState Doc
-> SrcState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(val :: k).
ControlStatement r bod stmt var val =>
VS (r var)
-> VS (r val)
-> VS (r val)
-> VS (r val)
-> MS (r bod)
-> MS (r stmt)
forRange HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState MethodState Doc
-> HdrState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(val :: k).
ControlStatement r bod stmt var val =>
VS (r var)
-> VS (r val)
-> VS (r val)
-> VS (r val)
-> MS (r bod)
-> MS (r stmt)
forRange (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Variable)
i)
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Value)
initv) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Value)
finalv) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Value)
stepv)
forEach :: VS (p CppSrcCode CppHdrCode Variable)
-> VS (p CppSrcCode CppHdrCode Value)
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode Statement)
forEach VS (p CppSrcCode CppHdrCode Variable)
e' VS (p CppSrcCode CppHdrCode Value)
v MS (p CppSrcCode CppHdrCode Doc)
b = do
loop <- (SrcState ValueState Variable
-> VS (CppSrcCode Value)
-> SrcState MethodState Doc
-> SrcState MethodState Statement)
-> (HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState MethodState Doc
-> HdrState MethodState Statement)
-> PairState MethodState p Variable
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c u d.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c -> SrcState u d)
-> (HdrState r a -> HdrState s b -> HdrState t c -> HdrState u d)
-> PairState u p a
-> PairState u p b
-> PairState u p c
-> PairState u p d
pair3 SrcState ValueState Variable
-> VS (CppSrcCode Value)
-> SrcState MethodState Doc
-> SrcState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(val :: k).
ControlStatement r bod stmt var val =>
VS (r var) -> VS (r val) -> MS (r bod) -> MS (r stmt)
forEach HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState MethodState Doc
-> HdrState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(val :: k).
ControlStatement r bod stmt var val =>
VS (r var) -> VS (r val) -> MS (r bod) -> MS (r stmt)
forEach (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Variable)
e') (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Value)
v) MS (p CppSrcCode CppHdrCode Doc)
b
toState loop
while :: VS (p CppSrcCode CppHdrCode Value)
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode Statement)
while VS (p CppSrcCode CppHdrCode Value)
v = (VS (CppSrcCode Value)
-> SrcState MethodState Doc -> SrcState MethodState Statement)
-> (HdrState ValueState Value
-> HdrState MethodState Doc -> HdrState MethodState Statement)
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 VS (CppSrcCode Value)
-> SrcState MethodState Doc -> SrcState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(val :: k).
ControlStatement r bod stmt var val =>
VS (r val) -> MS (r bod) -> MS (r stmt)
while HdrState ValueState Value
-> HdrState MethodState Doc -> HdrState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(val :: k).
ControlStatement r bod stmt var val =>
VS (r val) -> MS (r bod) -> MS (r stmt)
while (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Value)
v)
tryCatch :: MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode Statement)
tryCatch = (SrcState MethodState Doc
-> SrcState MethodState Doc -> SrcState MethodState Statement)
-> (HdrState MethodState Doc
-> HdrState MethodState Doc -> HdrState MethodState Statement)
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 SrcState MethodState Doc
-> SrcState MethodState Doc -> SrcState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(val :: k).
ControlStatement r bod stmt var val =>
MS (r bod) -> MS (r bod) -> MS (r stmt)
tryCatch HdrState MethodState Doc
-> HdrState MethodState Doc -> HdrState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(val :: k).
ControlStatement r bod stmt var val =>
MS (r bod) -> MS (r bod) -> MS (r stmt)
tryCatch
assert :: VS (p CppSrcCode CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value)
-> MS (p CppSrcCode CppHdrCode Statement)
assert VS (p CppSrcCode CppHdrCode Value)
cond VS (p CppSrcCode CppHdrCode Value)
errMsg = (VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> SrcState MethodState Statement)
-> (HdrState ValueState Value
-> HdrState ValueState Value -> HdrState MethodState Statement)
-> PairState MethodState p Value
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> SrcState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(val :: k).
ControlStatement r bod stmt var val =>
VS (r val) -> VS (r val) -> MS (r stmt)
assert HdrState ValueState Value
-> HdrState ValueState Value -> HdrState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(val :: k).
ControlStatement r bod stmt var val =>
VS (r val) -> VS (r val) -> MS (r stmt)
assert (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Value)
cond) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Value)
errMsg)
instance (Pair p) => ObserverPattern (p CppSrcCode CppHdrCode) Statement TypeData where
notifyObservers :: VS (p CppSrcCode CppHdrCode FuncData)
-> VS (p CppSrcCode CppHdrCode TypeData)
-> MS (p CppSrcCode CppHdrCode Statement)
notifyObservers VS (p CppSrcCode CppHdrCode FuncData)
f VS (p CppSrcCode CppHdrCode TypeData)
t = (SrcState ValueState FuncData
-> State ValueState (CppSrcCode TypeData)
-> SrcState MethodState Statement)
-> (HdrState ValueState FuncData
-> State ValueState (CppHdrCode TypeData)
-> HdrState MethodState Statement)
-> PairState MethodState p FuncData
-> PairState MethodState p TypeData
-> MS (p CppSrcCode CppHdrCode Statement)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 SrcState ValueState FuncData
-> State ValueState (CppSrcCode TypeData)
-> SrcState MethodState Statement
forall (r :: * -> *) stmt typ.
ObserverPattern r stmt typ =>
VS (r FuncData) -> VS (r typ) -> MS (r stmt)
notifyObservers HdrState ValueState FuncData
-> State ValueState (CppHdrCode TypeData)
-> HdrState MethodState Statement
forall (r :: * -> *) stmt typ.
ObserverPattern r stmt typ =>
VS (r FuncData) -> VS (r typ) -> MS (r stmt)
notifyObservers
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode FuncData))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode FuncData)
-> PairState MethodState p FuncData
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) (p CppSrcCode CppHdrCode FuncData))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode FuncData) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode FuncData) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode FuncData)
f) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode TypeData))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode TypeData)
-> PairState MethodState p TypeData
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) (p CppSrcCode CppHdrCode TypeData))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode TypeData) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode TypeData) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode TypeData)
t)
instance (Pair p) => StrategyPattern (p CppSrcCode CppHdrCode) Body Block Variable Value where
runStrategy :: String
-> [(String, MS (p CppSrcCode CppHdrCode Doc))]
-> Maybe (VS (p CppSrcCode CppHdrCode Value))
-> Maybe (VS (p CppSrcCode CppHdrCode Variable))
-> MS (p CppSrcCode CppHdrCode Doc)
runStrategy String
l [(String, MS (p CppSrcCode CppHdrCode Doc))]
strats Maybe (VS (p CppSrcCode CppHdrCode Value))
rv Maybe (VS (p CppSrcCode CppHdrCode Variable))
av = ([SrcState MethodState Doc] -> SrcState MethodState Doc)
-> ([HdrState MethodState Doc] -> HdrState MethodState Doc)
-> [MS (p CppSrcCode CppHdrCode Doc)]
-> MS (p CppSrcCode CppHdrCode Doc)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
([SrcState r a] -> SrcState s b)
-> ([HdrState r a] -> HdrState s b)
-> [PairState s p a]
-> PairState s p b
pair1List
(\[SrcState MethodState Doc]
s -> String
-> [(String, SrcState MethodState Doc)]
-> Maybe (VS (CppSrcCode Value))
-> Maybe (SrcState ValueState Variable)
-> SrcState MethodState Doc
forall {k} (r :: k -> *) (bod :: k) (block :: k) (var :: k)
(val :: k).
StrategyPattern r bod block var val =>
String
-> [(String, MS (r bod))]
-> Maybe (VS (r val))
-> Maybe (VS (r var))
-> MS (r block)
runStrategy String
l ([String]
-> [SrcState MethodState Doc]
-> [(String, SrcState MethodState Doc)]
forall a b. [a] -> [b] -> [(a, b)]
zip ((String, MS (p CppSrcCode CppHdrCode Doc)) -> String
forall a b. (a, b) -> a
fst ((String, MS (p CppSrcCode CppHdrCode Doc)) -> String)
-> [(String, MS (p CppSrcCode CppHdrCode Doc))] -> [String]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [(String, MS (p CppSrcCode CppHdrCode Doc))]
strats) [SrcState MethodState Doc]
s) ((p CppSrcCode CppHdrCode Value -> CppSrcCode Value)
-> VS (p CppSrcCode CppHdrCode Value) -> VS (CppSrcCode Value)
forall a b s. (a -> b) -> State s a -> State s b
onStateValue p CppSrcCode CppHdrCode Value -> CppSrcCode Value
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst (VS (p CppSrcCode CppHdrCode Value) -> VS (CppSrcCode Value))
-> Maybe (VS (p CppSrcCode CppHdrCode Value))
-> Maybe (VS (CppSrcCode Value))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe (VS (p CppSrcCode CppHdrCode Value))
rv)
((p CppSrcCode CppHdrCode Variable -> CppSrcCode Variable)
-> VS (p CppSrcCode CppHdrCode Variable)
-> SrcState ValueState Variable
forall a b s. (a -> b) -> State s a -> State s b
onStateValue p CppSrcCode CppHdrCode Variable -> CppSrcCode Variable
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst (VS (p CppSrcCode CppHdrCode Variable)
-> SrcState ValueState Variable)
-> Maybe (VS (p CppSrcCode CppHdrCode Variable))
-> Maybe (SrcState ValueState Variable)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe (VS (p CppSrcCode CppHdrCode Variable))
av))
(\[HdrState MethodState Doc]
s -> String
-> [(String, HdrState MethodState Doc)]
-> Maybe (HdrState ValueState Value)
-> Maybe (HdrState ValueState Variable)
-> HdrState MethodState Doc
forall {k} (r :: k -> *) (bod :: k) (block :: k) (var :: k)
(val :: k).
StrategyPattern r bod block var val =>
String
-> [(String, MS (r bod))]
-> Maybe (VS (r val))
-> Maybe (VS (r var))
-> MS (r block)
runStrategy String
l ([String]
-> [HdrState MethodState Doc]
-> [(String, HdrState MethodState Doc)]
forall a b. [a] -> [b] -> [(a, b)]
zip ((String, MS (p CppSrcCode CppHdrCode Doc)) -> String
forall a b. (a, b) -> a
fst ((String, MS (p CppSrcCode CppHdrCode Doc)) -> String)
-> [(String, MS (p CppSrcCode CppHdrCode Doc))] -> [String]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [(String, MS (p CppSrcCode CppHdrCode Doc))]
strats) [HdrState MethodState Doc]
s) ((p CppSrcCode CppHdrCode Value -> CppHdrCode Value)
-> VS (p CppSrcCode CppHdrCode Value) -> HdrState ValueState Value
forall a b s. (a -> b) -> State s a -> State s b
onStateValue p CppSrcCode CppHdrCode Value -> CppHdrCode Value
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd (VS (p CppSrcCode CppHdrCode Value) -> HdrState ValueState Value)
-> Maybe (VS (p CppSrcCode CppHdrCode Value))
-> Maybe (HdrState ValueState Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe (VS (p CppSrcCode CppHdrCode Value))
rv)
((p CppSrcCode CppHdrCode Variable -> CppHdrCode Variable)
-> VS (p CppSrcCode CppHdrCode Variable)
-> HdrState ValueState Variable
forall a b s. (a -> b) -> State s a -> State s b
onStateValue p CppSrcCode CppHdrCode Variable -> CppHdrCode Variable
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd (VS (p CppSrcCode CppHdrCode Variable)
-> HdrState ValueState Variable)
-> Maybe (VS (p CppSrcCode CppHdrCode Variable))
-> Maybe (HdrState ValueState Variable)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe (VS (p CppSrcCode CppHdrCode Variable))
av)) ((String, MS (p CppSrcCode CppHdrCode Doc))
-> MS (p CppSrcCode CppHdrCode Doc)
forall a b. (a, b) -> b
snd ((String, MS (p CppSrcCode CppHdrCode Doc))
-> MS (p CppSrcCode CppHdrCode Doc))
-> [(String, MS (p CppSrcCode CppHdrCode Doc))]
-> [MS (p CppSrcCode CppHdrCode Doc)]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [(String, MS (p CppSrcCode CppHdrCode Doc))]
strats)
instance (Pair p) => VisibilitySym (p CppSrcCode CppHdrCode)
(Doc, VisibilityTag) where
private :: p CppSrcCode CppHdrCode (Doc, VisibilityTag)
private = CppSrcCode (Doc, VisibilityTag)
-> CppHdrCode (Doc, VisibilityTag)
-> p CppSrcCode CppHdrCode (Doc, VisibilityTag)
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair CppSrcCode (Doc, VisibilityTag)
forall {k} (r :: k -> *) (vis :: k). VisibilitySym r vis => r vis
private CppHdrCode (Doc, VisibilityTag)
forall {k} (r :: k -> *) (vis :: k). VisibilitySym r vis => r vis
private
public :: p CppSrcCode CppHdrCode (Doc, VisibilityTag)
public = CppSrcCode (Doc, VisibilityTag)
-> CppHdrCode (Doc, VisibilityTag)
-> p CppSrcCode CppHdrCode (Doc, VisibilityTag)
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair CppSrcCode (Doc, VisibilityTag)
forall {k} (r :: k -> *) (vis :: k). VisibilitySym r vis => r vis
public CppHdrCode (Doc, VisibilityTag)
forall {k} (r :: k -> *) (vis :: k). VisibilitySym r vis => r vis
public
instance (Pair p) => RenderVisibility (p CppSrcCode CppHdrCode)
(Doc, VisibilityTag) where
visibilityFromData :: VisibilityTag
-> Doc -> p CppSrcCode CppHdrCode (Doc, VisibilityTag)
visibilityFromData VisibilityTag
s Doc
d = CppSrcCode (Doc, VisibilityTag)
-> CppHdrCode (Doc, VisibilityTag)
-> p CppSrcCode CppHdrCode (Doc, VisibilityTag)
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair (VisibilityTag -> Doc -> CppSrcCode (Doc, VisibilityTag)
forall {k} (r :: k -> *) (vis :: k).
RenderVisibility r vis =>
VisibilityTag -> Doc -> r vis
visibilityFromData VisibilityTag
s Doc
d) (VisibilityTag -> Doc -> CppHdrCode (Doc, VisibilityTag)
forall {k} (r :: k -> *) (vis :: k).
RenderVisibility r vis =>
VisibilityTag -> Doc -> r vis
visibilityFromData VisibilityTag
s Doc
d)
instance (Pair p) => VisibilityElim (p CppSrcCode CppHdrCode)
(Doc, VisibilityTag) where
visibility :: p CppSrcCode CppHdrCode (Doc, VisibilityTag) -> Doc
visibility p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s = CppSrcCode (Doc, VisibilityTag) -> Doc
forall {k} (r :: k -> *) (vis :: k).
VisibilityElim r vis =>
r vis -> Doc
RC.visibility (CppSrcCode (Doc, VisibilityTag) -> Doc)
-> CppSrcCode (Doc, VisibilityTag) -> Doc
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> CppSrcCode (Doc, VisibilityTag)
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s
instance (Pair p) => MethodTypeSym (p CppSrcCode CppHdrCode) TypeData where
mType :: VS (p CppSrcCode CppHdrCode TypeData)
-> MS (p CppSrcCode CppHdrCode TypeData)
mType = (State ValueState (CppSrcCode TypeData)
-> SrcState MethodState TypeData)
-> (State ValueState (CppHdrCode TypeData)
-> HdrState MethodState TypeData)
-> MS (p CppSrcCode CppHdrCode TypeData)
-> MS (p CppSrcCode CppHdrCode TypeData)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 State ValueState (CppSrcCode TypeData)
-> SrcState MethodState TypeData
forall {k} (r :: k -> *) (typ :: k).
MethodTypeSym r typ =>
VS (r typ) -> MS (r typ)
mType State ValueState (CppHdrCode TypeData)
-> HdrState MethodState TypeData
forall {k} (r :: k -> *) (typ :: k).
MethodTypeSym r typ =>
VS (r typ) -> MS (r typ)
mType (MS (p CppSrcCode CppHdrCode TypeData)
-> MS (p CppSrcCode CppHdrCode TypeData))
-> (VS (p CppSrcCode CppHdrCode TypeData)
-> MS (p CppSrcCode CppHdrCode TypeData))
-> VS (p CppSrcCode CppHdrCode TypeData)
-> MS (p CppSrcCode CppHdrCode TypeData)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode TypeData))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode TypeData)
-> MS (p CppSrcCode CppHdrCode TypeData)
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) (p CppSrcCode CppHdrCode TypeData))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode TypeData) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode TypeData) MethodState
Lens' MethodState ValueState
lensMStoVS
instance (Pair p) => OOMethodTypeSym (p CppSrcCode CppHdrCode) TypeData where
construct :: String -> MS (p CppSrcCode CppHdrCode TypeData)
construct String
n = (CppSrcCode TypeData
-> CppHdrCode TypeData -> p CppSrcCode CppHdrCode TypeData)
-> SrcState MethodState TypeData
-> HdrState MethodState TypeData
-> MS (p CppSrcCode CppHdrCode TypeData)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode TypeData
-> CppHdrCode TypeData -> p CppSrcCode CppHdrCode TypeData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair (String -> SrcState MethodState TypeData
forall {k} (r :: k -> *) (typ :: k).
OOMethodTypeSym r typ =>
String -> MS (r typ)
construct String
n) (String -> HdrState MethodState TypeData
forall {k} (r :: k -> *) (typ :: k).
OOMethodTypeSym r typ =>
String -> MS (r typ)
construct String
n)
instance (Pair p) => ParameterSym (p CppSrcCode CppHdrCode) ParamData Variable where
param :: VS (p CppSrcCode CppHdrCode Variable)
-> MS (p CppSrcCode CppHdrCode ParamData)
param = (SrcState ValueState Variable -> SrcState MethodState ParamData)
-> (HdrState ValueState Variable -> HdrState MethodState ParamData)
-> PairState MethodState p Variable
-> MS (p CppSrcCode CppHdrCode ParamData)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 SrcState ValueState Variable -> SrcState MethodState ParamData
forall {k} (r :: k -> *) (param :: k) (var :: k).
ParameterSym r param var =>
VS (r var) -> MS (r param)
param HdrState ValueState Variable -> HdrState MethodState ParamData
forall {k} (r :: k -> *) (param :: k) (var :: k).
ParameterSym r param var =>
VS (r var) -> MS (r param)
param (PairState MethodState p Variable
-> MS (p CppSrcCode CppHdrCode ParamData))
-> (VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable)
-> VS (p CppSrcCode CppHdrCode Variable)
-> MS (p CppSrcCode CppHdrCode ParamData)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS
pointerParam :: VS (p CppSrcCode CppHdrCode Variable)
-> MS (p CppSrcCode CppHdrCode ParamData)
pointerParam = (SrcState ValueState Variable -> SrcState MethodState ParamData)
-> (HdrState ValueState Variable -> HdrState MethodState ParamData)
-> PairState MethodState p Variable
-> MS (p CppSrcCode CppHdrCode ParamData)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 SrcState ValueState Variable -> SrcState MethodState ParamData
forall {k} (r :: k -> *) (param :: k) (var :: k).
ParameterSym r param var =>
VS (r var) -> MS (r param)
pointerParam HdrState ValueState Variable -> HdrState MethodState ParamData
forall {k} (r :: k -> *) (param :: k) (var :: k).
ParameterSym r param var =>
VS (r var) -> MS (r param)
pointerParam (PairState MethodState p Variable
-> MS (p CppSrcCode CppHdrCode ParamData))
-> (VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable)
-> VS (p CppSrcCode CppHdrCode Variable)
-> MS (p CppSrcCode CppHdrCode ParamData)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS
instance (Pair p) => RenderParam (p CppSrcCode CppHdrCode) ParamData Variable where
paramFromData :: VS (p CppSrcCode CppHdrCode Variable)
-> Doc -> MS (p CppSrcCode CppHdrCode ParamData)
paramFromData VS (p CppSrcCode CppHdrCode Variable)
v' Doc
d = (SrcState ValueState Variable -> SrcState MethodState ParamData)
-> (HdrState ValueState Variable -> HdrState MethodState ParamData)
-> PairState MethodState p Variable
-> MS (p CppSrcCode CppHdrCode ParamData)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 (SrcState ValueState Variable
-> Doc -> SrcState MethodState ParamData
forall {k} (r :: k -> *) (param :: k) (var :: k).
RenderParam r param var =>
VS (r var) -> Doc -> MS (r param)
`paramFromData` Doc
d) (HdrState ValueState Variable
-> Doc -> HdrState MethodState ParamData
forall {k} (r :: k -> *) (param :: k) (var :: k).
RenderParam r param var =>
VS (r var) -> Doc -> MS (r param)
`paramFromData` Doc
d) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode Variable)
v')
instance (Pair p) => ParamElim (p CppSrcCode CppHdrCode) ParamData TypeData where
parameterName :: p CppSrcCode CppHdrCode ParamData -> String
parameterName p CppSrcCode CppHdrCode ParamData
p = CppSrcCode ParamData -> String
forall {k} (r :: k -> *) (param :: k) (typ :: k).
ParamElim r param typ =>
r param -> String
parameterName (CppSrcCode ParamData -> String) -> CppSrcCode ParamData -> String
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode ParamData -> CppSrcCode ParamData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode ParamData
p
parameterType :: p CppSrcCode CppHdrCode ParamData
-> p CppSrcCode CppHdrCode TypeData
parameterType p CppSrcCode CppHdrCode ParamData
p = CppSrcCode TypeData
-> CppHdrCode TypeData -> p CppSrcCode CppHdrCode TypeData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair (CppSrcCode ParamData -> CppSrcCode TypeData
forall {k} (r :: k -> *) (param :: k) (typ :: k).
ParamElim r param typ =>
r param -> r typ
parameterType (CppSrcCode ParamData -> CppSrcCode TypeData)
-> CppSrcCode ParamData -> CppSrcCode TypeData
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode ParamData -> CppSrcCode ParamData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode ParamData
p) (CppHdrCode ParamData -> CppHdrCode TypeData
forall {k} (r :: k -> *) (param :: k) (typ :: k).
ParamElim r param typ =>
r param -> r typ
parameterType (CppHdrCode ParamData -> CppHdrCode TypeData)
-> CppHdrCode ParamData -> CppHdrCode TypeData
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode ParamData -> CppHdrCode ParamData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd p CppSrcCode CppHdrCode ParamData
p)
parameter :: p CppSrcCode CppHdrCode ParamData -> Doc
parameter p CppSrcCode CppHdrCode ParamData
p = CppSrcCode ParamData -> Doc
forall {k} (r :: k -> *) (param :: k) (typ :: k).
ParamElim r param typ =>
r param -> Doc
RC.parameter (CppSrcCode ParamData -> Doc) -> CppSrcCode ParamData -> Doc
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode ParamData -> CppSrcCode ParamData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode ParamData
p
instance (Pair p) => MethodSym (p CppSrcCode CppHdrCode) MethodData (Doc, VisibilityTag) ParamData Body Variable TypeData where
docMain :: MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode MethodData)
docMain = (SrcState MethodState Doc -> SrcState MethodState MethodData)
-> (HdrState MethodState Doc -> HdrState MethodState MethodData)
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode MethodData)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 SrcState MethodState Doc -> SrcState MethodState MethodData
forall {k} (r :: k -> *) (mthd :: k) (vis :: k) (param :: k)
(bod :: k) (var :: k) (typ :: k).
MethodSym r mthd vis param bod var typ =>
MS (r bod) -> MS (r mthd)
docMain HdrState MethodState Doc -> HdrState MethodState MethodData
forall {k} (r :: k -> *) (mthd :: k) (vis :: k) (param :: k)
(bod :: k) (var :: k) (typ :: k).
MethodSym r mthd vis param bod var typ =>
MS (r bod) -> MS (r mthd)
docMain
function :: String
-> p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> VS (p CppSrcCode CppHdrCode TypeData)
-> [MS (p CppSrcCode CppHdrCode ParamData)]
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode MethodData)
function String
n p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s VS (p CppSrcCode CppHdrCode TypeData)
t = (State ValueState (CppSrcCode TypeData)
-> [SrcState MethodState ParamData]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData)
-> (State ValueState (CppHdrCode TypeData)
-> [HdrState MethodState ParamData]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData)
-> PairState MethodState p TypeData
-> [MS (p CppSrcCode CppHdrCode ParamData)]
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode MethodData)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c u d.
Pair p =>
(SrcState r a -> [SrcState s b] -> SrcState t c -> SrcState u d)
-> (HdrState r a -> [HdrState s b] -> HdrState t c -> HdrState u d)
-> PairState u p a
-> [PairState u p b]
-> PairState u p c
-> PairState u p d
pairValListVal
(String
-> CppSrcCode (Doc, VisibilityTag)
-> State ValueState (CppSrcCode TypeData)
-> [SrcState MethodState ParamData]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData
forall {k} (r :: k -> *) (mthd :: k) (vis :: k) (param :: k)
(bod :: k) (var :: k) (typ :: k).
MethodSym r mthd vis param bod var typ =>
String
-> r vis
-> VS (r typ)
-> [MS (r param)]
-> MS (r bod)
-> MS (r mthd)
function String
n (p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> CppSrcCode (Doc, VisibilityTag)
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s)) (String
-> CppHdrCode (Doc, VisibilityTag)
-> State ValueState (CppHdrCode TypeData)
-> [HdrState MethodState ParamData]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData
forall {k} (r :: k -> *) (mthd :: k) (vis :: k) (param :: k)
(bod :: k) (var :: k) (typ :: k).
MethodSym r mthd vis param bod var typ =>
String
-> r vis
-> VS (r typ)
-> [MS (r param)]
-> MS (r bod)
-> MS (r mthd)
function String
n (p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode (Doc, VisibilityTag)
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s))
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode TypeData))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode TypeData)
-> PairState MethodState p TypeData
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) (p CppSrcCode CppHdrCode TypeData))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode TypeData) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode TypeData) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode TypeData)
t)
mainFunction :: MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode MethodData)
mainFunction = (SrcState MethodState Doc -> SrcState MethodState MethodData)
-> (HdrState MethodState Doc -> HdrState MethodState MethodData)
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode MethodData)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 SrcState MethodState Doc -> SrcState MethodState MethodData
forall {k} (r :: k -> *) (mthd :: k) (vis :: k) (param :: k)
(bod :: k) (var :: k) (typ :: k).
MethodSym r mthd vis param bod var typ =>
MS (r bod) -> MS (r mthd)
mainFunction HdrState MethodState Doc -> HdrState MethodState MethodData
forall {k} (r :: k -> *) (mthd :: k) (vis :: k) (param :: k)
(bod :: k) (var :: k) (typ :: k).
MethodSym r mthd vis param bod var typ =>
MS (r bod) -> MS (r mthd)
mainFunction
docFunc :: String
-> [String]
-> Maybe String
-> MS (p CppSrcCode CppHdrCode MethodData)
-> MS (p CppSrcCode CppHdrCode MethodData)
docFunc String
desc [String]
pComms Maybe String
rComm = (SrcState MethodState MethodData
-> SrcState MethodState MethodData)
-> (HdrState MethodState MethodData
-> HdrState MethodState MethodData)
-> MS (p CppSrcCode CppHdrCode MethodData)
-> MS (p CppSrcCode CppHdrCode MethodData)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 (String
-> [String]
-> Maybe String
-> SrcState MethodState MethodData
-> SrcState MethodState MethodData
forall {k} (r :: k -> *) (mthd :: k) (vis :: k) (param :: k)
(bod :: k) (var :: k) (typ :: k).
MethodSym r mthd vis param bod var typ =>
String -> [String] -> Maybe String -> MS (r mthd) -> MS (r mthd)
docFunc String
desc [String]
pComms Maybe String
rComm)
(String
-> [String]
-> Maybe String
-> HdrState MethodState MethodData
-> HdrState MethodState MethodData
forall {k} (r :: k -> *) (mthd :: k) (vis :: k) (param :: k)
(bod :: k) (var :: k) (typ :: k).
MethodSym r mthd vis param bod var typ =>
String -> [String] -> Maybe String -> MS (r mthd) -> MS (r mthd)
docFunc String
desc [String]
pComms Maybe String
rComm)
inOutFunc :: String
-> p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> InOutFunc (p CppSrcCode CppHdrCode) MethodData Doc Variable
inOutFunc String
n p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s [VS (p CppSrcCode CppHdrCode Variable)]
is [VS (p CppSrcCode CppHdrCode Variable)]
os [VS (p CppSrcCode CppHdrCode Variable)]
bs = ([SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData)
-> ([HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData)
-> [PairState MethodState p Variable]
-> [PairState MethodState p Variable]
-> [PairState MethodState p Variable]
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode MethodData)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c u d v e.
Pair p =>
([SrcState r a]
-> [SrcState s b]
-> [SrcState t c]
-> SrcState u d
-> SrcState v e)
-> ([HdrState r a]
-> [HdrState s b]
-> [HdrState t c]
-> HdrState u d
-> HdrState v e)
-> [PairState v p a]
-> [PairState v p b]
-> [PairState v p c]
-> PairState v p d
-> PairState v p e
pair3Lists1Val
(String
-> CppSrcCode (Doc, VisibilityTag)
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData
forall {k} (r :: k -> *) (mthd :: k) (vis :: k) (param :: k)
(bod :: k) (var :: k) (typ :: k).
MethodSym r mthd vis param bod var typ =>
String -> r vis -> InOutFunc r mthd bod var
inOutFunc String
n (p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> CppSrcCode (Doc, VisibilityTag)
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s)) (String
-> CppHdrCode (Doc, VisibilityTag)
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData
forall {k} (r :: k -> *) (mthd :: k) (vis :: k) (param :: k)
(bod :: k) (var :: k) (typ :: k).
MethodSym r mthd vis param bod var typ =>
String -> r vis -> InOutFunc r mthd bod var
inOutFunc String
n (p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode (Doc, VisibilityTag)
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s))
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS (VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable)
-> [VS (p CppSrcCode CppHdrCode Variable)]
-> [PairState MethodState p Variable]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [VS (p CppSrcCode CppHdrCode Variable)]
is) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS (VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable)
-> [VS (p CppSrcCode CppHdrCode Variable)]
-> [PairState MethodState p Variable]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [VS (p CppSrcCode CppHdrCode Variable)]
os)
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS (VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable)
-> [VS (p CppSrcCode CppHdrCode Variable)]
-> [PairState MethodState p Variable]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [VS (p CppSrcCode CppHdrCode Variable)]
bs)
docInOutFunc :: String
-> p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> DocInOutFunc (p CppSrcCode CppHdrCode) MethodData Doc Variable
docInOutFunc String
n p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s String
desc [(String, VS (p CppSrcCode CppHdrCode Variable))]
is [(String, VS (p CppSrcCode CppHdrCode Variable))]
os [(String, VS (p CppSrcCode CppHdrCode Variable))]
bs = ([SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData)
-> ([HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData)
-> [PairState MethodState p Variable]
-> [PairState MethodState p Variable]
-> [PairState MethodState p Variable]
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode MethodData)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c u d v e.
Pair p =>
([SrcState r a]
-> [SrcState s b]
-> [SrcState t c]
-> SrcState u d
-> SrcState v e)
-> ([HdrState r a]
-> [HdrState s b]
-> [HdrState t c]
-> HdrState u d
-> HdrState v e)
-> [PairState v p a]
-> [PairState v p b]
-> [PairState v p c]
-> PairState v p d
-> PairState v p e
pair3Lists1Val
(\[SrcState ValueState Variable]
ins [SrcState ValueState Variable]
outs [SrcState ValueState Variable]
both -> String
-> CppSrcCode (Doc, VisibilityTag)
-> DocInOutFunc CppSrcCode MethodData Doc Variable
forall {k} (r :: k -> *) (mthd :: k) (vis :: k) (param :: k)
(bod :: k) (var :: k) (typ :: k).
MethodSym r mthd vis param bod var typ =>
String -> r vis -> DocInOutFunc r mthd bod var
docInOutFunc String
n (p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> CppSrcCode (Doc, VisibilityTag)
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s) String
desc ([String]
-> [SrcState ValueState Variable]
-> [(String, SrcState ValueState Variable)]
forall a b. [a] -> [b] -> [(a, b)]
zip ((String, VS (p CppSrcCode CppHdrCode Variable)) -> String
forall a b. (a, b) -> a
fst
((String, VS (p CppSrcCode CppHdrCode Variable)) -> String)
-> [(String, VS (p CppSrcCode CppHdrCode Variable))] -> [String]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [(String, VS (p CppSrcCode CppHdrCode Variable))]
is) [SrcState ValueState Variable]
ins) ([String]
-> [SrcState ValueState Variable]
-> [(String, SrcState ValueState Variable)]
forall a b. [a] -> [b] -> [(a, b)]
zip ((String, VS (p CppSrcCode CppHdrCode Variable)) -> String
forall a b. (a, b) -> a
fst ((String, VS (p CppSrcCode CppHdrCode Variable)) -> String)
-> [(String, VS (p CppSrcCode CppHdrCode Variable))] -> [String]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [(String, VS (p CppSrcCode CppHdrCode Variable))]
os) [SrcState ValueState Variable]
outs) ([String]
-> [SrcState ValueState Variable]
-> [(String, SrcState ValueState Variable)]
forall a b. [a] -> [b] -> [(a, b)]
zip ((String, VS (p CppSrcCode CppHdrCode Variable)) -> String
forall a b. (a, b) -> a
fst ((String, VS (p CppSrcCode CppHdrCode Variable)) -> String)
-> [(String, VS (p CppSrcCode CppHdrCode Variable))] -> [String]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [(String, VS (p CppSrcCode CppHdrCode Variable))]
bs) [SrcState ValueState Variable]
both))
(\[HdrState ValueState Variable]
ins [HdrState ValueState Variable]
outs [HdrState ValueState Variable]
both -> String
-> CppHdrCode (Doc, VisibilityTag)
-> DocInOutFunc CppHdrCode MethodData Doc Variable
forall {k} (r :: k -> *) (mthd :: k) (vis :: k) (param :: k)
(bod :: k) (var :: k) (typ :: k).
MethodSym r mthd vis param bod var typ =>
String -> r vis -> DocInOutFunc r mthd bod var
docInOutFunc String
n (p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode (Doc, VisibilityTag)
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s) String
desc ([String]
-> [HdrState ValueState Variable]
-> [(String, HdrState ValueState Variable)]
forall a b. [a] -> [b] -> [(a, b)]
zip ((String, VS (p CppSrcCode CppHdrCode Variable)) -> String
forall a b. (a, b) -> a
fst
((String, VS (p CppSrcCode CppHdrCode Variable)) -> String)
-> [(String, VS (p CppSrcCode CppHdrCode Variable))] -> [String]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [(String, VS (p CppSrcCode CppHdrCode Variable))]
is) [HdrState ValueState Variable]
ins) ([String]
-> [HdrState ValueState Variable]
-> [(String, HdrState ValueState Variable)]
forall a b. [a] -> [b] -> [(a, b)]
zip ((String, VS (p CppSrcCode CppHdrCode Variable)) -> String
forall a b. (a, b) -> a
fst ((String, VS (p CppSrcCode CppHdrCode Variable)) -> String)
-> [(String, VS (p CppSrcCode CppHdrCode Variable))] -> [String]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [(String, VS (p CppSrcCode CppHdrCode Variable))]
os) [HdrState ValueState Variable]
outs) ([String]
-> [HdrState ValueState Variable]
-> [(String, HdrState ValueState Variable)]
forall a b. [a] -> [b] -> [(a, b)]
zip ((String, VS (p CppSrcCode CppHdrCode Variable)) -> String
forall a b. (a, b) -> a
fst ((String, VS (p CppSrcCode CppHdrCode Variable)) -> String)
-> [(String, VS (p CppSrcCode CppHdrCode Variable))] -> [String]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [(String, VS (p CppSrcCode CppHdrCode Variable))]
bs) [HdrState ValueState Variable]
both))
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS (VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable)
-> ((String, VS (p CppSrcCode CppHdrCode Variable))
-> VS (p CppSrcCode CppHdrCode Variable))
-> (String, VS (p CppSrcCode CppHdrCode Variable))
-> PairState MethodState p Variable
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (String, VS (p CppSrcCode CppHdrCode Variable))
-> VS (p CppSrcCode CppHdrCode Variable)
forall a b. (a, b) -> b
snd ((String, VS (p CppSrcCode CppHdrCode Variable))
-> PairState MethodState p Variable)
-> [(String, VS (p CppSrcCode CppHdrCode Variable))]
-> [PairState MethodState p Variable]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [(String, VS (p CppSrcCode CppHdrCode Variable))]
is) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS (VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable)
-> ((String, VS (p CppSrcCode CppHdrCode Variable))
-> VS (p CppSrcCode CppHdrCode Variable))
-> (String, VS (p CppSrcCode CppHdrCode Variable))
-> PairState MethodState p Variable
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (String, VS (p CppSrcCode CppHdrCode Variable))
-> VS (p CppSrcCode CppHdrCode Variable)
forall a b. (a, b) -> b
snd ((String, VS (p CppSrcCode CppHdrCode Variable))
-> PairState MethodState p Variable)
-> [(String, VS (p CppSrcCode CppHdrCode Variable))]
-> [PairState MethodState p Variable]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [(String, VS (p CppSrcCode CppHdrCode Variable))]
os)
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS (VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable)
-> ((String, VS (p CppSrcCode CppHdrCode Variable))
-> VS (p CppSrcCode CppHdrCode Variable))
-> (String, VS (p CppSrcCode CppHdrCode Variable))
-> PairState MethodState p Variable
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (String, VS (p CppSrcCode CppHdrCode Variable))
-> VS (p CppSrcCode CppHdrCode Variable)
forall a b. (a, b) -> b
snd ((String, VS (p CppSrcCode CppHdrCode Variable))
-> PairState MethodState p Variable)
-> [(String, VS (p CppSrcCode CppHdrCode Variable))]
-> [PairState MethodState p Variable]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [(String, VS (p CppSrcCode CppHdrCode Variable))]
bs)
instance (Pair p) => OOMethodSym (p CppSrcCode CppHdrCode) MethodData AttachmentData (Doc, VisibilityTag) ParamData Body Variable Value TypeData where
method :: String
-> p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> p CppSrcCode CppHdrCode AttachmentData
-> VS (p CppSrcCode CppHdrCode TypeData)
-> [MS (p CppSrcCode CppHdrCode ParamData)]
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode MethodData)
method String
n p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s p CppSrcCode CppHdrCode AttachmentData
p VS (p CppSrcCode CppHdrCode TypeData)
t = (State ValueState (CppSrcCode TypeData)
-> [SrcState MethodState ParamData]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData)
-> (State ValueState (CppHdrCode TypeData)
-> [HdrState MethodState ParamData]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData)
-> PairState MethodState p TypeData
-> [MS (p CppSrcCode CppHdrCode ParamData)]
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode MethodData)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c u d.
Pair p =>
(SrcState r a -> [SrcState s b] -> SrcState t c -> SrcState u d)
-> (HdrState r a -> [HdrState s b] -> HdrState t c -> HdrState u d)
-> PairState u p a
-> [PairState u p b]
-> PairState u p c
-> PairState u p d
pairValListVal
(String
-> CppSrcCode (Doc, VisibilityTag)
-> CppSrcCode AttachmentData
-> State ValueState (CppSrcCode TypeData)
-> [SrcState MethodState ParamData]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData
forall {k} (r :: k -> *) (mthd :: k) (attch :: k) (vis :: k)
(param :: k) (bod :: k) (var :: k) (val :: k) (typ :: k).
OOMethodSym r mthd attch vis param bod var val typ =>
String
-> r vis
-> r attch
-> VS (r typ)
-> [MS (r param)]
-> MS (r bod)
-> MS (r mthd)
method String
n (p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> CppSrcCode (Doc, VisibilityTag)
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s) (p CppSrcCode CppHdrCode AttachmentData -> CppSrcCode AttachmentData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode AttachmentData
p)) (String
-> CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode AttachmentData
-> State ValueState (CppHdrCode TypeData)
-> [HdrState MethodState ParamData]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData
forall {k} (r :: k -> *) (mthd :: k) (attch :: k) (vis :: k)
(param :: k) (bod :: k) (var :: k) (val :: k) (typ :: k).
OOMethodSym r mthd attch vis param bod var val typ =>
String
-> r vis
-> r attch
-> VS (r typ)
-> [MS (r param)]
-> MS (r bod)
-> MS (r mthd)
method String
n (p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode (Doc, VisibilityTag)
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s) (p CppSrcCode CppHdrCode AttachmentData -> CppHdrCode AttachmentData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd p CppSrcCode CppHdrCode AttachmentData
p))
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode TypeData))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode TypeData)
-> PairState MethodState p TypeData
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) (p CppSrcCode CppHdrCode TypeData))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode TypeData) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode TypeData) MethodState
Lens' MethodState ValueState
lensMStoVS VS (p CppSrcCode CppHdrCode TypeData)
t)
getMethod :: VS (p CppSrcCode CppHdrCode Variable)
-> MS (p CppSrcCode CppHdrCode MethodData)
getMethod = (SrcState ValueState Variable -> SrcState MethodState MethodData)
-> (HdrState ValueState Variable
-> HdrState MethodState MethodData)
-> PairState MethodState p Variable
-> MS (p CppSrcCode CppHdrCode MethodData)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 SrcState ValueState Variable -> SrcState MethodState MethodData
forall {k} (r :: k -> *) (mthd :: k) (attch :: k) (vis :: k)
(param :: k) (bod :: k) (var :: k) (val :: k) (typ :: k).
OOMethodSym r mthd attch vis param bod var val typ =>
VS (r var) -> MS (r mthd)
getMethod HdrState ValueState Variable -> HdrState MethodState MethodData
forall {k} (r :: k -> *) (mthd :: k) (attch :: k) (vis :: k)
(param :: k) (bod :: k) (var :: k) (val :: k) (typ :: k).
OOMethodSym r mthd attch vis param bod var val typ =>
VS (r var) -> MS (r mthd)
getMethod (PairState MethodState p Variable
-> MS (p CppSrcCode CppHdrCode MethodData))
-> (VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable)
-> VS (p CppSrcCode CppHdrCode Variable)
-> MS (p CppSrcCode CppHdrCode MethodData)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS
setMethod :: VS (p CppSrcCode CppHdrCode Variable)
-> MS (p CppSrcCode CppHdrCode MethodData)
setMethod = (SrcState ValueState Variable -> SrcState MethodState MethodData)
-> (HdrState ValueState Variable
-> HdrState MethodState MethodData)
-> PairState MethodState p Variable
-> MS (p CppSrcCode CppHdrCode MethodData)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 SrcState ValueState Variable -> SrcState MethodState MethodData
forall {k} (r :: k -> *) (mthd :: k) (attch :: k) (vis :: k)
(param :: k) (bod :: k) (var :: k) (val :: k) (typ :: k).
OOMethodSym r mthd attch vis param bod var val typ =>
VS (r var) -> MS (r mthd)
setMethod HdrState ValueState Variable -> HdrState MethodState MethodData
forall {k} (r :: k -> *) (mthd :: k) (attch :: k) (vis :: k)
(param :: k) (bod :: k) (var :: k) (val :: k) (typ :: k).
OOMethodSym r mthd attch vis param bod var val typ =>
VS (r var) -> MS (r mthd)
setMethod (PairState MethodState p Variable
-> MS (p CppSrcCode CppHdrCode MethodData))
-> (VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable)
-> VS (p CppSrcCode CppHdrCode Variable)
-> MS (p CppSrcCode CppHdrCode MethodData)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS
constructor :: [MS (p CppSrcCode CppHdrCode ParamData)]
-> Initializers (p CppSrcCode CppHdrCode) Variable Value
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode MethodData)
constructor [MS (p CppSrcCode CppHdrCode ParamData)]
ps Initializers (p CppSrcCode CppHdrCode) Variable Value
is = ([SrcState MethodState ParamData]
-> [SrcState ValueState Variable]
-> [VS (CppSrcCode Value)]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData)
-> ([HdrState MethodState ParamData]
-> [HdrState ValueState Variable]
-> [HdrState ValueState Value]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData)
-> [MS (p CppSrcCode CppHdrCode ParamData)]
-> [PairState MethodState p Variable]
-> [PairState MethodState p Value]
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode MethodData)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c u d v e.
Pair p =>
([SrcState r a]
-> [SrcState s b]
-> [SrcState t c]
-> SrcState u d
-> SrcState v e)
-> ([HdrState r a]
-> [HdrState s b]
-> [HdrState t c]
-> HdrState u d
-> HdrState v e)
-> [PairState v p a]
-> [PairState v p b]
-> [PairState v p c]
-> PairState v p d
-> PairState v p e
pair3Lists1Val
(\[SrcState MethodState ParamData]
pms [SrcState ValueState Variable]
ivars [VS (CppSrcCode Value)]
ivals -> [SrcState MethodState ParamData]
-> [(SrcState ValueState Variable, VS (CppSrcCode Value))]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData
forall {k} (r :: k -> *) (mthd :: k) (attch :: k) (vis :: k)
(param :: k) (bod :: k) (var :: k) (val :: k) (typ :: k).
OOMethodSym r mthd attch vis param bod var val typ =>
[MS (r param)]
-> Initializers r var val -> MS (r bod) -> MS (r mthd)
constructor [SrcState MethodState ParamData]
pms ([SrcState ValueState Variable]
-> [VS (CppSrcCode Value)]
-> [(SrcState ValueState Variable, VS (CppSrcCode Value))]
forall a b. [a] -> [b] -> [(a, b)]
zip [SrcState ValueState Variable]
ivars [VS (CppSrcCode Value)]
ivals))
(\[HdrState MethodState ParamData]
pms [HdrState ValueState Variable]
ivars [HdrState ValueState Value]
ivals -> [HdrState MethodState ParamData]
-> [(HdrState ValueState Variable, HdrState ValueState Value)]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData
forall {k} (r :: k -> *) (mthd :: k) (attch :: k) (vis :: k)
(param :: k) (bod :: k) (var :: k) (val :: k) (typ :: k).
OOMethodSym r mthd attch vis param bod var val typ =>
[MS (r param)]
-> Initializers r var val -> MS (r bod) -> MS (r mthd)
constructor [HdrState MethodState ParamData]
pms ([HdrState ValueState Variable]
-> [HdrState ValueState Value]
-> [(HdrState ValueState Variable, HdrState ValueState Value)]
forall a b. [a] -> [b] -> [(a, b)]
zip [HdrState ValueState Variable]
ivars [HdrState ValueState Value]
ivals))
[MS (p CppSrcCode CppHdrCode ParamData)]
ps (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS (VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable)
-> ((VS (p CppSrcCode CppHdrCode Variable),
VS (p CppSrcCode CppHdrCode Value))
-> VS (p CppSrcCode CppHdrCode Variable))
-> (VS (p CppSrcCode CppHdrCode Variable),
VS (p CppSrcCode CppHdrCode Value))
-> PairState MethodState p Variable
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (VS (p CppSrcCode CppHdrCode Variable),
VS (p CppSrcCode CppHdrCode Value))
-> VS (p CppSrcCode CppHdrCode Variable)
forall a b. (a, b) -> a
fst ((VS (p CppSrcCode CppHdrCode Variable),
VS (p CppSrcCode CppHdrCode Value))
-> PairState MethodState p Variable)
-> Initializers (p CppSrcCode CppHdrCode) Variable Value
-> [PairState MethodState p Variable]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Initializers (p CppSrcCode CppHdrCode) Variable Value
is) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value
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) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS (VS (p CppSrcCode CppHdrCode Value)
-> PairState MethodState p Value)
-> ((VS (p CppSrcCode CppHdrCode Variable),
VS (p CppSrcCode CppHdrCode Value))
-> VS (p CppSrcCode CppHdrCode Value))
-> (VS (p CppSrcCode CppHdrCode Variable),
VS (p CppSrcCode CppHdrCode Value))
-> PairState MethodState p Value
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (VS (p CppSrcCode CppHdrCode Variable),
VS (p CppSrcCode CppHdrCode Value))
-> VS (p CppSrcCode CppHdrCode Value)
forall a b. (a, b) -> b
snd ((VS (p CppSrcCode CppHdrCode Variable),
VS (p CppSrcCode CppHdrCode Value))
-> PairState MethodState p Value)
-> Initializers (p CppSrcCode CppHdrCode) Variable Value
-> [PairState MethodState p Value]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Initializers (p CppSrcCode CppHdrCode) Variable Value
is)
inOutMethod :: String
-> p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> p CppSrcCode CppHdrCode AttachmentData
-> InOutFunc (p CppSrcCode CppHdrCode) MethodData Doc Variable
inOutMethod String
n p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s p CppSrcCode CppHdrCode AttachmentData
p [VS (p CppSrcCode CppHdrCode Variable)]
is [VS (p CppSrcCode CppHdrCode Variable)]
os [VS (p CppSrcCode CppHdrCode Variable)]
bs = ([SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData)
-> ([HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData)
-> [PairState MethodState p Variable]
-> [PairState MethodState p Variable]
-> [PairState MethodState p Variable]
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode MethodData)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c u d v e.
Pair p =>
([SrcState r a]
-> [SrcState s b]
-> [SrcState t c]
-> SrcState u d
-> SrcState v e)
-> ([HdrState r a]
-> [HdrState s b]
-> [HdrState t c]
-> HdrState u d
-> HdrState v e)
-> [PairState v p a]
-> [PairState v p b]
-> [PairState v p c]
-> PairState v p d
-> PairState v p e
pair3Lists1Val
(String
-> CppSrcCode (Doc, VisibilityTag)
-> CppSrcCode AttachmentData
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData
forall {k} (r :: k -> *) (mthd :: k) (attch :: k) (vis :: k)
(param :: k) (bod :: k) (var :: k) (val :: k) (typ :: k).
OOMethodSym r mthd attch vis param bod var val typ =>
String -> r vis -> r attch -> InOutFunc r mthd bod var
inOutMethod String
n (p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> CppSrcCode (Doc, VisibilityTag)
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s) (p CppSrcCode CppHdrCode AttachmentData -> CppSrcCode AttachmentData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode AttachmentData
p)) (String
-> CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode AttachmentData
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData
forall {k} (r :: k -> *) (mthd :: k) (attch :: k) (vis :: k)
(param :: k) (bod :: k) (var :: k) (val :: k) (typ :: k).
OOMethodSym r mthd attch vis param bod var val typ =>
String -> r vis -> r attch -> InOutFunc r mthd bod var
inOutMethod String
n (p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode (Doc, VisibilityTag)
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s) (p CppSrcCode CppHdrCode AttachmentData -> CppHdrCode AttachmentData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd p CppSrcCode CppHdrCode AttachmentData
p))
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS (VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable)
-> [VS (p CppSrcCode CppHdrCode Variable)]
-> [PairState MethodState p Variable]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [VS (p CppSrcCode CppHdrCode Variable)]
is) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS (VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable)
-> [VS (p CppSrcCode CppHdrCode Variable)]
-> [PairState MethodState p Variable]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [VS (p CppSrcCode CppHdrCode Variable)]
os)
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS (VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable)
-> [VS (p CppSrcCode CppHdrCode Variable)]
-> [PairState MethodState p Variable]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [VS (p CppSrcCode CppHdrCode Variable)]
bs)
docInOutMethod :: String
-> p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> p CppSrcCode CppHdrCode AttachmentData
-> DocInOutFunc (p CppSrcCode CppHdrCode) MethodData Doc Variable
docInOutMethod String
n p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s p CppSrcCode CppHdrCode AttachmentData
p String
desc [(String, VS (p CppSrcCode CppHdrCode Variable))]
is [(String, VS (p CppSrcCode CppHdrCode Variable))]
os [(String, VS (p CppSrcCode CppHdrCode Variable))]
bs = ([SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData)
-> ([HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData)
-> [PairState MethodState p Variable]
-> [PairState MethodState p Variable]
-> [PairState MethodState p Variable]
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode MethodData)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c u d v e.
Pair p =>
([SrcState r a]
-> [SrcState s b]
-> [SrcState t c]
-> SrcState u d
-> SrcState v e)
-> ([HdrState r a]
-> [HdrState s b]
-> [HdrState t c]
-> HdrState u d
-> HdrState v e)
-> [PairState v p a]
-> [PairState v p b]
-> [PairState v p c]
-> PairState v p d
-> PairState v p e
pair3Lists1Val
(\[SrcState ValueState Variable]
ins [SrcState ValueState Variable]
outs [SrcState ValueState Variable]
both -> String
-> CppSrcCode (Doc, VisibilityTag)
-> CppSrcCode AttachmentData
-> DocInOutFunc CppSrcCode MethodData Doc Variable
forall {k} (r :: k -> *) (mthd :: k) (attch :: k) (vis :: k)
(param :: k) (bod :: k) (var :: k) (val :: k) (typ :: k).
OOMethodSym r mthd attch vis param bod var val typ =>
String -> r vis -> r attch -> DocInOutFunc r mthd bod var
docInOutMethod String
n (p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> CppSrcCode (Doc, VisibilityTag)
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s) (p CppSrcCode CppHdrCode AttachmentData -> CppSrcCode AttachmentData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode AttachmentData
p) String
desc ([String]
-> [SrcState ValueState Variable]
-> [(String, SrcState ValueState Variable)]
forall a b. [a] -> [b] -> [(a, b)]
zip ((String, VS (p CppSrcCode CppHdrCode Variable)) -> String
forall a b. (a, b) -> a
fst
((String, VS (p CppSrcCode CppHdrCode Variable)) -> String)
-> [(String, VS (p CppSrcCode CppHdrCode Variable))] -> [String]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [(String, VS (p CppSrcCode CppHdrCode Variable))]
is) [SrcState ValueState Variable]
ins) ([String]
-> [SrcState ValueState Variable]
-> [(String, SrcState ValueState Variable)]
forall a b. [a] -> [b] -> [(a, b)]
zip ((String, VS (p CppSrcCode CppHdrCode Variable)) -> String
forall a b. (a, b) -> a
fst ((String, VS (p CppSrcCode CppHdrCode Variable)) -> String)
-> [(String, VS (p CppSrcCode CppHdrCode Variable))] -> [String]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [(String, VS (p CppSrcCode CppHdrCode Variable))]
os) [SrcState ValueState Variable]
outs) ([String]
-> [SrcState ValueState Variable]
-> [(String, SrcState ValueState Variable)]
forall a b. [a] -> [b] -> [(a, b)]
zip ((String, VS (p CppSrcCode CppHdrCode Variable)) -> String
forall a b. (a, b) -> a
fst ((String, VS (p CppSrcCode CppHdrCode Variable)) -> String)
-> [(String, VS (p CppSrcCode CppHdrCode Variable))] -> [String]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [(String, VS (p CppSrcCode CppHdrCode Variable))]
bs) [SrcState ValueState Variable]
both))
(\[HdrState ValueState Variable]
ins [HdrState ValueState Variable]
outs [HdrState ValueState Variable]
both -> String
-> CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode AttachmentData
-> DocInOutFunc CppHdrCode MethodData Doc Variable
forall {k} (r :: k -> *) (mthd :: k) (attch :: k) (vis :: k)
(param :: k) (bod :: k) (var :: k) (val :: k) (typ :: k).
OOMethodSym r mthd attch vis param bod var val typ =>
String -> r vis -> r attch -> DocInOutFunc r mthd bod var
docInOutMethod String
n (p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode (Doc, VisibilityTag)
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s) (p CppSrcCode CppHdrCode AttachmentData -> CppHdrCode AttachmentData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd p CppSrcCode CppHdrCode AttachmentData
p) String
desc ([String]
-> [HdrState ValueState Variable]
-> [(String, HdrState ValueState Variable)]
forall a b. [a] -> [b] -> [(a, b)]
zip ((String, VS (p CppSrcCode CppHdrCode Variable)) -> String
forall a b. (a, b) -> a
fst
((String, VS (p CppSrcCode CppHdrCode Variable)) -> String)
-> [(String, VS (p CppSrcCode CppHdrCode Variable))] -> [String]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [(String, VS (p CppSrcCode CppHdrCode Variable))]
is) [HdrState ValueState Variable]
ins) ([String]
-> [HdrState ValueState Variable]
-> [(String, HdrState ValueState Variable)]
forall a b. [a] -> [b] -> [(a, b)]
zip ((String, VS (p CppSrcCode CppHdrCode Variable)) -> String
forall a b. (a, b) -> a
fst ((String, VS (p CppSrcCode CppHdrCode Variable)) -> String)
-> [(String, VS (p CppSrcCode CppHdrCode Variable))] -> [String]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [(String, VS (p CppSrcCode CppHdrCode Variable))]
os) [HdrState ValueState Variable]
outs) ([String]
-> [HdrState ValueState Variable]
-> [(String, HdrState ValueState Variable)]
forall a b. [a] -> [b] -> [(a, b)]
zip ((String, VS (p CppSrcCode CppHdrCode Variable)) -> String
forall a b. (a, b) -> a
fst ((String, VS (p CppSrcCode CppHdrCode Variable)) -> String)
-> [(String, VS (p CppSrcCode CppHdrCode Variable))] -> [String]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [(String, VS (p CppSrcCode CppHdrCode Variable))]
bs) [HdrState ValueState Variable]
both))
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS (VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable)
-> ((String, VS (p CppSrcCode CppHdrCode Variable))
-> VS (p CppSrcCode CppHdrCode Variable))
-> (String, VS (p CppSrcCode CppHdrCode Variable))
-> PairState MethodState p Variable
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (String, VS (p CppSrcCode CppHdrCode Variable))
-> VS (p CppSrcCode CppHdrCode Variable)
forall a b. (a, b) -> b
snd ((String, VS (p CppSrcCode CppHdrCode Variable))
-> PairState MethodState p Variable)
-> [(String, VS (p CppSrcCode CppHdrCode Variable))]
-> [PairState MethodState p Variable]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [(String, VS (p CppSrcCode CppHdrCode Variable))]
is) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS (VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable)
-> ((String, VS (p CppSrcCode CppHdrCode Variable))
-> VS (p CppSrcCode CppHdrCode Variable))
-> (String, VS (p CppSrcCode CppHdrCode Variable))
-> PairState MethodState p Variable
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (String, VS (p CppSrcCode CppHdrCode Variable))
-> VS (p CppSrcCode CppHdrCode Variable)
forall a b. (a, b) -> b
snd ((String, VS (p CppSrcCode CppHdrCode Variable))
-> PairState MethodState p Variable)
-> [(String, VS (p CppSrcCode CppHdrCode Variable))]
-> [PairState MethodState p Variable]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [(String, VS (p CppSrcCode CppHdrCode Variable))]
os)
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable
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) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS (VS (p CppSrcCode CppHdrCode Variable)
-> PairState MethodState p Variable)
-> ((String, VS (p CppSrcCode CppHdrCode Variable))
-> VS (p CppSrcCode CppHdrCode Variable))
-> (String, VS (p CppSrcCode CppHdrCode Variable))
-> PairState MethodState p Variable
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (String, VS (p CppSrcCode CppHdrCode Variable))
-> VS (p CppSrcCode CppHdrCode Variable)
forall a b. (a, b) -> b
snd ((String, VS (p CppSrcCode CppHdrCode Variable))
-> PairState MethodState p Variable)
-> [(String, VS (p CppSrcCode CppHdrCode Variable))]
-> [PairState MethodState p Variable]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [(String, VS (p CppSrcCode CppHdrCode Variable))]
bs)
instance (Pair p) => RenderMethod (p CppSrcCode CppHdrCode) MethodData where
commentedFunc :: MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode MethodData)
-> MS (p CppSrcCode CppHdrCode MethodData)
commentedFunc = (SrcState MethodState Doc
-> SrcState MethodState MethodData
-> SrcState MethodState MethodData)
-> (HdrState MethodState Doc
-> HdrState MethodState MethodData
-> HdrState MethodState MethodData)
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode MethodData)
-> MS (p CppSrcCode CppHdrCode MethodData)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 SrcState MethodState Doc
-> SrcState MethodState MethodData
-> SrcState MethodState MethodData
forall (r :: * -> *) mthd.
RenderMethod r mthd =>
MS (r Doc) -> MS (r mthd) -> MS (r mthd)
commentedFunc HdrState MethodState Doc
-> HdrState MethodState MethodData
-> HdrState MethodState MethodData
forall (r :: * -> *) mthd.
RenderMethod r mthd =>
MS (r Doc) -> MS (r mthd) -> MS (r mthd)
commentedFunc
mthdFromData :: VisibilityTag -> Doc -> MS (p CppSrcCode CppHdrCode MethodData)
mthdFromData VisibilityTag
s Doc
d = (CppSrcCode MethodData
-> CppHdrCode MethodData -> p CppSrcCode CppHdrCode MethodData)
-> SrcState MethodState MethodData
-> HdrState MethodState MethodData
-> MS (p CppSrcCode CppHdrCode MethodData)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode MethodData
-> CppHdrCode MethodData -> p CppSrcCode CppHdrCode MethodData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair (VisibilityTag -> Doc -> SrcState MethodState MethodData
forall (r :: * -> *) mthd.
RenderMethod r mthd =>
VisibilityTag -> Doc -> MS (r mthd)
mthdFromData VisibilityTag
s Doc
d) (VisibilityTag -> Doc -> HdrState MethodState MethodData
forall (r :: * -> *) mthd.
RenderMethod r mthd =>
VisibilityTag -> Doc -> MS (r mthd)
mthdFromData VisibilityTag
s Doc
d)
instance (Pair p) => OORenderMethod (p CppSrcCode CppHdrCode) MethodData AttachmentData (Doc, VisibilityTag) ParamData Body TypeData where
intMethod :: Bool
-> String
-> p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> p CppSrcCode CppHdrCode AttachmentData
-> MS (p CppSrcCode CppHdrCode TypeData)
-> [MS (p CppSrcCode CppHdrCode ParamData)]
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode MethodData)
intMethod Bool
m String
n p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s p CppSrcCode CppHdrCode AttachmentData
p = (SrcState MethodState TypeData
-> [SrcState MethodState ParamData]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData)
-> (HdrState MethodState TypeData
-> [HdrState MethodState ParamData]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData)
-> MS (p CppSrcCode CppHdrCode TypeData)
-> [MS (p CppSrcCode CppHdrCode ParamData)]
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode MethodData)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c u d.
Pair p =>
(SrcState r a -> [SrcState s b] -> SrcState t c -> SrcState u d)
-> (HdrState r a -> [HdrState s b] -> HdrState t c -> HdrState u d)
-> PairState u p a
-> [PairState u p b]
-> PairState u p c
-> PairState u p d
pairValListVal
(Bool
-> String
-> CppSrcCode (Doc, VisibilityTag)
-> CppSrcCode AttachmentData
-> SrcState MethodState TypeData
-> [SrcState MethodState ParamData]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData
forall {k} (r :: k -> *) (mthd :: k) (attch :: k) (vis :: k)
(param :: k) (bod :: k) (typ :: k).
OORenderMethod r mthd attch vis param bod typ =>
Bool
-> String
-> r vis
-> r attch
-> MS (r typ)
-> [MS (r param)]
-> MS (r bod)
-> MS (r mthd)
intMethod Bool
m String
n (p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> CppSrcCode (Doc, VisibilityTag)
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s) (p CppSrcCode CppHdrCode AttachmentData -> CppSrcCode AttachmentData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode AttachmentData
p)) (Bool
-> String
-> CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode AttachmentData
-> HdrState MethodState TypeData
-> [HdrState MethodState ParamData]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData
forall {k} (r :: k -> *) (mthd :: k) (attch :: k) (vis :: k)
(param :: k) (bod :: k) (typ :: k).
OORenderMethod r mthd attch vis param bod typ =>
Bool
-> String
-> r vis
-> r attch
-> MS (r typ)
-> [MS (r param)]
-> MS (r bod)
-> MS (r mthd)
intMethod Bool
m String
n (p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode (Doc, VisibilityTag)
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s) (p CppSrcCode CppHdrCode AttachmentData -> CppHdrCode AttachmentData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd p CppSrcCode CppHdrCode AttachmentData
p))
intFunc :: Bool
-> String
-> p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> p CppSrcCode CppHdrCode AttachmentData
-> MS (p CppSrcCode CppHdrCode TypeData)
-> [MS (p CppSrcCode CppHdrCode ParamData)]
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode MethodData)
intFunc Bool
m String
n p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s p CppSrcCode CppHdrCode AttachmentData
p = (SrcState MethodState TypeData
-> [SrcState MethodState ParamData]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData)
-> (HdrState MethodState TypeData
-> [HdrState MethodState ParamData]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData)
-> MS (p CppSrcCode CppHdrCode TypeData)
-> [MS (p CppSrcCode CppHdrCode ParamData)]
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode MethodData)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c u d.
Pair p =>
(SrcState r a -> [SrcState s b] -> SrcState t c -> SrcState u d)
-> (HdrState r a -> [HdrState s b] -> HdrState t c -> HdrState u d)
-> PairState u p a
-> [PairState u p b]
-> PairState u p c
-> PairState u p d
pairValListVal
(Bool
-> String
-> CppSrcCode (Doc, VisibilityTag)
-> CppSrcCode AttachmentData
-> SrcState MethodState TypeData
-> [SrcState MethodState ParamData]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData
forall {k} (r :: k -> *) (mthd :: k) (attch :: k) (vis :: k)
(param :: k) (bod :: k) (typ :: k).
OORenderMethod r mthd attch vis param bod typ =>
Bool
-> String
-> r vis
-> r attch
-> MS (r typ)
-> [MS (r param)]
-> MS (r bod)
-> MS (r mthd)
intFunc Bool
m String
n (p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> CppSrcCode (Doc, VisibilityTag)
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s) (p CppSrcCode CppHdrCode AttachmentData -> CppSrcCode AttachmentData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode AttachmentData
p)) (Bool
-> String
-> CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode AttachmentData
-> HdrState MethodState TypeData
-> [HdrState MethodState ParamData]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData
forall {k} (r :: k -> *) (mthd :: k) (attch :: k) (vis :: k)
(param :: k) (bod :: k) (typ :: k).
OORenderMethod r mthd attch vis param bod typ =>
Bool
-> String
-> r vis
-> r attch
-> MS (r typ)
-> [MS (r param)]
-> MS (r bod)
-> MS (r mthd)
intFunc Bool
m String
n (p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode (Doc, VisibilityTag)
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s) (p CppSrcCode CppHdrCode AttachmentData -> CppHdrCode AttachmentData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd p CppSrcCode CppHdrCode AttachmentData
p))
destructor :: forall stvr.
[CSStateVar (p CppSrcCode CppHdrCode) stvr]
-> MS (p CppSrcCode CppHdrCode MethodData)
destructor = String
-> [CSStateVar (p CppSrcCode CppHdrCode) stvr]
-> MS (p CppSrcCode CppHdrCode MethodData)
forall a. HasCallStack => String -> a
error (String
-> [CSStateVar (p CppSrcCode CppHdrCode) stvr]
-> MS (p CppSrcCode CppHdrCode MethodData))
-> String
-> [CSStateVar (p CppSrcCode CppHdrCode) stvr]
-> MS (p CppSrcCode CppHdrCode MethodData)
forall a b. (a -> b) -> a -> b
$ String -> String
CP.destructorError String
cppName
instance (Pair p) => MethodElim (p CppSrcCode CppHdrCode) MethodData where
method :: p CppSrcCode CppHdrCode MethodData -> Doc
method p CppSrcCode CppHdrCode MethodData
m = CppSrcCode MethodData -> Doc
forall {k} (r :: k -> *) (mthd :: k).
MethodElim r mthd =>
r mthd -> Doc
RC.method (CppSrcCode MethodData -> Doc) -> CppSrcCode MethodData -> Doc
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode MethodData -> CppSrcCode MethodData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode MethodData
m
instance (Pair p) => StateVarSym (p CppSrcCode CppHdrCode) StateVarData AttachmentData (Doc, VisibilityTag) Variable Value where
stateVar :: p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> p CppSrcCode CppHdrCode AttachmentData
-> VS (p CppSrcCode CppHdrCode Variable)
-> CSStateVar (p CppSrcCode CppHdrCode) StateVarData
stateVar p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s p CppSrcCode CppHdrCode AttachmentData
p = (SrcState ValueState Variable -> SrcState ClassState StateVarData)
-> (HdrState ValueState Variable
-> HdrState ClassState StateVarData)
-> PairState ClassState p Variable
-> CSStateVar (p CppSrcCode CppHdrCode) StateVarData
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 (CppSrcCode (Doc, VisibilityTag)
-> CppSrcCode AttachmentData
-> SrcState ValueState Variable
-> SrcState ClassState StateVarData
forall {k} (r :: k -> *) (stvr :: k) (attch :: k) (vis :: k)
(var :: k) (val :: k).
StateVarSym r stvr attch vis var val =>
r vis -> r attch -> VS (r var) -> CSStateVar r stvr
stateVar (p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> CppSrcCode (Doc, VisibilityTag)
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s) (p CppSrcCode CppHdrCode AttachmentData -> CppSrcCode AttachmentData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode AttachmentData
p)) (CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode AttachmentData
-> HdrState ValueState Variable
-> HdrState ClassState StateVarData
forall {k} (r :: k -> *) (stvr :: k) (attch :: k) (vis :: k)
(var :: k) (val :: k).
StateVarSym r stvr attch vis var val =>
r vis -> r attch -> VS (r var) -> CSStateVar r stvr
stateVar (p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode (Doc, VisibilityTag)
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s) (p CppSrcCode CppHdrCode AttachmentData -> CppHdrCode AttachmentData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd p CppSrcCode CppHdrCode AttachmentData
p))
(PairState ClassState p Variable
-> CSStateVar (p CppSrcCode CppHdrCode) StateVarData)
-> (VS (p CppSrcCode CppHdrCode Variable)
-> PairState ClassState p Variable)
-> VS (p CppSrcCode CppHdrCode Variable)
-> CSStateVar (p CppSrcCode CppHdrCode) StateVarData
forall b c a. (b -> c) -> (a -> b) -> a -> c
. LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
ClassState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState ClassState p Variable
forall c.
LensLike'
(Zoomed (StateT ValueState Identity) c) ClassState ValueState
-> StateT ValueState Identity c -> StateT ClassState 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) (p CppSrcCode CppHdrCode Variable))
ClassState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> ClassState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ClassState
Lens' ClassState ValueState
lensCStoVS
stateVarDef :: p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> p CppSrcCode CppHdrCode AttachmentData
-> VS (p CppSrcCode CppHdrCode Variable)
-> VS (p CppSrcCode CppHdrCode Value)
-> CSStateVar (p CppSrcCode CppHdrCode) StateVarData
stateVarDef p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s p CppSrcCode CppHdrCode AttachmentData
p VS (p CppSrcCode CppHdrCode Variable)
vr VS (p CppSrcCode CppHdrCode Value)
vl = (SrcState ValueState Variable
-> VS (CppSrcCode Value) -> SrcState ClassState StateVarData)
-> (HdrState ValueState Variable
-> HdrState ValueState Value -> HdrState ClassState StateVarData)
-> PairState ClassState p Variable
-> PairState ClassState p Value
-> CSStateVar (p CppSrcCode CppHdrCode) StateVarData
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2
(CppSrcCode (Doc, VisibilityTag)
-> CppSrcCode AttachmentData
-> SrcState ValueState Variable
-> VS (CppSrcCode Value)
-> SrcState ClassState StateVarData
forall {k} (r :: k -> *) (stvr :: k) (attch :: k) (vis :: k)
(var :: k) (val :: k).
StateVarSym r stvr attch vis var val =>
r vis -> r attch -> VS (r var) -> VS (r val) -> CSStateVar r stvr
stateVarDef (p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> CppSrcCode (Doc, VisibilityTag)
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s) (p CppSrcCode CppHdrCode AttachmentData -> CppSrcCode AttachmentData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode AttachmentData
p))
(CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode AttachmentData
-> HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState ClassState StateVarData
forall {k} (r :: k -> *) (stvr :: k) (attch :: k) (vis :: k)
(var :: k) (val :: k).
StateVarSym r stvr attch vis var val =>
r vis -> r attch -> VS (r var) -> VS (r val) -> CSStateVar r stvr
stateVarDef (p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode (Doc, VisibilityTag)
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s) (p CppSrcCode CppHdrCode AttachmentData -> CppHdrCode AttachmentData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd p CppSrcCode CppHdrCode AttachmentData
p)) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
ClassState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState ClassState p Variable
forall c.
LensLike'
(Zoomed (StateT ValueState Identity) c) ClassState ValueState
-> StateT ValueState Identity c -> StateT ClassState 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) (p CppSrcCode CppHdrCode Variable))
ClassState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> ClassState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ClassState
Lens' ClassState ValueState
lensCStoVS VS (p CppSrcCode CppHdrCode Variable)
vr) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
ClassState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState ClassState p Value
forall c.
LensLike'
(Zoomed (StateT ValueState Identity) c) ClassState ValueState
-> StateT ValueState Identity c -> StateT ClassState 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) (p CppSrcCode CppHdrCode Value))
ClassState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> ClassState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ClassState
Lens' ClassState ValueState
lensCStoVS VS (p CppSrcCode CppHdrCode Value)
vl)
constVar :: p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> VS (p CppSrcCode CppHdrCode Variable)
-> VS (p CppSrcCode CppHdrCode Value)
-> CSStateVar (p CppSrcCode CppHdrCode) StateVarData
constVar p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s VS (p CppSrcCode CppHdrCode Variable)
vr VS (p CppSrcCode CppHdrCode Value)
vl = (SrcState ValueState Variable
-> VS (CppSrcCode Value) -> SrcState ClassState StateVarData)
-> (HdrState ValueState Variable
-> HdrState ValueState Value -> HdrState ClassState StateVarData)
-> PairState ClassState p Variable
-> PairState ClassState p Value
-> CSStateVar (p CppSrcCode CppHdrCode) StateVarData
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 (CppSrcCode (Doc, VisibilityTag)
-> SrcState ValueState Variable
-> VS (CppSrcCode Value)
-> SrcState ClassState StateVarData
forall {k} (r :: k -> *) (stvr :: k) (attch :: k) (vis :: k)
(var :: k) (val :: k).
StateVarSym r stvr attch vis var val =>
r vis -> VS (r var) -> VS (r val) -> CSStateVar r stvr
constVar (p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> CppSrcCode (Doc, VisibilityTag)
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s)) (CppHdrCode (Doc, VisibilityTag)
-> HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState ClassState StateVarData
forall {k} (r :: k -> *) (stvr :: k) (attch :: k) (vis :: k)
(var :: k) (val :: k).
StateVarSym r stvr attch vis var val =>
r vis -> VS (r var) -> VS (r val) -> CSStateVar r stvr
constVar (p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode (Doc, VisibilityTag)
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s))
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
ClassState
ValueState
-> VS (p CppSrcCode CppHdrCode Variable)
-> PairState ClassState p Variable
forall c.
LensLike'
(Zoomed (StateT ValueState Identity) c) ClassState ValueState
-> StateT ValueState Identity c -> StateT ClassState 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) (p CppSrcCode CppHdrCode Variable))
ClassState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ValueState)
-> ClassState
-> Focusing Identity (p CppSrcCode CppHdrCode Variable) ClassState
Lens' ClassState ValueState
lensCStoVS VS (p CppSrcCode CppHdrCode Variable)
vr) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
ClassState
ValueState
-> VS (p CppSrcCode CppHdrCode Value)
-> PairState ClassState p Value
forall c.
LensLike'
(Zoomed (StateT ValueState Identity) c) ClassState ValueState
-> StateT ValueState Identity c -> StateT ClassState 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) (p CppSrcCode CppHdrCode Value))
ClassState
ValueState
(ValueState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ValueState)
-> ClassState
-> Focusing Identity (p CppSrcCode CppHdrCode Value) ClassState
Lens' ClassState ValueState
lensCStoVS VS (p CppSrcCode CppHdrCode Value)
vl)
instance (Pair p) => StateVarElim (p CppSrcCode CppHdrCode) StateVarData where
stateVar :: p CppSrcCode CppHdrCode StateVarData -> Doc
stateVar p CppSrcCode CppHdrCode StateVarData
v = CppSrcCode StateVarData -> Doc
forall {k} (r :: k -> *) (stvr :: k).
StateVarElim r stvr =>
r stvr -> Doc
RC.stateVar (CppSrcCode StateVarData -> Doc) -> CppSrcCode StateVarData -> Doc
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode StateVarData -> CppSrcCode StateVarData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode StateVarData
v
instance (Pair p) => ClassSym (p CppSrcCode CppHdrCode) Class StateVarData MethodData where
buildClass :: Maybe String
-> [CSStateVar (p CppSrcCode CppHdrCode) StateVarData]
-> [MS (p CppSrcCode CppHdrCode MethodData)]
-> [MS (p CppSrcCode CppHdrCode MethodData)]
-> CS (p CppSrcCode CppHdrCode Doc)
buildClass Maybe String
p [CSStateVar (p CppSrcCode CppHdrCode) StateVarData]
vs [MS (p CppSrcCode CppHdrCode MethodData)]
cs [MS (p CppSrcCode CppHdrCode MethodData)]
fs = do
n <- LensLike'
(Zoomed (StateT FileState Identity) String) ClassState FileState
-> StateT FileState Identity String
-> StateT ClassState Identity String
forall c.
LensLike'
(Zoomed (StateT FileState Identity) c) ClassState FileState
-> StateT FileState Identity c -> StateT ClassState 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) ClassState FileState
(FileState -> Focusing Identity String FileState)
-> ClassState -> Focusing Identity String ClassState
Lens' ClassState FileState
lensCStoFS StateT FileState Identity String
getModuleName
modify (setClassName n)
pair3Lists (buildClass p) (buildClass p) vs (zoom lensCStoMS <$> cs)
(zoom lensCStoMS <$> fs)
extraClass :: String
-> Maybe String
-> [CSStateVar (p CppSrcCode CppHdrCode) StateVarData]
-> [MS (p CppSrcCode CppHdrCode MethodData)]
-> [MS (p CppSrcCode CppHdrCode MethodData)]
-> CS (p CppSrcCode CppHdrCode Doc)
extraClass String
n Maybe String
p [CSStateVar (p CppSrcCode CppHdrCode) StateVarData]
vs [MS (p CppSrcCode CppHdrCode MethodData)]
cs [MS (p CppSrcCode CppHdrCode MethodData)]
fs = (ClassState -> ClassState) -> StateT ClassState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (String -> ClassState -> ClassState
setClassName String
n) StateT ClassState Identity ()
-> CS (p CppSrcCode CppHdrCode Doc)
-> CS (p CppSrcCode CppHdrCode Doc)
forall a b.
StateT ClassState Identity a
-> StateT ClassState Identity b -> StateT ClassState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ([SrcState ClassState StateVarData]
-> [SrcState MethodState MethodData]
-> [SrcState MethodState MethodData]
-> SrcState ClassState Doc)
-> ([HdrState ClassState StateVarData]
-> [HdrState MethodState MethodData]
-> [HdrState MethodState MethodData]
-> HdrState ClassState Doc)
-> [CSStateVar (p CppSrcCode CppHdrCode) StateVarData]
-> [PairState ClassState p MethodData]
-> [PairState ClassState p MethodData]
-> CS (p CppSrcCode CppHdrCode Doc)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c u d.
Pair p =>
([SrcState r a]
-> [SrcState s b] -> [SrcState t c] -> SrcState u d)
-> ([HdrState r a]
-> [HdrState s b] -> [HdrState t c] -> HdrState u d)
-> [PairState u p a]
-> [PairState u p b]
-> [PairState u p c]
-> PairState u p d
pair3Lists
(String
-> Maybe String
-> [SrcState ClassState StateVarData]
-> [SrcState MethodState MethodData]
-> [SrcState MethodState MethodData]
-> SrcState ClassState Doc
forall {k} (r :: k -> *) (cls :: k) (stvr :: k) (mthd :: k).
ClassSym r cls stvr mthd =>
String
-> Maybe String
-> [CSStateVar r stvr]
-> [MS (r mthd)]
-> [MS (r mthd)]
-> CS (r cls)
extraClass String
n Maybe String
p) (String
-> Maybe String
-> [HdrState ClassState StateVarData]
-> [HdrState MethodState MethodData]
-> [HdrState MethodState MethodData]
-> HdrState ClassState Doc
forall {k} (r :: k -> *) (cls :: k) (stvr :: k) (mthd :: k).
ClassSym r cls stvr mthd =>
String
-> Maybe String
-> [CSStateVar r stvr]
-> [MS (r mthd)]
-> [MS (r mthd)]
-> CS (r cls)
extraClass String
n Maybe String
p)
[CSStateVar (p CppSrcCode CppHdrCode) StateVarData]
vs (LensLike'
(Zoomed
(StateT MethodState Identity) (p CppSrcCode CppHdrCode MethodData))
ClassState
MethodState
-> MS (p CppSrcCode CppHdrCode MethodData)
-> PairState ClassState p MethodData
forall c.
LensLike'
(Zoomed (StateT MethodState Identity) c) ClassState MethodState
-> StateT MethodState Identity c -> StateT ClassState 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 MethodState Identity) (p CppSrcCode CppHdrCode MethodData))
ClassState
MethodState
(MethodState
-> Focusing
Identity (p CppSrcCode CppHdrCode MethodData) MethodState)
-> ClassState
-> Focusing
Identity (p CppSrcCode CppHdrCode MethodData) ClassState
Lens' ClassState MethodState
lensCStoMS (MS (p CppSrcCode CppHdrCode MethodData)
-> PairState ClassState p MethodData)
-> [MS (p CppSrcCode CppHdrCode MethodData)]
-> [PairState ClassState p MethodData]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [MS (p CppSrcCode CppHdrCode MethodData)]
cs) (LensLike'
(Zoomed
(StateT MethodState Identity) (p CppSrcCode CppHdrCode MethodData))
ClassState
MethodState
-> MS (p CppSrcCode CppHdrCode MethodData)
-> PairState ClassState p MethodData
forall c.
LensLike'
(Zoomed (StateT MethodState Identity) c) ClassState MethodState
-> StateT MethodState Identity c -> StateT ClassState 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 MethodState Identity) (p CppSrcCode CppHdrCode MethodData))
ClassState
MethodState
(MethodState
-> Focusing
Identity (p CppSrcCode CppHdrCode MethodData) MethodState)
-> ClassState
-> Focusing
Identity (p CppSrcCode CppHdrCode MethodData) ClassState
Lens' ClassState MethodState
lensCStoMS (MS (p CppSrcCode CppHdrCode MethodData)
-> PairState ClassState p MethodData)
-> [MS (p CppSrcCode CppHdrCode MethodData)]
-> [PairState ClassState p MethodData]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [MS (p CppSrcCode CppHdrCode MethodData)]
fs)
implementingClass :: String
-> [String]
-> [CSStateVar (p CppSrcCode CppHdrCode) StateVarData]
-> [MS (p CppSrcCode CppHdrCode MethodData)]
-> [MS (p CppSrcCode CppHdrCode MethodData)]
-> CS (p CppSrcCode CppHdrCode Doc)
implementingClass String
n [String]
is [CSStateVar (p CppSrcCode CppHdrCode) StateVarData]
vs [MS (p CppSrcCode CppHdrCode MethodData)]
cs [MS (p CppSrcCode CppHdrCode MethodData)]
fs = (ClassState -> ClassState) -> StateT ClassState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (String -> ClassState -> ClassState
setClassName String
n) StateT ClassState Identity ()
-> CS (p CppSrcCode CppHdrCode Doc)
-> CS (p CppSrcCode CppHdrCode Doc)
forall a b.
StateT ClassState Identity a
-> StateT ClassState Identity b -> StateT ClassState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ([SrcState ClassState StateVarData]
-> [SrcState MethodState MethodData]
-> [SrcState MethodState MethodData]
-> SrcState ClassState Doc)
-> ([HdrState ClassState StateVarData]
-> [HdrState MethodState MethodData]
-> [HdrState MethodState MethodData]
-> HdrState ClassState Doc)
-> [CSStateVar (p CppSrcCode CppHdrCode) StateVarData]
-> [PairState ClassState p MethodData]
-> [PairState ClassState p MethodData]
-> CS (p CppSrcCode CppHdrCode Doc)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c u d.
Pair p =>
([SrcState r a]
-> [SrcState s b] -> [SrcState t c] -> SrcState u d)
-> ([HdrState r a]
-> [HdrState s b] -> [HdrState t c] -> HdrState u d)
-> [PairState u p a]
-> [PairState u p b]
-> [PairState u p c]
-> PairState u p d
pair3Lists
(String
-> [String]
-> [SrcState ClassState StateVarData]
-> [SrcState MethodState MethodData]
-> [SrcState MethodState MethodData]
-> SrcState ClassState Doc
forall {k} (r :: k -> *) (cls :: k) (stvr :: k) (mthd :: k).
ClassSym r cls stvr mthd =>
String
-> [String]
-> [CSStateVar r stvr]
-> [MS (r mthd)]
-> [MS (r mthd)]
-> CS (r cls)
implementingClass String
n [String]
is) (String
-> [String]
-> [HdrState ClassState StateVarData]
-> [HdrState MethodState MethodData]
-> [HdrState MethodState MethodData]
-> HdrState ClassState Doc
forall {k} (r :: k -> *) (cls :: k) (stvr :: k) (mthd :: k).
ClassSym r cls stvr mthd =>
String
-> [String]
-> [CSStateVar r stvr]
-> [MS (r mthd)]
-> [MS (r mthd)]
-> CS (r cls)
implementingClass String
n [String]
is)
[CSStateVar (p CppSrcCode CppHdrCode) StateVarData]
vs (LensLike'
(Zoomed
(StateT MethodState Identity) (p CppSrcCode CppHdrCode MethodData))
ClassState
MethodState
-> MS (p CppSrcCode CppHdrCode MethodData)
-> PairState ClassState p MethodData
forall c.
LensLike'
(Zoomed (StateT MethodState Identity) c) ClassState MethodState
-> StateT MethodState Identity c -> StateT ClassState 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 MethodState Identity) (p CppSrcCode CppHdrCode MethodData))
ClassState
MethodState
(MethodState
-> Focusing
Identity (p CppSrcCode CppHdrCode MethodData) MethodState)
-> ClassState
-> Focusing
Identity (p CppSrcCode CppHdrCode MethodData) ClassState
Lens' ClassState MethodState
lensCStoMS (MS (p CppSrcCode CppHdrCode MethodData)
-> PairState ClassState p MethodData)
-> [MS (p CppSrcCode CppHdrCode MethodData)]
-> [PairState ClassState p MethodData]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [MS (p CppSrcCode CppHdrCode MethodData)]
cs) (LensLike'
(Zoomed
(StateT MethodState Identity) (p CppSrcCode CppHdrCode MethodData))
ClassState
MethodState
-> MS (p CppSrcCode CppHdrCode MethodData)
-> PairState ClassState p MethodData
forall c.
LensLike'
(Zoomed (StateT MethodState Identity) c) ClassState MethodState
-> StateT MethodState Identity c -> StateT ClassState 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 MethodState Identity) (p CppSrcCode CppHdrCode MethodData))
ClassState
MethodState
(MethodState
-> Focusing
Identity (p CppSrcCode CppHdrCode MethodData) MethodState)
-> ClassState
-> Focusing
Identity (p CppSrcCode CppHdrCode MethodData) ClassState
Lens' ClassState MethodState
lensCStoMS (MS (p CppSrcCode CppHdrCode MethodData)
-> PairState ClassState p MethodData)
-> [MS (p CppSrcCode CppHdrCode MethodData)]
-> [PairState ClassState p MethodData]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [MS (p CppSrcCode CppHdrCode MethodData)]
fs)
docClass :: String
-> CS (p CppSrcCode CppHdrCode Doc)
-> CS (p CppSrcCode CppHdrCode Doc)
docClass String
d = (SrcState ClassState Doc -> SrcState ClassState Doc)
-> (HdrState ClassState Doc -> HdrState ClassState Doc)
-> CS (p CppSrcCode CppHdrCode Doc)
-> CS (p CppSrcCode CppHdrCode Doc)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 (String -> SrcState ClassState Doc -> SrcState ClassState Doc
forall {k} (r :: k -> *) (cls :: k) (stvr :: k) (mthd :: k).
ClassSym r cls stvr mthd =>
String -> CS (r cls) -> CS (r cls)
docClass String
d) (String -> HdrState ClassState Doc -> HdrState ClassState Doc
forall {k} (r :: k -> *) (cls :: k) (stvr :: k) (mthd :: k).
ClassSym r cls stvr mthd =>
String -> CS (r cls) -> CS (r cls)
docClass String
d)
instance (Pair p) => RenderClass (p CppSrcCode CppHdrCode) Class StateVarData MethodData (Doc, VisibilityTag) where
intClass :: String
-> p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> p CppSrcCode CppHdrCode Doc
-> [CSStateVar (p CppSrcCode CppHdrCode) StateVarData]
-> [MS (p CppSrcCode CppHdrCode MethodData)]
-> [MS (p CppSrcCode CppHdrCode MethodData)]
-> CS (p CppSrcCode CppHdrCode Doc)
intClass String
n p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s p CppSrcCode CppHdrCode Doc
i [CSStateVar (p CppSrcCode CppHdrCode) StateVarData]
vs [MS (p CppSrcCode CppHdrCode MethodData)]
cs [MS (p CppSrcCode CppHdrCode MethodData)]
fs = ([SrcState ClassState StateVarData]
-> [SrcState MethodState MethodData]
-> [SrcState MethodState MethodData]
-> SrcState ClassState Doc)
-> ([HdrState ClassState StateVarData]
-> [HdrState MethodState MethodData]
-> [HdrState MethodState MethodData]
-> HdrState ClassState Doc)
-> [CSStateVar (p CppSrcCode CppHdrCode) StateVarData]
-> [PairState ClassState p MethodData]
-> [PairState ClassState p MethodData]
-> CS (p CppSrcCode CppHdrCode Doc)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c u d.
Pair p =>
([SrcState r a]
-> [SrcState s b] -> [SrcState t c] -> SrcState u d)
-> ([HdrState r a]
-> [HdrState s b] -> [HdrState t c] -> HdrState u d)
-> [PairState u p a]
-> [PairState u p b]
-> [PairState u p c]
-> PairState u p d
pair3Lists
(String
-> CppSrcCode (Doc, VisibilityTag)
-> CppSrcCode Doc
-> [SrcState ClassState StateVarData]
-> [SrcState MethodState MethodData]
-> [SrcState MethodState MethodData]
-> SrcState ClassState Doc
forall (r :: * -> *) cls stvr mthd vis.
RenderClass r cls stvr mthd vis =>
String
-> r vis
-> r Doc
-> [CSStateVar r stvr]
-> [MS (r mthd)]
-> [MS (r mthd)]
-> CS (r cls)
intClass String
n (p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> CppSrcCode (Doc, VisibilityTag)
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s) (p CppSrcCode CppHdrCode Doc -> CppSrcCode Doc
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode Doc
i)) (String
-> CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode Doc
-> [HdrState ClassState StateVarData]
-> [HdrState MethodState MethodData]
-> [HdrState MethodState MethodData]
-> HdrState ClassState Doc
forall (r :: * -> *) cls stvr mthd vis.
RenderClass r cls stvr mthd vis =>
String
-> r vis
-> r Doc
-> [CSStateVar r stvr]
-> [MS (r mthd)]
-> [MS (r mthd)]
-> CS (r cls)
intClass String
n (p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode (Doc, VisibilityTag)
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s) (p CppSrcCode CppHdrCode Doc -> CppHdrCode Doc
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd p CppSrcCode CppHdrCode Doc
i))
[CSStateVar (p CppSrcCode CppHdrCode) StateVarData]
vs (LensLike'
(Zoomed
(StateT MethodState Identity) (p CppSrcCode CppHdrCode MethodData))
ClassState
MethodState
-> MS (p CppSrcCode CppHdrCode MethodData)
-> PairState ClassState p MethodData
forall c.
LensLike'
(Zoomed (StateT MethodState Identity) c) ClassState MethodState
-> StateT MethodState Identity c -> StateT ClassState 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 MethodState Identity) (p CppSrcCode CppHdrCode MethodData))
ClassState
MethodState
(MethodState
-> Focusing
Identity (p CppSrcCode CppHdrCode MethodData) MethodState)
-> ClassState
-> Focusing
Identity (p CppSrcCode CppHdrCode MethodData) ClassState
Lens' ClassState MethodState
lensCStoMS (MS (p CppSrcCode CppHdrCode MethodData)
-> PairState ClassState p MethodData)
-> [MS (p CppSrcCode CppHdrCode MethodData)]
-> [PairState ClassState p MethodData]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [MS (p CppSrcCode CppHdrCode MethodData)]
cs) (LensLike'
(Zoomed
(StateT MethodState Identity) (p CppSrcCode CppHdrCode MethodData))
ClassState
MethodState
-> MS (p CppSrcCode CppHdrCode MethodData)
-> PairState ClassState p MethodData
forall c.
LensLike'
(Zoomed (StateT MethodState Identity) c) ClassState MethodState
-> StateT MethodState Identity c -> StateT ClassState 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 MethodState Identity) (p CppSrcCode CppHdrCode MethodData))
ClassState
MethodState
(MethodState
-> Focusing
Identity (p CppSrcCode CppHdrCode MethodData) MethodState)
-> ClassState
-> Focusing
Identity (p CppSrcCode CppHdrCode MethodData) ClassState
Lens' ClassState MethodState
lensCStoMS (MS (p CppSrcCode CppHdrCode MethodData)
-> PairState ClassState p MethodData)
-> [MS (p CppSrcCode CppHdrCode MethodData)]
-> [PairState ClassState p MethodData]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [MS (p CppSrcCode CppHdrCode MethodData)]
fs)
inherit :: Maybe String -> p CppSrcCode CppHdrCode Doc
inherit Maybe String
n = CppSrcCode Doc -> CppHdrCode Doc -> p CppSrcCode CppHdrCode Doc
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair (Maybe String -> CppSrcCode Doc
forall (r :: * -> *) cls stvr mthd vis.
RenderClass r cls stvr mthd vis =>
Maybe String -> r Doc
inherit Maybe String
n) (Maybe String -> CppHdrCode Doc
forall (r :: * -> *) cls stvr mthd vis.
RenderClass r cls stvr mthd vis =>
Maybe String -> r Doc
inherit Maybe String
n)
implements :: [String] -> p CppSrcCode CppHdrCode Doc
implements [String]
is = CppSrcCode Doc -> CppHdrCode Doc -> p CppSrcCode CppHdrCode Doc
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair ([String] -> CppSrcCode Doc
forall (r :: * -> *) cls stvr mthd vis.
RenderClass r cls stvr mthd vis =>
[String] -> r Doc
implements [String]
is) ([String] -> CppHdrCode Doc
forall (r :: * -> *) cls stvr mthd vis.
RenderClass r cls stvr mthd vis =>
[String] -> r Doc
implements [String]
is)
commentedClass :: CS (p CppSrcCode CppHdrCode Doc)
-> CS (p CppSrcCode CppHdrCode Doc)
-> CS (p CppSrcCode CppHdrCode Doc)
commentedClass = (SrcState ClassState Doc
-> SrcState ClassState Doc -> SrcState ClassState Doc)
-> (HdrState ClassState Doc
-> HdrState ClassState Doc -> HdrState ClassState Doc)
-> CS (p CppSrcCode CppHdrCode Doc)
-> CS (p CppSrcCode CppHdrCode Doc)
-> CS (p CppSrcCode CppHdrCode Doc)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 SrcState ClassState Doc
-> SrcState ClassState Doc -> SrcState ClassState Doc
forall (r :: * -> *) cls stvr mthd vis.
RenderClass r cls stvr mthd vis =>
CS (r Doc) -> CS (r cls) -> CS (r cls)
commentedClass HdrState ClassState Doc
-> HdrState ClassState Doc -> HdrState ClassState Doc
forall (r :: * -> *) cls stvr mthd vis.
RenderClass r cls stvr mthd vis =>
CS (r Doc) -> CS (r cls) -> CS (r cls)
commentedClass
instance (Pair p) => ClassElim (p CppSrcCode CppHdrCode) Class where
class' :: p CppSrcCode CppHdrCode Doc -> Doc
class' p CppSrcCode CppHdrCode Doc
c = CppSrcCode Doc -> Doc
forall {k} (r :: k -> *) (cls :: k).
ClassElim r cls =>
r cls -> Doc
RC.class' (CppSrcCode Doc -> Doc) -> CppSrcCode Doc -> Doc
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode Doc -> CppSrcCode Doc
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode Doc
c
instance (Pair p) => ModuleSym (p CppSrcCode CppHdrCode) ModData Class MethodData where
buildModule :: String
-> [String]
-> [MS (p CppSrcCode CppHdrCode MethodData)]
-> [CS (p CppSrcCode CppHdrCode Doc)]
-> FS (p CppSrcCode CppHdrCode ModData)
buildModule String
n [String]
is [MS (p CppSrcCode CppHdrCode MethodData)]
ms [CS (p CppSrcCode CppHdrCode Doc)]
cs = do
(FileState -> FileState) -> StateT FileState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (String -> FileState -> FileState
setModuleName String
n)
([SrcState MethodState MethodData]
-> [SrcState ClassState Doc] -> SrcState FileState ModData)
-> ([HdrState MethodState MethodData]
-> [HdrState ClassState Doc] -> HdrState FileState ModData)
-> [PairState FileState p MethodData]
-> [PairState FileState p Doc]
-> FS (p CppSrcCode CppHdrCode ModData)
forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
([SrcState r a] -> [SrcState s b] -> SrcState t c)
-> ([HdrState r a] -> [HdrState s b] -> HdrState t c)
-> [PairState t p a]
-> [PairState t p b]
-> PairState t p c
pair2Lists (String
-> [String]
-> [SrcState MethodState MethodData]
-> [SrcState ClassState Doc]
-> SrcState FileState ModData
forall {k} (r :: k -> *) (mod :: k) (cls :: k) (mthd :: k).
ModuleSym r mod cls mthd =>
String -> [String] -> [MS (r mthd)] -> [CS (r cls)] -> FS (r mod)
buildModule String
n [String]
is) (String
-> [String]
-> [HdrState MethodState MethodData]
-> [HdrState ClassState Doc]
-> HdrState FileState ModData
forall {k} (r :: k -> *) (mod :: k) (cls :: k) (mthd :: k).
ModuleSym r mod cls mthd =>
String -> [String] -> [MS (r mthd)] -> [CS (r cls)] -> FS (r mod)
buildModule String
n [String]
is)
(LensLike'
(Zoomed
(StateT MethodState Identity) (p CppSrcCode CppHdrCode MethodData))
FileState
MethodState
-> MS (p CppSrcCode CppHdrCode MethodData)
-> PairState FileState p MethodData
forall c.
LensLike'
(Zoomed (StateT MethodState Identity) c) FileState MethodState
-> StateT MethodState Identity c -> StateT FileState 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 MethodState Identity) (p CppSrcCode CppHdrCode MethodData))
FileState
MethodState
(MethodState
-> Focusing
Identity (p CppSrcCode CppHdrCode MethodData) MethodState)
-> FileState
-> Focusing Identity (p CppSrcCode CppHdrCode MethodData) FileState
Lens' FileState MethodState
lensFStoMS (MS (p CppSrcCode CppHdrCode MethodData)
-> PairState FileState p MethodData)
-> [MS (p CppSrcCode CppHdrCode MethodData)]
-> [PairState FileState p MethodData]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [MS (p CppSrcCode CppHdrCode MethodData)]
ms) (LensLike'
(Zoomed (StateT ClassState Identity) (p CppSrcCode CppHdrCode Doc))
FileState
ClassState
-> CS (p CppSrcCode CppHdrCode Doc) -> PairState FileState p Doc
forall c.
LensLike'
(Zoomed (StateT ClassState Identity) c) FileState ClassState
-> StateT ClassState Identity c -> StateT FileState 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 ClassState Identity) (p CppSrcCode CppHdrCode Doc))
FileState
ClassState
(ClassState
-> Focusing Identity (p CppSrcCode CppHdrCode Doc) ClassState)
-> FileState
-> Focusing Identity (p CppSrcCode CppHdrCode Doc) FileState
Lens' FileState ClassState
lensFStoCS (CS (p CppSrcCode CppHdrCode Doc) -> PairState FileState p Doc)
-> [CS (p CppSrcCode CppHdrCode Doc)]
-> [PairState FileState p Doc]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [CS (p CppSrcCode CppHdrCode Doc)]
cs)
instance (Pair p) => RenderMod (p CppSrcCode CppHdrCode) ModData where
modFromData :: String -> FS Doc -> FS (p CppSrcCode CppHdrCode ModData)
modFromData String
n FS Doc
d = (CppSrcCode ModData
-> CppHdrCode ModData -> p CppSrcCode CppHdrCode ModData)
-> SrcState FileState ModData
-> HdrState FileState ModData
-> FS (p CppSrcCode CppHdrCode ModData)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode ModData
-> CppHdrCode ModData -> p CppSrcCode CppHdrCode ModData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair (String -> FS Doc -> SrcState FileState ModData
forall {k} (r :: k -> *) (mod :: k).
RenderMod r mod =>
String -> FS Doc -> FS (r mod)
modFromData String
n FS Doc
d) (String -> FS Doc -> HdrState FileState ModData
forall {k} (r :: k -> *) (mod :: k).
RenderMod r mod =>
String -> FS Doc -> FS (r mod)
modFromData String
n FS Doc
d)
updateModuleDoc :: (Doc -> Doc)
-> p CppSrcCode CppHdrCode ModData
-> p CppSrcCode CppHdrCode ModData
updateModuleDoc Doc -> Doc
f p CppSrcCode CppHdrCode ModData
m = CppSrcCode ModData
-> CppHdrCode ModData -> p CppSrcCode CppHdrCode ModData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair
((Doc -> Doc) -> CppSrcCode ModData -> CppSrcCode ModData
forall {k} (r :: k -> *) (mod :: k).
RenderMod r mod =>
(Doc -> Doc) -> r mod -> r mod
updateModuleDoc Doc -> Doc
f (CppSrcCode ModData -> CppSrcCode ModData)
-> CppSrcCode ModData -> CppSrcCode ModData
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode ModData -> CppSrcCode ModData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode ModData
m) ((Doc -> Doc) -> CppHdrCode ModData -> CppHdrCode ModData
forall {k} (r :: k -> *) (mod :: k).
RenderMod r mod =>
(Doc -> Doc) -> r mod -> r mod
updateModuleDoc Doc -> Doc
f (CppHdrCode ModData -> CppHdrCode ModData)
-> CppHdrCode ModData -> CppHdrCode ModData
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode ModData -> CppHdrCode ModData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd p CppSrcCode CppHdrCode ModData
m)
instance (Pair p) => ModuleElim (p CppSrcCode CppHdrCode) ModData where
module' :: p CppSrcCode CppHdrCode ModData -> Doc
module' p CppSrcCode CppHdrCode ModData
m = CppSrcCode ModData -> Doc
forall {k} (r :: k -> *) (mod :: k).
ModuleElim r mod =>
r mod -> Doc
RC.module' (CppSrcCode ModData -> Doc) -> CppSrcCode ModData -> Doc
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode ModData -> CppSrcCode ModData
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode ModData
m
instance (Pair p) => BlockCommentSym (p CppSrcCode CppHdrCode) where
blockComment :: [String] -> p CppSrcCode CppHdrCode Doc
blockComment [String]
lns = CppSrcCode Doc -> CppHdrCode Doc -> p CppSrcCode CppHdrCode Doc
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair ([String] -> CppSrcCode Doc
forall (r :: * -> *). BlockCommentSym r => [String] -> r Doc
blockComment [String]
lns) ([String] -> CppHdrCode Doc
forall (r :: * -> *). BlockCommentSym r => [String] -> r Doc
blockComment [String]
lns)
docComment :: forall a. State a [String] -> State a (p CppSrcCode CppHdrCode Doc)
docComment State a [String]
lns = (CppSrcCode Doc -> CppHdrCode Doc -> p CppSrcCode CppHdrCode Doc)
-> State a (CppSrcCode Doc)
-> State a (CppHdrCode Doc)
-> State a (p CppSrcCode CppHdrCode Doc)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode Doc -> CppHdrCode Doc -> p CppSrcCode CppHdrCode Doc
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(a :: k) (y :: k -> *).
Pair p =>
x a -> y a -> p x y a
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
pair (State a [String] -> State a (CppSrcCode Doc)
forall a. State a [String] -> State a (CppSrcCode Doc)
forall (r :: * -> *) a.
BlockCommentSym r =>
State a [String] -> State a (r Doc)
docComment State a [String]
lns) (State a [String] -> State a (CppHdrCode Doc)
forall a. State a [String] -> State a (CppHdrCode Doc)
forall (r :: * -> *) a.
BlockCommentSym r =>
State a [String] -> State a (r Doc)
docComment State a [String]
lns)
instance (Pair p) => BlockCommentElim (p CppSrcCode CppHdrCode) where
blockComment' :: p CppSrcCode CppHdrCode Doc -> Doc
blockComment' p CppSrcCode CppHdrCode Doc
c = CppSrcCode Doc -> Doc
forall (r :: * -> *). BlockCommentElim r => r Doc -> Doc
RC.blockComment' (CppSrcCode Doc -> Doc) -> CppSrcCode Doc -> Doc
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode Doc -> CppSrcCode Doc
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode Doc
c
type SrcState s a = State s (CppSrcCode a)
type HdrState s a = State s (CppHdrCode a)
type PairState s p a = State s (p CppSrcCode CppHdrCode a)
pair1 :: (Pair p) => (SrcState r a -> SrcState s b) -> (HdrState r a ->
HdrState s b) -> PairState s p a -> PairState s p b
pair1 :: forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
(SrcState r a -> SrcState s b)
-> (HdrState r a -> HdrState s b)
-> PairState s p a
-> PairState s p b
pair1 SrcState r a -> SrcState s b
srcf HdrState r a -> HdrState s b
hdrf PairState s p a
stv = do
v <- PairState s p a
stv
let fp = CppSrcCode a -> SrcState r a
forall a. a -> StateT r Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (CppSrcCode a -> SrcState r a) -> CppSrcCode a -> SrcState r a
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode a -> CppSrcCode a
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode a
v
sp = CppHdrCode a -> HdrState r a
forall a. a -> StateT r Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (CppHdrCode a -> HdrState r a) -> CppHdrCode a -> HdrState r a
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode a -> CppHdrCode a
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd p CppSrcCode CppHdrCode a
v
p1 <- srcf fp
p2 <- hdrf sp
pure $ pair p1 p2
pair2 :: (Pair p) => (SrcState r a -> SrcState s b -> SrcState t c) ->
(HdrState r a -> HdrState s b -> HdrState t c) -> PairState t p a ->
PairState t p b -> PairState t p c
pair2 :: forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c)
-> (HdrState r a -> HdrState s b -> HdrState t c)
-> PairState t p a
-> PairState t p b
-> PairState t p c
pair2 SrcState r a -> SrcState s b -> SrcState t c
srcf HdrState r a -> HdrState s b -> HdrState t c
hdrf PairState t p a
stv1 PairState t p b
stv2 = do
v1 <- PairState t p a
stv1
let fv1 = CppSrcCode a -> SrcState r a
forall a. a -> StateT r Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (CppSrcCode a -> SrcState r a) -> CppSrcCode a -> SrcState r a
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode a -> CppSrcCode a
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode a
v1
sv1 = CppHdrCode a -> HdrState r a
forall a. a -> StateT r Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (CppHdrCode a -> HdrState r a) -> CppHdrCode a -> HdrState r a
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode a -> CppHdrCode a
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd p CppSrcCode CppHdrCode a
v1
pair1 (srcf fv1) (hdrf sv1) stv2
pair3 :: (Pair p) => (SrcState r a -> SrcState s b -> SrcState t c ->
SrcState u d) -> (HdrState r a -> HdrState s b -> HdrState t c ->
HdrState u d) -> PairState u p a -> PairState u p b -> PairState u p c ->
PairState u p d
pair3 :: forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c u d.
Pair p =>
(SrcState r a -> SrcState s b -> SrcState t c -> SrcState u d)
-> (HdrState r a -> HdrState s b -> HdrState t c -> HdrState u d)
-> PairState u p a
-> PairState u p b
-> PairState u p c
-> PairState u p d
pair3 SrcState r a -> SrcState s b -> SrcState t c -> SrcState u d
srcf HdrState r a -> HdrState s b -> HdrState t c -> HdrState u d
hdrf PairState u p a
stv1 PairState u p b
stv2 PairState u p c
stv3 = do
v1 <- PairState u p a
stv1
let fv1 = CppSrcCode a -> SrcState r a
forall a. a -> StateT r Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (CppSrcCode a -> SrcState r a) -> CppSrcCode a -> SrcState r a
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode a -> CppSrcCode a
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode a
v1
sv1 = CppHdrCode a -> HdrState r a
forall a. a -> StateT r Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (CppHdrCode a -> HdrState r a) -> CppHdrCode a -> HdrState r a
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode a -> CppHdrCode a
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd p CppSrcCode CppHdrCode a
v1
pair2 (srcf fv1) (hdrf sv1) stv2 stv3
pair4 :: (Pair p) => (SrcState r a -> SrcState s b -> SrcState t c ->
SrcState u d -> SrcState v e) -> (HdrState r a -> HdrState s b -> HdrState t c
-> HdrState u d -> HdrState v e) -> PairState v p a -> PairState v p b ->
PairState v p c -> PairState v p d -> PairState v p e
pair4 :: forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c u d v e.
Pair p =>
(SrcState r a
-> SrcState s b -> SrcState t c -> SrcState u d -> SrcState v e)
-> (HdrState r a
-> HdrState s b -> HdrState t c -> HdrState u d -> HdrState v e)
-> PairState v p a
-> PairState v p b
-> PairState v p c
-> PairState v p d
-> PairState v p e
pair4 SrcState r a
-> SrcState s b -> SrcState t c -> SrcState u d -> SrcState v e
srcf HdrState r a
-> HdrState s b -> HdrState t c -> HdrState u d -> HdrState v e
hdrf PairState v p a
stv1 PairState v p b
stv2 PairState v p c
stv3 PairState v p d
stv4 = do
v1 <- PairState v p a
stv1
let fv1 = CppSrcCode a -> SrcState r a
forall a. a -> StateT r Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (CppSrcCode a -> SrcState r a) -> CppSrcCode a -> SrcState r a
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode a -> CppSrcCode a
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode a
v1
sv1 = CppHdrCode a -> HdrState r a
forall a. a -> StateT r Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (CppHdrCode a -> HdrState r a) -> CppHdrCode a -> HdrState r a
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode a -> CppHdrCode a
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd p CppSrcCode CppHdrCode a
v1
pair3 (srcf fv1) (hdrf sv1) stv2 stv3 stv4
pair5 :: (Pair p) => (SrcState r a -> SrcState s b -> SrcState t c ->
SrcState u d -> SrcState v e -> SrcState w f) -> (HdrState r a -> HdrState s b
-> HdrState t c -> HdrState u d -> HdrState v e -> HdrState w f) ->
PairState w p a -> PairState w p b -> PairState w p c -> PairState w p d ->
PairState w p e -> PairState w p f
pair5 :: forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c u d v e w
f.
Pair p =>
(SrcState r a
-> SrcState s b
-> SrcState t c
-> SrcState u d
-> SrcState v e
-> SrcState w f)
-> (HdrState r a
-> HdrState s b
-> HdrState t c
-> HdrState u d
-> HdrState v e
-> HdrState w f)
-> PairState w p a
-> PairState w p b
-> PairState w p c
-> PairState w p d
-> PairState w p e
-> PairState w p f
pair5 SrcState r a
-> SrcState s b
-> SrcState t c
-> SrcState u d
-> SrcState v e
-> SrcState w f
srcf HdrState r a
-> HdrState s b
-> HdrState t c
-> HdrState u d
-> HdrState v e
-> HdrState w f
hdrf PairState w p a
stv1 PairState w p b
stv2 PairState w p c
stv3 PairState w p d
stv4 PairState w p e
stv5 = do
v1 <- PairState w p a
stv1
let fv1 = CppSrcCode a -> SrcState r a
forall a. a -> StateT r Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (CppSrcCode a -> SrcState r a) -> CppSrcCode a -> SrcState r a
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode a -> CppSrcCode a
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode a
v1
sv1 = CppHdrCode a -> HdrState r a
forall a. a -> StateT r Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (CppHdrCode a -> HdrState r a) -> CppHdrCode a -> HdrState r a
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode a -> CppHdrCode a
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd p CppSrcCode CppHdrCode a
v1
pair4 (srcf fv1) (hdrf sv1) stv2 stv3 stv4 stv5
pair1List :: (Pair p) => ([SrcState r a] -> SrcState s b) -> ([HdrState r a] ->
HdrState s b) -> [PairState s p a] -> PairState s p b
pair1List :: forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b.
Pair p =>
([SrcState r a] -> SrcState s b)
-> ([HdrState r a] -> HdrState s b)
-> [PairState s p a]
-> PairState s p b
pair1List [SrcState r a] -> SrcState s b
srcf [HdrState r a] -> HdrState s b
hdrf [PairState s p a]
stv = do
v <- [PairState s p a] -> StateT s Identity [p CppSrcCode CppHdrCode a]
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
forall (m :: * -> *) a. Monad m => [m a] -> m [a]
sequence [PairState s p a]
stv
let fl = CppSrcCode a -> SrcState r a
forall a. a -> StateT r Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (CppSrcCode a -> SrcState r a)
-> (p CppSrcCode CppHdrCode a -> CppSrcCode a)
-> p CppSrcCode CppHdrCode a
-> SrcState r a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. p CppSrcCode CppHdrCode a -> CppSrcCode a
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst (p CppSrcCode CppHdrCode a -> SrcState r a)
-> [p CppSrcCode CppHdrCode a] -> [SrcState r a]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [p CppSrcCode CppHdrCode a]
v
sl = CppHdrCode a -> HdrState r a
forall a. a -> StateT r Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (CppHdrCode a -> HdrState r a)
-> (p CppSrcCode CppHdrCode a -> CppHdrCode a)
-> p CppSrcCode CppHdrCode a
-> HdrState r a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. p CppSrcCode CppHdrCode a -> CppHdrCode a
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd (p CppSrcCode CppHdrCode a -> HdrState r a)
-> [p CppSrcCode CppHdrCode a] -> [HdrState r a]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [p CppSrcCode CppHdrCode a]
v
p1 <- srcf fl
p2 <- hdrf sl
pure $ pair p1 p2
pair2Lists :: (Pair p) => ([SrcState r a] -> [SrcState s b] -> SrcState t c) ->
([HdrState r a] -> [HdrState s b] -> HdrState t c) -> [PairState t p a] ->
[PairState t p b] -> PairState t p c
pair2Lists :: forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
([SrcState r a] -> [SrcState s b] -> SrcState t c)
-> ([HdrState r a] -> [HdrState s b] -> HdrState t c)
-> [PairState t p a]
-> [PairState t p b]
-> PairState t p c
pair2Lists [SrcState r a] -> [SrcState s b] -> SrcState t c
srcf [HdrState r a] -> [HdrState s b] -> HdrState t c
hdrf [PairState t p a]
stv1 [PairState t p b]
stv2 = do
v1 <- [PairState t p a] -> StateT t Identity [p CppSrcCode CppHdrCode a]
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
forall (m :: * -> *) a. Monad m => [m a] -> m [a]
sequence [PairState t p a]
stv1
let fl1 = CppSrcCode a -> SrcState r a
forall a. a -> StateT r Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (CppSrcCode a -> SrcState r a)
-> (p CppSrcCode CppHdrCode a -> CppSrcCode a)
-> p CppSrcCode CppHdrCode a
-> SrcState r a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. p CppSrcCode CppHdrCode a -> CppSrcCode a
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst (p CppSrcCode CppHdrCode a -> SrcState r a)
-> [p CppSrcCode CppHdrCode a] -> [SrcState r a]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [p CppSrcCode CppHdrCode a]
v1
sl1 = CppHdrCode a -> HdrState r a
forall a. a -> StateT r Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (CppHdrCode a -> HdrState r a)
-> (p CppSrcCode CppHdrCode a -> CppHdrCode a)
-> p CppSrcCode CppHdrCode a
-> HdrState r a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. p CppSrcCode CppHdrCode a -> CppHdrCode a
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd (p CppSrcCode CppHdrCode a -> HdrState r a)
-> [p CppSrcCode CppHdrCode a] -> [HdrState r a]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [p CppSrcCode CppHdrCode a]
v1
pair1List (srcf fl1) (hdrf sl1) stv2
pair3Lists :: (Pair p) => ([SrcState r a] -> [SrcState s b] -> [SrcState t c] ->
SrcState u d) -> ([HdrState r a] -> [HdrState s b] -> [HdrState t c] ->
HdrState u d) -> [PairState u p a] -> [PairState u p b] -> [PairState u p c]
-> PairState u p d
pair3Lists :: forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c u d.
Pair p =>
([SrcState r a]
-> [SrcState s b] -> [SrcState t c] -> SrcState u d)
-> ([HdrState r a]
-> [HdrState s b] -> [HdrState t c] -> HdrState u d)
-> [PairState u p a]
-> [PairState u p b]
-> [PairState u p c]
-> PairState u p d
pair3Lists [SrcState r a] -> [SrcState s b] -> [SrcState t c] -> SrcState u d
srcf [HdrState r a] -> [HdrState s b] -> [HdrState t c] -> HdrState u d
hdrf [PairState u p a]
stv1 [PairState u p b]
stv2 [PairState u p c]
stv3 = do
v1 <- [PairState u p a] -> StateT u Identity [p CppSrcCode CppHdrCode a]
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
forall (m :: * -> *) a. Monad m => [m a] -> m [a]
sequence [PairState u p a]
stv1
let fl1 = CppSrcCode a -> SrcState r a
forall a. a -> StateT r Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (CppSrcCode a -> SrcState r a)
-> (p CppSrcCode CppHdrCode a -> CppSrcCode a)
-> p CppSrcCode CppHdrCode a
-> SrcState r a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. p CppSrcCode CppHdrCode a -> CppSrcCode a
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst (p CppSrcCode CppHdrCode a -> SrcState r a)
-> [p CppSrcCode CppHdrCode a] -> [SrcState r a]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [p CppSrcCode CppHdrCode a]
v1
sl1 = CppHdrCode a -> HdrState r a
forall a. a -> StateT r Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (CppHdrCode a -> HdrState r a)
-> (p CppSrcCode CppHdrCode a -> CppHdrCode a)
-> p CppSrcCode CppHdrCode a
-> HdrState r a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. p CppSrcCode CppHdrCode a -> CppHdrCode a
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd (p CppSrcCode CppHdrCode a -> HdrState r a)
-> [p CppSrcCode CppHdrCode a] -> [HdrState r a]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [p CppSrcCode CppHdrCode a]
v1
pair2Lists (srcf fl1) (hdrf sl1) stv2 stv3
pair1List1Val :: (Pair p) => ([SrcState r a] -> SrcState s b -> SrcState t c) ->
([HdrState r a] -> HdrState s b -> HdrState t c) -> [PairState t p a] ->
PairState t p b -> PairState t p c
pair1List1Val :: forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
([SrcState r a] -> SrcState s b -> SrcState t c)
-> ([HdrState r a] -> HdrState s b -> HdrState t c)
-> [PairState t p a]
-> PairState t p b
-> PairState t p c
pair1List1Val [SrcState r a] -> SrcState s b -> SrcState t c
srcf [HdrState r a] -> HdrState s b -> HdrState t c
hdrf [PairState t p a]
stv1 PairState t p b
stv2 = do
v1 <- [PairState t p a] -> StateT t Identity [p CppSrcCode CppHdrCode a]
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
forall (m :: * -> *) a. Monad m => [m a] -> m [a]
sequence [PairState t p a]
stv1
let fl1 = CppSrcCode a -> SrcState r a
forall a. a -> StateT r Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (CppSrcCode a -> SrcState r a)
-> (p CppSrcCode CppHdrCode a -> CppSrcCode a)
-> p CppSrcCode CppHdrCode a
-> SrcState r a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. p CppSrcCode CppHdrCode a -> CppSrcCode a
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst (p CppSrcCode CppHdrCode a -> SrcState r a)
-> [p CppSrcCode CppHdrCode a] -> [SrcState r a]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [p CppSrcCode CppHdrCode a]
v1
sl1 = CppHdrCode a -> HdrState r a
forall a. a -> StateT r Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (CppHdrCode a -> HdrState r a)
-> (p CppSrcCode CppHdrCode a -> CppHdrCode a)
-> p CppSrcCode CppHdrCode a
-> HdrState r a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. p CppSrcCode CppHdrCode a -> CppHdrCode a
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd (p CppSrcCode CppHdrCode a -> HdrState r a)
-> [p CppSrcCode CppHdrCode a] -> [HdrState r a]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [p CppSrcCode CppHdrCode a]
v1
pair1 (srcf fl1) (hdrf sl1) stv2
pair1Val1List :: (Pair p) => (SrcState r a -> [SrcState s b] -> SrcState t c) ->
(HdrState r a -> [HdrState s b] -> HdrState t c) -> PairState t p a ->
[PairState t p b] -> PairState t p c
pair1Val1List :: forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c.
Pair p =>
(SrcState r a -> [SrcState s b] -> SrcState t c)
-> (HdrState r a -> [HdrState s b] -> HdrState t c)
-> PairState t p a
-> [PairState t p b]
-> PairState t p c
pair1Val1List SrcState r a -> [SrcState s b] -> SrcState t c
srcf HdrState r a -> [HdrState s b] -> HdrState t c
hdrf PairState t p a
stv1 [PairState t p b]
stv2 = do
v1 <- PairState t p a
stv1
let fv1 = CppSrcCode a -> SrcState r a
forall a. a -> StateT r Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (CppSrcCode a -> SrcState r a) -> CppSrcCode a -> SrcState r a
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode a -> CppSrcCode a
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode a
v1
sv1 = CppHdrCode a -> HdrState r a
forall a. a -> StateT r Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (CppHdrCode a -> HdrState r a) -> CppHdrCode a -> HdrState r a
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode a -> CppHdrCode a
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd p CppSrcCode CppHdrCode a
v1
pair1List (srcf fv1) (hdrf sv1) stv2
pair2Lists1Val :: (Pair p) => ([SrcState r a] -> [SrcState s b] -> SrcState t c
-> SrcState u d) -> ([HdrState r a] -> [HdrState s b] -> HdrState t c ->
HdrState u d) -> [PairState u p a] -> [PairState u p b] -> PairState u p c ->
PairState u p d
pair2Lists1Val :: forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c u d.
Pair p =>
([SrcState r a] -> [SrcState s b] -> SrcState t c -> SrcState u d)
-> ([HdrState r a]
-> [HdrState s b] -> HdrState t c -> HdrState u d)
-> [PairState u p a]
-> [PairState u p b]
-> PairState u p c
-> PairState u p d
pair2Lists1Val [SrcState r a] -> [SrcState s b] -> SrcState t c -> SrcState u d
srcf [HdrState r a] -> [HdrState s b] -> HdrState t c -> HdrState u d
hdrf [PairState u p a]
stv1 [PairState u p b]
stv2 PairState u p c
stv3 = do
v1 <- [PairState u p a] -> StateT u Identity [p CppSrcCode CppHdrCode a]
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
forall (m :: * -> *) a. Monad m => [m a] -> m [a]
sequence [PairState u p a]
stv1
let fl1 = CppSrcCode a -> SrcState r a
forall a. a -> StateT r Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (CppSrcCode a -> SrcState r a)
-> (p CppSrcCode CppHdrCode a -> CppSrcCode a)
-> p CppSrcCode CppHdrCode a
-> SrcState r a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. p CppSrcCode CppHdrCode a -> CppSrcCode a
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst (p CppSrcCode CppHdrCode a -> SrcState r a)
-> [p CppSrcCode CppHdrCode a] -> [SrcState r a]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [p CppSrcCode CppHdrCode a]
v1
sl1 = CppHdrCode a -> HdrState r a
forall a. a -> StateT r Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (CppHdrCode a -> HdrState r a)
-> (p CppSrcCode CppHdrCode a -> CppHdrCode a)
-> p CppSrcCode CppHdrCode a
-> HdrState r a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. p CppSrcCode CppHdrCode a -> CppHdrCode a
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd (p CppSrcCode CppHdrCode a -> HdrState r a)
-> [p CppSrcCode CppHdrCode a] -> [HdrState r a]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [p CppSrcCode CppHdrCode a]
v1
pair1List1Val (srcf fl1) (hdrf sl1) stv2 stv3
pairValListVal :: (Pair p) => (SrcState r a -> [SrcState s b] -> SrcState t c ->
SrcState u d) -> (HdrState r a -> [HdrState s b] -> HdrState t c ->
HdrState u d) -> PairState u p a -> [PairState u p b] -> PairState u p c ->
PairState u p d
pairValListVal :: forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c u d.
Pair p =>
(SrcState r a -> [SrcState s b] -> SrcState t c -> SrcState u d)
-> (HdrState r a -> [HdrState s b] -> HdrState t c -> HdrState u d)
-> PairState u p a
-> [PairState u p b]
-> PairState u p c
-> PairState u p d
pairValListVal SrcState r a -> [SrcState s b] -> SrcState t c -> SrcState u d
srcf HdrState r a -> [HdrState s b] -> HdrState t c -> HdrState u d
hdrf PairState u p a
stv1 [PairState u p b]
stv2 PairState u p c
stv3 = do
v1 <- PairState u p a
stv1
let fv1 = CppSrcCode a -> SrcState r a
forall a. a -> StateT r Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (CppSrcCode a -> SrcState r a) -> CppSrcCode a -> SrcState r a
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode a -> CppSrcCode a
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode a
v1
sv1 = CppHdrCode a -> HdrState r a
forall a. a -> StateT r Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (CppHdrCode a -> HdrState r a) -> CppHdrCode a -> HdrState r a
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode a -> CppHdrCode a
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd p CppSrcCode CppHdrCode a
v1
pair1List1Val (srcf fv1) (hdrf sv1) stv2 stv3
pair3Lists1Val :: (Pair p) => ([SrcState r a] -> [SrcState s b] ->
[SrcState t c] -> SrcState u d -> SrcState v e) -> ([HdrState r a] ->
[HdrState s b] -> [HdrState t c] -> HdrState u d -> HdrState v e) ->
[PairState v p a] -> [PairState v p b] -> [PairState v p c] -> PairState v p d
-> PairState v p e
pair3Lists1Val :: forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c u d v e.
Pair p =>
([SrcState r a]
-> [SrcState s b]
-> [SrcState t c]
-> SrcState u d
-> SrcState v e)
-> ([HdrState r a]
-> [HdrState s b]
-> [HdrState t c]
-> HdrState u d
-> HdrState v e)
-> [PairState v p a]
-> [PairState v p b]
-> [PairState v p c]
-> PairState v p d
-> PairState v p e
pair3Lists1Val [SrcState r a]
-> [SrcState s b] -> [SrcState t c] -> SrcState u d -> SrcState v e
srcf [HdrState r a]
-> [HdrState s b] -> [HdrState t c] -> HdrState u d -> HdrState v e
hdrf [PairState v p a]
stv1 [PairState v p b]
stv2 [PairState v p c]
stv3 PairState v p d
stv4 = do
v1 <- [PairState v p a] -> StateT v Identity [p CppSrcCode CppHdrCode a]
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
forall (m :: * -> *) a. Monad m => [m a] -> m [a]
sequence [PairState v p a]
stv1
let fl1 = CppSrcCode a -> SrcState r a
forall a. a -> StateT r Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (CppSrcCode a -> SrcState r a)
-> (p CppSrcCode CppHdrCode a -> CppSrcCode a)
-> p CppSrcCode CppHdrCode a
-> SrcState r a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. p CppSrcCode CppHdrCode a -> CppSrcCode a
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst (p CppSrcCode CppHdrCode a -> SrcState r a)
-> [p CppSrcCode CppHdrCode a] -> [SrcState r a]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [p CppSrcCode CppHdrCode a]
v1
sl1 = CppHdrCode a -> HdrState r a
forall a. a -> StateT r Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (CppHdrCode a -> HdrState r a)
-> (p CppSrcCode CppHdrCode a -> CppHdrCode a)
-> p CppSrcCode CppHdrCode a
-> HdrState r a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. p CppSrcCode CppHdrCode a -> CppHdrCode a
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd (p CppSrcCode CppHdrCode a -> HdrState r a)
-> [p CppSrcCode CppHdrCode a] -> [HdrState r a]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [p CppSrcCode CppHdrCode a]
v1
pair2Lists1Val (srcf fl1) (hdrf sl1) stv2 stv3 stv4
pair1Val3Lists :: (Pair p) => (SrcState r a -> [SrcState s b] ->
[(SrcState t c, SrcState u d)] -> SrcState v e) -> (HdrState r a ->
[HdrState s b] -> [(HdrState t c, HdrState u d)] -> HdrState v e) ->
PairState v p a -> [PairState v p b] -> [(PairState v p c, PairState v p d)]
-> PairState v p e
pair1Val3Lists :: forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c u d v e.
Pair p =>
(SrcState r a
-> [SrcState s b]
-> [(SrcState t c, SrcState u d)]
-> SrcState v e)
-> (HdrState r a
-> [HdrState s b]
-> [(HdrState t c, HdrState u d)]
-> HdrState v e)
-> PairState v p a
-> [PairState v p b]
-> [(PairState v p c, PairState v p d)]
-> PairState v p e
pair1Val3Lists SrcState r a
-> [SrcState s b] -> [(SrcState t c, SrcState u d)] -> SrcState v e
srcf HdrState r a
-> [HdrState s b] -> [(HdrState t c, HdrState u d)] -> HdrState v e
hdrf PairState v p a
stv1 [PairState v p b]
stv2 [(PairState v p c, PairState v p d)]
stv34 = do
v1 <- PairState v p a
stv1
v2 <- sequence stv2
v3 <- mapM fst stv34
v4 <- mapM snd stv34
let fv1 = CppSrcCode a -> SrcState r a
forall a. a -> StateT r Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (CppSrcCode a -> SrcState r a) -> CppSrcCode a -> SrcState r a
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode a -> CppSrcCode a
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode a
v1
sv1 = CppHdrCode a -> HdrState r a
forall a. a -> StateT r Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (CppHdrCode a -> HdrState r a) -> CppHdrCode a -> HdrState r a
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode a -> CppHdrCode a
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd p CppSrcCode CppHdrCode a
v1
fv2 = CppSrcCode b -> SrcState s b
forall a. a -> StateT s Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (CppSrcCode b -> SrcState s b)
-> (p CppSrcCode CppHdrCode b -> CppSrcCode b)
-> p CppSrcCode CppHdrCode b
-> SrcState s b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. p CppSrcCode CppHdrCode b -> CppSrcCode b
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst (p CppSrcCode CppHdrCode b -> SrcState s b)
-> [p CppSrcCode CppHdrCode b] -> [SrcState s b]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [p CppSrcCode CppHdrCode b]
v2
sv2 = CppHdrCode b -> HdrState s b
forall a. a -> StateT s Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (CppHdrCode b -> HdrState s b)
-> (p CppSrcCode CppHdrCode b -> CppHdrCode b)
-> p CppSrcCode CppHdrCode b
-> HdrState s b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. p CppSrcCode CppHdrCode b -> CppHdrCode b
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd (p CppSrcCode CppHdrCode b -> HdrState s b)
-> [p CppSrcCode CppHdrCode b] -> [HdrState s b]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [p CppSrcCode CppHdrCode b]
v2
fv3 = CppSrcCode c -> SrcState t c
forall a. a -> StateT t Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (CppSrcCode c -> SrcState t c)
-> (p CppSrcCode CppHdrCode c -> CppSrcCode c)
-> p CppSrcCode CppHdrCode c
-> SrcState t c
forall b c a. (b -> c) -> (a -> b) -> a -> c
. p CppSrcCode CppHdrCode c -> CppSrcCode c
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst (p CppSrcCode CppHdrCode c -> SrcState t c)
-> [p CppSrcCode CppHdrCode c] -> [SrcState t c]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [p CppSrcCode CppHdrCode c]
v3
sv3 = CppHdrCode c -> HdrState t c
forall a. a -> StateT t Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (CppHdrCode c -> HdrState t c)
-> (p CppSrcCode CppHdrCode c -> CppHdrCode c)
-> p CppSrcCode CppHdrCode c
-> HdrState t c
forall b c a. (b -> c) -> (a -> b) -> a -> c
. p CppSrcCode CppHdrCode c -> CppHdrCode c
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd (p CppSrcCode CppHdrCode c -> HdrState t c)
-> [p CppSrcCode CppHdrCode c] -> [HdrState t c]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [p CppSrcCode CppHdrCode c]
v3
fv4 = CppSrcCode d -> SrcState u d
forall a. a -> StateT u Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (CppSrcCode d -> SrcState u d)
-> (p CppSrcCode CppHdrCode d -> CppSrcCode d)
-> p CppSrcCode CppHdrCode d
-> SrcState u d
forall b c a. (b -> c) -> (a -> b) -> a -> c
. p CppSrcCode CppHdrCode d -> CppSrcCode d
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst (p CppSrcCode CppHdrCode d -> SrcState u d)
-> [p CppSrcCode CppHdrCode d] -> [SrcState u d]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [p CppSrcCode CppHdrCode d]
v4
sv4 = CppHdrCode d -> HdrState u d
forall a. a -> StateT u Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (CppHdrCode d -> HdrState u d)
-> (p CppSrcCode CppHdrCode d -> CppHdrCode d)
-> p CppSrcCode CppHdrCode d
-> HdrState u d
forall b c a. (b -> c) -> (a -> b) -> a -> c
. p CppSrcCode CppHdrCode d -> CppHdrCode d
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd (p CppSrcCode CppHdrCode d -> HdrState u d)
-> [p CppSrcCode CppHdrCode d] -> [HdrState u d]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [p CppSrcCode CppHdrCode d]
v4
p1 <- srcf fv1 fv2 (zip fv3 fv4)
p2 <- hdrf sv1 sv2 (zip sv3 sv4)
pure $ pair p1 p2
pair2Vals3Lists :: (Pair p) => (SrcState r a -> SrcState s b -> [SrcState t c]
-> [(SrcState u d, SrcState v e)] -> SrcState w f) -> (HdrState r a ->
HdrState s b -> [HdrState t c] -> [(HdrState u d, HdrState v e)] ->
HdrState w f) -> PairState w p a -> PairState w p b -> [PairState w p c] ->
[(PairState w p d, PairState w p e)] -> PairState w p f
pair2Vals3Lists :: forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c u d v e w
f.
Pair p =>
(SrcState r a
-> SrcState s b
-> [SrcState t c]
-> [(SrcState u d, SrcState v e)]
-> SrcState w f)
-> (HdrState r a
-> HdrState s b
-> [HdrState t c]
-> [(HdrState u d, HdrState v e)]
-> HdrState w f)
-> PairState w p a
-> PairState w p b
-> [PairState w p c]
-> [(PairState w p d, PairState w p e)]
-> PairState w p f
pair2Vals3Lists SrcState r a
-> SrcState s b
-> [SrcState t c]
-> [(SrcState u d, SrcState v e)]
-> SrcState w f
srcf HdrState r a
-> HdrState s b
-> [HdrState t c]
-> [(HdrState u d, HdrState v e)]
-> HdrState w f
hdrf PairState w p a
stv1 PairState w p b
stv2 [PairState w p c]
stv3 [(PairState w p d, PairState w p e)]
stv45 = do
v1 <- PairState w p a
stv1
let fv1 = CppSrcCode a -> SrcState r a
forall a. a -> StateT r Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (CppSrcCode a -> SrcState r a) -> CppSrcCode a -> SrcState r a
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode a -> CppSrcCode a
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode a
v1
sv1 = CppHdrCode a -> HdrState r a
forall a. a -> StateT r Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (CppHdrCode a -> HdrState r a) -> CppHdrCode a -> HdrState r a
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode a -> CppHdrCode a
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd p CppSrcCode CppHdrCode a
v1
pair1Val3Lists (srcf fv1) (hdrf sv1) stv2 stv3 stv45
pairVal2ListsVal :: (Pair p) => (SrcState r a -> [SrcState s b] ->
[SrcState t c] -> SrcState u d -> SrcState v e) -> (HdrState r a ->
[HdrState s b] -> [HdrState t c] -> HdrState u d -> HdrState v e) ->
PairState v p a -> [PairState v p b] -> [PairState v p c] -> PairState v p d
-> PairState v p e
pairVal2ListsVal :: forall (p :: (* -> *) -> (* -> *) -> * -> *) r a s b t c u d v e.
Pair p =>
(SrcState r a
-> [SrcState s b]
-> [SrcState t c]
-> SrcState u d
-> SrcState v e)
-> (HdrState r a
-> [HdrState s b]
-> [HdrState t c]
-> HdrState u d
-> HdrState v e)
-> PairState v p a
-> [PairState v p b]
-> [PairState v p c]
-> PairState v p d
-> PairState v p e
pairVal2ListsVal SrcState r a
-> [SrcState s b] -> [SrcState t c] -> SrcState u d -> SrcState v e
srcf HdrState r a
-> [HdrState s b] -> [HdrState t c] -> HdrState u d -> HdrState v e
hdrf PairState v p a
stv1 [PairState v p b]
stv2 [PairState v p c]
stv3 PairState v p d
stv4 = do
v1 <- PairState v p a
stv1
let fv1 = CppSrcCode a -> SrcState r a
forall a. a -> StateT r Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (CppSrcCode a -> SrcState r a) -> CppSrcCode a -> SrcState r a
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode a -> CppSrcCode a
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (a :: k).
Pair p =>
p x y a -> x a
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
pfst p CppSrcCode CppHdrCode a
v1
sv1 = CppHdrCode a -> HdrState r a
forall a. a -> StateT r Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (CppHdrCode a -> HdrState r a) -> CppHdrCode a -> HdrState r a
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode a -> CppHdrCode a
forall {k} (p :: (k -> *) -> (k -> *) -> k -> *) (x :: k -> *)
(y :: k -> *) (b :: k).
Pair p =>
p x y b -> y b
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
psnd p CppSrcCode CppHdrCode a
v1
pair2Lists1Val (srcf fv1) (hdrf sv1) stv2 stv3 stv4
newtype CppSrcCode a = CPPSC {forall a. CppSrcCode a -> a
unCPPSC :: a} deriving CppSrcCode a -> CppSrcCode a -> Bool
(CppSrcCode a -> CppSrcCode a -> Bool)
-> (CppSrcCode a -> CppSrcCode a -> Bool) -> Eq (CppSrcCode a)
forall a. Eq a => CppSrcCode a -> CppSrcCode a -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: forall a. Eq a => CppSrcCode a -> CppSrcCode a -> Bool
== :: CppSrcCode a -> CppSrcCode a -> Bool
$c/= :: forall a. Eq a => CppSrcCode a -> CppSrcCode a -> Bool
/= :: CppSrcCode a -> CppSrcCode a -> Bool
Eq
instance Functor CppSrcCode where
fmap :: forall a b. (a -> b) -> CppSrcCode a -> CppSrcCode b
fmap a -> b
f (CPPSC a
x) = b -> CppSrcCode b
forall a. a -> CppSrcCode a
CPPSC (a -> b
f a
x)
instance Applicative CppSrcCode where
pure :: forall a. a -> CppSrcCode a
pure = a -> CppSrcCode a
forall a. a -> CppSrcCode a
CPPSC
(CPPSC a -> b
f) <*> :: forall a b. CppSrcCode (a -> b) -> CppSrcCode a -> CppSrcCode b
<*> (CPPSC a
x) = b -> CppSrcCode b
forall a. a -> CppSrcCode a
CPPSC (a -> b
f a
x)
instance Monad CppSrcCode where
CPPSC a
x >>= :: forall a b. CppSrcCode a -> (a -> CppSrcCode b) -> CppSrcCode b
>>= a -> CppSrcCode b
f = a -> CppSrcCode b
f a
x
instance ProgramSym CppSrcCode ProgData FileData where
prog :: String
-> String
-> [FS (CppSrcCode FileData)]
-> GSProgram CppSrcCode ProgData
prog String
n String
st = ([CppSrcCode FileData] -> CppSrcCode ProgData)
-> [State GOOLState (CppSrcCode FileData)]
-> GSProgram CppSrcCode ProgData
forall a b s. ([a] -> b) -> [State s a] -> State s b
onStateList (([FileData] -> ProgData)
-> [CppSrcCode FileData] -> CppSrcCode ProgData
forall (m :: * -> *) a b. Monad m => ([a] -> b) -> [m a] -> m b
onCodeList (String -> String -> [FileData] -> ProgData
progD String
n String
st)) ([State GOOLState (CppSrcCode FileData)]
-> GSProgram CppSrcCode ProgData)
-> ([FS (CppSrcCode FileData)]
-> [State GOOLState (CppSrcCode FileData)])
-> [FS (CppSrcCode FileData)]
-> GSProgram CppSrcCode ProgData
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (FS (CppSrcCode FileData) -> State GOOLState (CppSrcCode FileData))
-> [FS (CppSrcCode FileData)]
-> [State GOOLState (CppSrcCode FileData)]
forall a b. (a -> b) -> [a] -> [b]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (LensLike'
(Zoomed (StateT FileState Identity) (CppSrcCode FileData))
GOOLState
FileState
-> FS (CppSrcCode FileData)
-> State GOOLState (CppSrcCode FileData)
forall c.
LensLike'
(Zoomed (StateT FileState Identity) c) GOOLState FileState
-> StateT FileState Identity c -> StateT GOOLState 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) (CppSrcCode FileData))
GOOLState
FileState
(FileState -> Focusing Identity (CppSrcCode FileData) FileState)
-> GOOLState -> Focusing Identity (CppSrcCode FileData) GOOLState
Lens' GOOLState FileState
lensGStoFS)
instance CommonRenderSym CppSrcCode MethodData (Doc, VisibilityTag) ParamData Body Block Statement Variable ScopeData Value BinderD TypeData
instance OORenderSym CppSrcCode FileData ModData Class StateVarData MethodData AttachmentData (Doc, VisibilityTag) ParamData Body Block Statement Variable ScopeData Value BinderD TypeData
instance UnRepr CppSrcCode contents where
unRepr :: CppSrcCode contents -> contents
unRepr = CppSrcCode contents -> contents
forall a. CppSrcCode a -> a
unCPPSC
instance FileSym CppSrcCode FileData ModData where
fileDoc :: SrcState FileState ModData -> FS (CppSrcCode FileData)
fileDoc SrcState FileState ModData
m = do
(FileState -> FileState) -> StateT FileState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (FileType -> FileState -> FileState
setFileType FileType
Source)
String
-> (CppSrcCode ModData -> CppSrcCode Doc)
-> CppSrcCode Doc
-> SrcState FileState ModData
-> FS (CppSrcCode FileData)
forall (r :: * -> *) block mod file.
(BlockElim r block, RenderMod r mod, RenderFile r file mod) =>
String
-> (r mod -> r block) -> r block -> FS (r mod) -> FS (r file)
G.fileDoc String
cppSrcExt CppSrcCode ModData -> CppSrcCode Doc
forall (r :: * -> *) file mod.
RenderFile r file mod =>
r mod -> r Doc
top CppSrcCode Doc
forall (r :: * -> *) file mod. RenderFile r file mod => r Doc
bottom SrcState FileState ModData
m
docMod :: String
-> String
-> [String]
-> String
-> FS (CppSrcCode FileData)
-> FS (CppSrcCode FileData)
docMod = String
-> String
-> String
-> [String]
-> String
-> FS (CppSrcCode FileData)
-> FS (CppSrcCode FileData)
forall (r :: * -> *) file mod.
(BlockCommentSym r, RenderFile r file mod) =>
String
-> String
-> String
-> [String]
-> String
-> FS (r file)
-> FS (r file)
CP.doxMod String
cppSrcExt
instance RenderFile CppSrcCode FileData ModData where
top :: CppSrcCode ModData -> CppSrcCode Doc
top CppSrcCode ModData
_ = Doc -> CppSrcCode Doc
forall (r :: * -> *) a. Monad r => a -> r a
toCode Doc
empty
bottom :: CppSrcCode Doc
bottom = Doc -> CppSrcCode Doc
forall (r :: * -> *) a. Monad r => a -> r a
toCode Doc
empty
commentedMod :: FS (CppSrcCode FileData)
-> SrcState FileState Doc -> FS (CppSrcCode FileData)
commentedMod = (Bool
-> CppSrcCode FileData -> CppSrcCode Doc -> CppSrcCode FileData)
-> State FileState Bool
-> FS (CppSrcCode FileData)
-> SrcState FileState Doc
-> FS (CppSrcCode FileData)
forall a b c d s.
(a -> b -> c -> d)
-> State s a -> State s b -> State s c -> State s d
on3StateValues (\Bool
mn CppSrcCode FileData
m CppSrcCode Doc
cmt -> if Bool
mn then (FileData -> Doc -> FileData)
-> CppSrcCode FileData -> CppSrcCode Doc -> CppSrcCode FileData
forall (r :: * -> *) a b c.
Applicative r =>
(a -> b -> c) -> r a -> r b -> r c
on2CodeValues
FileData -> Doc -> FileData
R.commentedMod CppSrcCode FileData
m CppSrcCode Doc
cmt else CppSrcCode FileData
m) State FileState Bool
getCurrMain
fileFromData :: String -> SrcState FileState ModData -> FS (CppSrcCode FileData)
fileFromData = (String -> CppSrcCode ModData -> CppSrcCode FileData)
-> String -> SrcState FileState ModData -> FS (CppSrcCode FileData)
forall {k} (r :: k -> *) (mod :: k) (file :: k).
ModuleElim r mod =>
(String -> r mod -> r file) -> String -> FS (r mod) -> FS (r file)
G.fileFromData ((ModData -> FileData) -> CppSrcCode ModData -> CppSrcCode FileData
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
onCodeValue ((ModData -> FileData)
-> CppSrcCode ModData -> CppSrcCode FileData)
-> (String -> ModData -> FileData)
-> String
-> CppSrcCode ModData
-> CppSrcCode FileData
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ModData -> FileData
fileD)
instance ImportSym CppSrcCode where
langImport :: String -> CppSrcCode Doc
langImport String
n = Doc -> CppSrcCode Doc
forall (r :: * -> *) a. Monad r => a -> r a
toCode (Doc -> CppSrcCode Doc) -> Doc -> CppSrcCode Doc
forall a b. (a -> b) -> a -> b
$ Doc
inc Doc -> Doc -> Doc
<+> Doc -> Doc
angles (String -> Doc
text String
n)
modImport :: String -> CppSrcCode Doc
modImport String
n = Doc -> CppSrcCode Doc
forall (r :: * -> *) a. Monad r => a -> r a
toCode (Doc -> CppSrcCode Doc) -> Doc -> CppSrcCode Doc
forall a b. (a -> b) -> a -> b
$ Doc
inc Doc -> Doc -> Doc
<+> String -> Doc
doubleQuotedText (String -> String -> String
addExt String
cppHdrExt
String
n)
instance AttachmentSym CppSrcCode AttachmentData where
classLevel :: CppSrcCode AttachmentData
classLevel = AttachmentData -> CppSrcCode AttachmentData
forall (r :: * -> *) a. Monad r => a -> r a
toCode (AttachmentData -> CppSrcCode AttachmentData)
-> AttachmentData -> CppSrcCode AttachmentData
forall a b. (a -> b) -> a -> b
$ AttachmentTag -> Doc -> AttachmentData
ad AttachmentTag
ClassLevel Doc
R.classLevel
instanceLevel :: CppSrcCode AttachmentData
instanceLevel = AttachmentData -> CppSrcCode AttachmentData
forall (r :: * -> *) a. Monad r => a -> r a
toCode (AttachmentData -> CppSrcCode AttachmentData)
-> AttachmentData -> CppSrcCode AttachmentData
forall a b. (a -> b) -> a -> b
$ AttachmentTag -> Doc -> AttachmentData
ad AttachmentTag
InstanceLevel Doc
R.instanceLevel
instance PermElim CppSrcCode AttachmentData where
perm :: CppSrcCode AttachmentData -> Doc
perm = AttachmentData -> Doc
attachmentDoc (AttachmentData -> Doc)
-> (CppSrcCode AttachmentData -> AttachmentData)
-> CppSrcCode AttachmentData
-> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppSrcCode AttachmentData -> AttachmentData
forall a. CppSrcCode a -> a
unCPPSC
binding :: CppSrcCode AttachmentData -> AttachmentTag
binding = AttachmentData -> AttachmentTag
attachment (AttachmentData -> AttachmentTag)
-> (CppSrcCode AttachmentData -> AttachmentData)
-> CppSrcCode AttachmentData
-> AttachmentTag
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppSrcCode AttachmentData -> AttachmentData
forall a. CppSrcCode a -> a
unCPPSC
instance BodySym CppSrcCode Body Block where
body :: [SrcState MethodState Doc] -> SrcState MethodState Doc
body = ([CppSrcCode Doc] -> CppSrcCode Doc)
-> [SrcState MethodState Doc] -> SrcState MethodState Doc
forall a b s. ([a] -> b) -> [State s a] -> State s b
onStateList (([Doc] -> Doc) -> [CppSrcCode Doc] -> CppSrcCode Doc
forall (m :: * -> *) a b. Monad m => ([a] -> b) -> [m a] -> m b
onCodeList [Doc] -> Doc
R.body)
addComments :: String -> SrcState MethodState Doc -> SrcState MethodState Doc
addComments String
s = (CppSrcCode Doc -> CppSrcCode Doc)
-> SrcState MethodState Doc -> SrcState MethodState Doc
forall a b s. (a -> b) -> State s a -> State s b
onStateValue ((Doc -> Doc) -> CppSrcCode Doc -> CppSrcCode Doc
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
onCodeValue (String -> Doc -> Doc -> Doc
R.addComments String
s Doc
commentStart))
instance RenderBody CppSrcCode Body where
multiBody :: [SrcState MethodState Doc] -> SrcState MethodState Doc
multiBody = [SrcState MethodState Doc] -> SrcState MethodState Doc
forall (r :: * -> *) bod.
(BodyElim r bod, Monad r) =>
[MS (r bod)] -> MS (r Doc)
G.multiBody
instance BodyElim CppSrcCode Body where
body :: CppSrcCode Doc -> Doc
body = CppSrcCode Doc -> Doc
forall a. CppSrcCode a -> a
unCPPSC
instance BlockSym CppSrcCode Block Statement where
block :: [SrcState MethodState Statement] -> SrcState MethodState Doc
block = [SrcState MethodState Statement] -> SrcState MethodState Doc
forall (r :: * -> *) stmt.
(Monad r, RenderStatement r stmt, StatementElim r stmt) =>
[MS (r stmt)] -> MS (r Doc)
G.block
instance RenderBlock CppSrcCode Block where
multiBlock :: [SrcState MethodState Doc] -> SrcState MethodState Doc
multiBlock = [SrcState MethodState Doc] -> SrcState MethodState Doc
forall (r :: * -> *) block.
(BlockElim r block, Monad r) =>
[MS (r block)] -> MS (r Doc)
G.multiBlock
instance BlockElim CppSrcCode Block where
block :: CppSrcCode Doc -> Doc
block = CppSrcCode Doc -> Doc
forall a. CppSrcCode a -> a
unCPPSC
instance TypeSym CppSrcCode TypeData where
bool :: State ValueState (CppSrcCode TypeData)
bool = State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). Monad r => VS (r TypeData)
cppBoolType
int :: State ValueState (CppSrcCode TypeData)
int = State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). Monad r => VS (r TypeData)
CP.int
float :: State ValueState (CppSrcCode TypeData)
float = State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). Monad r => VS (r TypeData)
C.float
double :: State ValueState (CppSrcCode TypeData)
double = State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). Monad r => VS (r TypeData)
C.double
char :: State ValueState (CppSrcCode TypeData)
char = State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). Monad r => VS (r TypeData)
C.char
string :: State ValueState (CppSrcCode TypeData)
string = do
(ValueState -> ValueState) -> StateT ValueState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (String -> ValueState -> ValueState
addUsing String
cppString (ValueState -> ValueState)
-> (ValueState -> ValueState) -> ValueState -> ValueState
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ValueState -> ValueState
addLangImportVS String
cppString)
State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). Monad r => VS (r TypeData)
CP.string
infile :: State ValueState (CppSrcCode TypeData)
infile = do
(ValueState -> ValueState) -> StateT ValueState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (String -> ValueState -> ValueState
addUsing String
cppInfile)
State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). Monad r => VS (r TypeData)
cppInfileType
outfile :: State ValueState (CppSrcCode TypeData)
outfile = do
(ValueState -> ValueState) -> StateT ValueState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (String -> ValueState -> ValueState
addUsing String
cppOutfile)
State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). Monad r => VS (r TypeData)
cppOutfileType
referenceType :: State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData)
referenceType = State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData)
forall (r :: * -> *).
(Monad r, TypeElim r TypeData, UnRepr r TypeData) =>
VS (r TypeData) -> VS (r TypeData)
cppReferenceType
listType :: State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData)
listType State ValueState (CppSrcCode TypeData)
t = do
(ValueState -> ValueState) -> StateT ValueState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (String -> ValueState -> ValueState
addUsing String
vector (ValueState -> ValueState)
-> (ValueState -> ValueState) -> ValueState -> ValueState
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ValueState -> ValueState
addLangImportVS String
vector)
String
-> State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData)
forall (r :: * -> *).
(Monad r, TypeElim r TypeData, UnRepr r TypeData) =>
String -> VS (r TypeData) -> VS (r TypeData)
C.listType String
vector State ValueState (CppSrcCode TypeData)
t
setType :: State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData)
setType State ValueState (CppSrcCode TypeData)
t = do
(ValueState -> ValueState) -> StateT ValueState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (String -> ValueState -> ValueState
addUsing String
cppSet (ValueState -> ValueState)
-> (ValueState -> ValueState) -> ValueState -> ValueState
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ValueState -> ValueState
addLangImportVS String
cppSet)
String
-> State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData)
forall (r :: * -> *).
(Monad r, TypeElim r TypeData, UnRepr r TypeData) =>
String -> VS (r TypeData) -> VS (r TypeData)
C.setType String
cppSet State ValueState (CppSrcCode TypeData)
t
arrayType :: State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData)
arrayType = State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k).
TypeSym r typ =>
VS (r typ) -> VS (r typ)
listType
innerType :: State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData)
innerType = State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k).
(TypeElim r typ, TypeSym r typ, OOTypeSym r typ) =>
VS (r typ) -> VS (r typ)
CG.innerType
funcType :: [State ValueState (CppSrcCode TypeData)]
-> State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData)
funcType = [State ValueState (CppSrcCode TypeData)]
-> State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData)
forall (r :: * -> *).
(Monad r, TypeElim r TypeData) =>
[VS (r TypeData)] -> VS (r TypeData) -> VS (r TypeData)
cppFuncType
void :: State ValueState (CppSrcCode TypeData)
void = State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). Monad r => VS (r TypeData)
C.void
instance TypeElim CppSrcCode TypeData where
getCodeType :: CppSrcCode TypeData -> CodeType
getCodeType = TypeData -> CodeType
cType (TypeData -> CodeType)
-> (CppSrcCode TypeData -> TypeData)
-> CppSrcCode TypeData
-> CodeType
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppSrcCode TypeData -> TypeData
forall a. CppSrcCode a -> a
unCPPSC
instance OOTypeSym CppSrcCode TypeData where
obj :: String -> State ValueState (CppSrcCode TypeData)
obj String
n = do
cn <- LensLike'
(Zoomed (StateT MethodState Identity) String)
ValueState
MethodState
-> StateT MethodState Identity String
-> StateT ValueState Identity String
forall c.
LensLike'
(Zoomed (StateT MethodState Identity) c) ValueState MethodState
-> StateT MethodState Identity c -> StateT ValueState 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 MethodState Identity) String)
ValueState
MethodState
(MethodState -> Focusing Identity String MethodState)
-> ValueState -> Focusing Identity String ValueState
Lens' ValueState MethodState
lensVStoMS StateT MethodState Identity String
getClassName
if cn == n then G.obj n else
getClassMap >>= (\Map String String
cm -> (State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData))
-> (String
-> State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData))
-> Maybe String
-> State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData)
forall b a. b -> (a -> b) -> Maybe a -> b
maybe State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData)
forall a. a -> a
id (StateT ValueState Identity ()
-> State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData)
forall a b.
StateT ValueState Identity a
-> StateT ValueState Identity b -> StateT ValueState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
(>>) (StateT ValueState Identity ()
-> State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData))
-> (String -> StateT ValueState Identity ())
-> String
-> State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ValueState -> ValueState) -> StateT ValueState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify ((ValueState -> ValueState) -> StateT ValueState Identity ())
-> (String -> ValueState -> ValueState)
-> String
-> StateT ValueState Identity ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ValueState -> ValueState
addModuleImportVS)
(String -> Map String String -> Maybe String
forall k a. Ord k => k -> Map k a -> Maybe a
Map.lookup String
n Map String String
cm) (String -> State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). Monad r => String -> VS (r TypeData)
G.obj String
n))
instance RenderType CppSrcCode TypeData where
multiType :: [State ValueState (CppSrcCode TypeData)]
-> State ValueState (CppSrcCode TypeData)
multiType [State ValueState (CppSrcCode TypeData)]
_ = String -> State ValueState (CppSrcCode TypeData)
forall a. HasCallStack => String -> a
error (String -> State ValueState (CppSrcCode TypeData))
-> String -> State ValueState (CppSrcCode TypeData)
forall a b. (a -> b) -> a -> b
$ String -> String
C.multiTypeError String
cppName
instance UnaryOpSym CppSrcCode where
notOp :: State ValueState (CppSrcCode OpData)
notOp = State ValueState (CppSrcCode OpData)
forall (r :: * -> *). Monad r => VSOp r
C.notOp
negateOp :: State ValueState (CppSrcCode OpData)
negateOp = State ValueState (CppSrcCode OpData)
forall (r :: * -> *). Monad r => VSOp r
G.negateOp
sqrtOp :: State ValueState (CppSrcCode OpData)
sqrtOp = State ValueState (CppSrcCode OpData)
forall (r :: * -> *). Monad r => VSOp r
cppSqrtOp
absOp :: State ValueState (CppSrcCode OpData)
absOp = State ValueState (CppSrcCode OpData)
forall (r :: * -> *). Monad r => VSOp r
cppAbsOp
logOp :: State ValueState (CppSrcCode OpData)
logOp = State ValueState (CppSrcCode OpData)
forall (r :: * -> *). Monad r => VSOp r
cppLogOp
lnOp :: State ValueState (CppSrcCode OpData)
lnOp = State ValueState (CppSrcCode OpData)
forall (r :: * -> *). Monad r => VSOp r
cppLnOp
expOp :: State ValueState (CppSrcCode OpData)
expOp = State ValueState (CppSrcCode OpData)
forall (r :: * -> *). Monad r => VSOp r
cppExpOp
sinOp :: State ValueState (CppSrcCode OpData)
sinOp = State ValueState (CppSrcCode OpData)
forall (r :: * -> *). Monad r => VSOp r
cppSinOp
cosOp :: State ValueState (CppSrcCode OpData)
cosOp = State ValueState (CppSrcCode OpData)
forall (r :: * -> *). Monad r => VSOp r
cppCosOp
tanOp :: State ValueState (CppSrcCode OpData)
tanOp = State ValueState (CppSrcCode OpData)
forall (r :: * -> *). Monad r => VSOp r
cppTanOp
asinOp :: State ValueState (CppSrcCode OpData)
asinOp = State ValueState (CppSrcCode OpData)
forall (r :: * -> *). Monad r => VSOp r
cppAsinOp
acosOp :: State ValueState (CppSrcCode OpData)
acosOp = State ValueState (CppSrcCode OpData)
forall (r :: * -> *). Monad r => VSOp r
cppAcosOp
atanOp :: State ValueState (CppSrcCode OpData)
atanOp = State ValueState (CppSrcCode OpData)
forall (r :: * -> *). Monad r => VSOp r
cppAtanOp
floorOp :: State ValueState (CppSrcCode OpData)
floorOp = State ValueState (CppSrcCode OpData)
forall (r :: * -> *). Monad r => VSOp r
cppFloorOp
ceilOp :: State ValueState (CppSrcCode OpData)
ceilOp = State ValueState (CppSrcCode OpData)
forall (r :: * -> *). Monad r => VSOp r
cppCeilOp
instance BinaryOpSym CppSrcCode where
equalOp :: State ValueState (CppSrcCode OpData)
equalOp = State ValueState (CppSrcCode OpData)
forall (r :: * -> *). Monad r => VSOp r
G.equalOp
notEqualOp :: State ValueState (CppSrcCode OpData)
notEqualOp = State ValueState (CppSrcCode OpData)
forall (r :: * -> *). Monad r => VSOp r
G.notEqualOp
greaterOp :: State ValueState (CppSrcCode OpData)
greaterOp = State ValueState (CppSrcCode OpData)
forall (r :: * -> *). Monad r => VSOp r
G.greaterOp
greaterEqualOp :: State ValueState (CppSrcCode OpData)
greaterEqualOp = State ValueState (CppSrcCode OpData)
forall (r :: * -> *). Monad r => VSOp r
G.greaterEqualOp
lessOp :: State ValueState (CppSrcCode OpData)
lessOp = State ValueState (CppSrcCode OpData)
forall (r :: * -> *). Monad r => VSOp r
G.lessOp
lessEqualOp :: State ValueState (CppSrcCode OpData)
lessEqualOp = State ValueState (CppSrcCode OpData)
forall (r :: * -> *). Monad r => VSOp r
G.lessEqualOp
plusOp :: State ValueState (CppSrcCode OpData)
plusOp = State ValueState (CppSrcCode OpData)
forall (r :: * -> *). Monad r => VSOp r
G.plusOp
minusOp :: State ValueState (CppSrcCode OpData)
minusOp = State ValueState (CppSrcCode OpData)
forall (r :: * -> *). Monad r => VSOp r
G.minusOp
multOp :: State ValueState (CppSrcCode OpData)
multOp = State ValueState (CppSrcCode OpData)
forall (r :: * -> *). Monad r => VSOp r
G.multOp
divideOp :: State ValueState (CppSrcCode OpData)
divideOp = State ValueState (CppSrcCode OpData)
forall (r :: * -> *). Monad r => VSOp r
G.divideOp
powerOp :: State ValueState (CppSrcCode OpData)
powerOp = State ValueState (CppSrcCode OpData)
-> State ValueState (CppSrcCode OpData)
forall a. VS a -> VS a
addMathHImport State ValueState (CppSrcCode OpData)
forall (r :: * -> *). Monad r => VSOp r
cppPowerOp
moduloOp :: State ValueState (CppSrcCode OpData)
moduloOp = State ValueState (CppSrcCode OpData)
forall (r :: * -> *). Monad r => VSOp r
G.moduloOp
andOp :: State ValueState (CppSrcCode OpData)
andOp = State ValueState (CppSrcCode OpData)
forall (r :: * -> *). Monad r => VSOp r
C.andOp
orOp :: State ValueState (CppSrcCode OpData)
orOp = State ValueState (CppSrcCode OpData)
forall (r :: * -> *). Monad r => VSOp r
C.orOp
instance OpElim CppSrcCode where
uOp :: CppSrcCode OpData -> Doc
uOp = OpData -> Doc
opDoc (OpData -> Doc)
-> (CppSrcCode OpData -> OpData) -> CppSrcCode OpData -> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppSrcCode OpData -> OpData
forall a. CppSrcCode a -> a
unCPPSC
bOp :: CppSrcCode OpData -> Doc
bOp = OpData -> Doc
opDoc (OpData -> Doc)
-> (CppSrcCode OpData -> OpData) -> CppSrcCode OpData -> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppSrcCode OpData -> OpData
forall a. CppSrcCode a -> a
unCPPSC
uOpPrec :: CppSrcCode OpData -> Int
uOpPrec = OpData -> Int
opPrec (OpData -> Int)
-> (CppSrcCode OpData -> OpData) -> CppSrcCode OpData -> Int
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppSrcCode OpData -> OpData
forall a. CppSrcCode a -> a
unCPPSC
bOpPrec :: CppSrcCode OpData -> Int
bOpPrec = OpData -> Int
opPrec (OpData -> Int)
-> (CppSrcCode OpData -> OpData) -> CppSrcCode OpData -> Int
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppSrcCode OpData -> OpData
forall a. CppSrcCode a -> a
unCPPSC
instance ScopeSym CppSrcCode ScopeData where
global :: CppSrcCode ScopeData
global = CppSrcCode ScopeData
forall (r :: * -> *). Monad r => r ScopeData
CP.global
mainFn :: CppSrcCode ScopeData
mainFn = CppSrcCode ScopeData
forall {k} (r :: k -> *) (scope :: k). ScopeSym r scope => r scope
local
local :: CppSrcCode ScopeData
local = CppSrcCode ScopeData
forall (r :: * -> *). Monad r => r ScopeData
G.local
instance ScopeElim CppSrcCode ScopeData where
scopeData :: CppSrcCode ScopeData -> ScopeData
scopeData = CppSrcCode ScopeData -> ScopeData
forall a. CppSrcCode a -> a
unCPPSC
instance VariableSym CppSrcCode Variable TypeData where
var :: String
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable
var = String
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable
forall {k} (r :: k -> *) (var :: k) (typ :: k).
RenderVariable r var typ =>
String -> VS (r typ) -> VS (r var)
G.var
constant :: String
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable
constant = String
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable
forall {k} (r :: k -> *) (var :: k) (typ :: k).
VariableSym r var typ =>
String -> VS (r typ) -> VS (r var)
var
extVar :: String
-> String
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable
extVar String
l String
n State ValueState (CppSrcCode TypeData)
t = (ValueState -> ValueState) -> StateT ValueState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (String -> ValueState -> ValueState
addModuleImportVS String
l) StateT ValueState Identity ()
-> SrcState ValueState Variable -> SrcState ValueState Variable
forall a b.
StateT ValueState Identity a
-> StateT ValueState Identity b -> StateT ValueState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> String
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable
forall {k} (r :: k -> *) (var :: k) (typ :: k).
VariableSym r var typ =>
String -> VS (r typ) -> VS (r var)
var String
n State ValueState (CppSrcCode TypeData)
t
instance OOVariableSym CppSrcCode Variable Value TypeData where
classVar :: String
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable
classVar = String
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable
forall {k} (r :: k -> *) (var :: k) (typ :: k).
RenderVariable r var typ =>
String -> VS (r typ) -> VS (r var)
G.classVar
classConst :: String
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable
classConst = String
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
OOVariableSym r var val typ =>
String -> VS (r typ) -> VS (r var)
classVar
classVarAccess :: State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable -> SrcState ValueState Variable
classVarAccess State ValueState (CppSrcCode TypeData)
c' SrcState ValueState Variable
v'= do
c <- State ValueState (CppSrcCode TypeData)
c'
v <- v'
vfd <- varFromData
(variableBind v) (getTypeString c `nmSpcAccess` variableName v)
(toState $ variableType v) (cppClassVarAccess (renderType c) (RC.variable v))
toState $ classVarAccessCheck vfd
extClassVarAccess :: State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable -> SrcState ValueState Variable
extClassVarAccess State ValueState (CppSrcCode TypeData)
c SrcState ValueState Variable
v = do
t <- State ValueState (CppSrcCode TypeData)
c
cm <- getClassMap
maybe id ((>>) . modify . addModuleImportVS)
(Map.lookup (getTypeString t) cm) $ classVarAccess (pure t) v
instanceVarAccess :: VS (CppSrcCode Value)
-> SrcState ValueState Variable -> SrcState ValueState Variable
instanceVarAccess VS (CppSrcCode Value)
ob SrcState ValueState Variable
vr = do
ob' <- VS (CppSrcCode Value)
ob
vr' <- vr
let objTp = TypeData -> CodeType
cType (TypeData -> CodeType) -> TypeData -> CodeType
forall a b. (a -> b) -> a -> b
$ CppSrcCode TypeData -> TypeData
forall (repr :: * -> *) contents.
UnRepr repr contents =>
repr contents -> contents
unRepr (CppSrcCode TypeData -> TypeData)
-> CppSrcCode TypeData -> TypeData
forall a b. (a -> b) -> a -> b
$ CppSrcCode Value -> CppSrcCode TypeData
forall {k} (r :: k -> *) (val :: k) (typ :: k).
ValueSym r val typ =>
r val -> r typ
valueType CppSrcCode Value
ob'
case objTp of
(Reference CodeType
_) -> let
instanceVarAccess' :: AttachmentTag -> SrcState ValueState Variable
instanceVarAccess' AttachmentTag
ClassLevel = String -> SrcState ValueState Variable
forall a. HasCallStack => String -> a
error
String
"Cannot access class-level variables through an object, use classVarAccess instead"
instanceVarAccess' AttachmentTag
InstanceLevel = String
-> CppSrcCode TypeData -> Doc -> SrcState ValueState Variable
forall {k} (r :: k -> *) (var :: k) (typ :: k).
RenderVariable r var typ =>
String -> r typ -> Doc -> VS (r var)
mkVar
(Doc -> String
render (CppSrcCode Value -> Doc
forall {k} (r :: k -> *) (val :: k).
ValueElim r val =>
r val -> Doc
RC.value CppSrcCode Value
ob') String -> String -> String
forall a. Semigroup a => a -> a -> a
P.<> String
ptrAccess String -> String -> String
forall a. Semigroup a => a -> a -> a
P.<> CppSrcCode Variable -> String
forall {k} (r :: k -> *) (var :: k) (typ :: k).
VariableElim r var typ =>
r var -> String
variableName CppSrcCode Variable
vr')
(CppSrcCode Variable -> CppSrcCode TypeData
forall {k} (r :: k -> *) (var :: k) (typ :: k).
VariableElim r var typ =>
r var -> r typ
variableType CppSrcCode Variable
vr') (CppSrcCode Value -> Doc
forall {k} (r :: k -> *) (val :: k).
ValueElim r val =>
r val -> Doc
RC.value CppSrcCode Value
ob' Doc -> Doc -> Doc
<> Doc
ptrAccess' Doc -> Doc -> Doc
<> CppSrcCode Variable -> Doc
forall {k} (r :: k -> *) (var :: k).
InternalVarElim r var =>
r var -> Doc
RC.variable CppSrcCode Variable
vr')
in AttachmentTag -> SrcState ValueState Variable
instanceVarAccess' (CppSrcCode Variable -> AttachmentTag
forall {k} (r :: k -> *) (var :: k).
InternalVarElim r var =>
r var -> AttachmentTag
variableBind CppSrcCode Variable
vr')
CodeType
_ -> VS (CppSrcCode Value)
-> SrcState ValueState Variable -> SrcState ValueState Variable
forall {k} (r :: k -> *) (var :: k) (typ :: k) (val :: k).
(InternalVarElim r var, RenderVariable r var typ, ValueElim r val,
VariableElim r var typ) =>
VS (r val) -> VS (r var) -> VS (r var)
G.instanceVarAccess VS (CppSrcCode Value)
ob SrcState ValueState Variable
vr
instance SelfSym CppSrcCode Variable where
self :: SrcState ValueState Variable
self = do
l <- LensLike'
(Zoomed (StateT MethodState Identity) String)
ValueState
MethodState
-> StateT MethodState Identity String
-> StateT ValueState Identity String
forall c.
LensLike'
(Zoomed (StateT MethodState Identity) c) ValueState MethodState
-> StateT MethodState Identity c -> StateT ValueState 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 MethodState Identity) String)
ValueState
MethodState
(MethodState -> Focusing Identity String MethodState)
-> ValueState -> Focusing Identity String ValueState
Lens' ValueState MethodState
lensVStoMS StateT MethodState Identity String
getClassName
mkStateVar R.this (referenceType $ obj l) R.this'
instance VariableElim CppSrcCode Variable TypeData where
variableName :: CppSrcCode Variable -> String
variableName = Variable -> String
varName (Variable -> String)
-> (CppSrcCode Variable -> Variable)
-> CppSrcCode Variable
-> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppSrcCode Variable -> Variable
forall a. CppSrcCode a -> a
unCPPSC
variableType :: CppSrcCode Variable -> CppSrcCode TypeData
variableType = (Variable -> TypeData)
-> CppSrcCode Variable -> CppSrcCode TypeData
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
onCodeValue Variable -> TypeData
varType
instance InternalVarElim CppSrcCode Variable where
variableBind :: CppSrcCode Variable -> AttachmentTag
variableBind = Variable -> AttachmentTag
varBind (Variable -> AttachmentTag)
-> (CppSrcCode Variable -> Variable)
-> CppSrcCode Variable
-> AttachmentTag
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppSrcCode Variable -> Variable
forall a. CppSrcCode a -> a
unCPPSC
variable :: CppSrcCode Variable -> Doc
variable = Variable -> Doc
varDoc (Variable -> Doc)
-> (CppSrcCode Variable -> Variable) -> CppSrcCode Variable -> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppSrcCode Variable -> Variable
forall a. CppSrcCode a -> a
unCPPSC
instance RenderVariable CppSrcCode Variable TypeData where
varFromData :: AttachmentTag
-> String
-> State ValueState (CppSrcCode TypeData)
-> Doc
-> SrcState ValueState Variable
varFromData AttachmentTag
b String
n State ValueState (CppSrcCode TypeData)
t' Doc
d = do
t <- State ValueState (CppSrcCode TypeData)
t'
toState $ on2CodeValues (vard b n) t (toCode d)
instance ValueSym CppSrcCode Value TypeData where
valueType :: CppSrcCode Value -> CppSrcCode TypeData
valueType = (Value -> TypeData) -> CppSrcCode Value -> CppSrcCode TypeData
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
onCodeValue Value -> TypeData
valType
instance Argument CppSrcCode Value where
pointerArg :: VS (CppSrcCode Value) -> VS (CppSrcCode Value)
pointerArg = VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall a. a -> a
id
instance Literal CppSrcCode Value TypeData where
litTrue :: VS (CppSrcCode Value)
litTrue = VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
(RenderValue r var val typ, TypeSym r typ) =>
VS (r val)
C.litTrue
litFalse :: VS (CppSrcCode Value)
litFalse = VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
(RenderValue r var val typ, TypeSym r typ) =>
VS (r val)
C.litFalse
litChar :: Char -> VS (CppSrcCode Value)
litChar = (Doc -> Doc) -> Char -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
(RenderValue r var val typ, TypeSym r typ) =>
(Doc -> Doc) -> Char -> VS (r val)
G.litChar Doc -> Doc
quotes
litDouble :: Double -> VS (CppSrcCode Value)
litDouble = Double -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
(RenderValue r var val typ, TypeSym r typ) =>
Double -> VS (r val)
G.litDouble
litFloat :: Float -> VS (CppSrcCode Value)
litFloat = Float -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
(RenderValue r var val typ, TypeSym r typ) =>
Float -> VS (r val)
C.litFloat
litInt :: Integer -> VS (CppSrcCode Value)
litInt = Integer -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
(RenderValue r var val typ, TypeSym r typ) =>
Integer -> VS (r val)
G.litInt
litString :: String -> VS (CppSrcCode Value)
litString = String -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
(RenderValue r var val typ, TypeSym r typ) =>
String -> VS (r val)
G.litString
litArray :: State ValueState (CppSrcCode TypeData)
-> [VS (CppSrcCode Value)] -> VS (CppSrcCode Value)
litArray = (Doc -> Doc)
-> State ValueState (CppSrcCode TypeData)
-> [VS (CppSrcCode Value)]
-> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
(RenderValue r var val typ, TypeSym r typ, ValueElim r val) =>
(Doc -> Doc) -> VS (r typ) -> [VS (r val)] -> VS (r val)
CP.litArray Doc -> Doc
braces
litSet :: State ValueState (CppSrcCode TypeData)
-> [VS (CppSrcCode Value)] -> VS (CppSrcCode Value)
litSet = (State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData))
-> State ValueState (CppSrcCode TypeData)
-> [VS (CppSrcCode Value)]
-> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
(RenderValue r var val typ, ValueElim r val) =>
(VS (r typ) -> VS (r typ))
-> VS (r typ) -> [VS (r val)] -> VS (r val)
cppLitSet State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k).
TypeSym r typ =>
VS (r typ) -> VS (r typ)
setType
litList :: State ValueState (CppSrcCode TypeData)
-> [VS (CppSrcCode Value)] -> VS (CppSrcCode Value)
litList = (Doc -> Doc)
-> State ValueState (CppSrcCode TypeData)
-> [VS (CppSrcCode Value)]
-> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
(RenderValue r var val typ, TypeSym r typ, ValueElim r val) =>
(Doc -> Doc) -> VS (r typ) -> [VS (r val)] -> VS (r val)
CP.litArray Doc -> Doc
braces
instance MathConstant CppSrcCode Value where
pi :: VS (CppSrcCode Value)
pi = do
(ValueState -> ValueState) -> StateT ValueState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (String -> ValueState -> ValueState
addDefine String
mathDefines)
VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall a. VS a -> VS a
addMathHImport (State ValueState (CppSrcCode TypeData)
-> Doc -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
double Doc
cppPi)
instance VariableValue CppSrcCode Variable Value where
valueOf :: SrcState ValueState Variable -> VS (CppSrcCode Value)
valueOf = SrcState ValueState Variable -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
(InternalVarElim r var, RenderValue r var val typ,
VariableElim r var typ) =>
VS (r var) -> VS (r val)
G.valueOf
instance CommandLineArgs CppSrcCode Value where
arg :: Integer -> VS (CppSrcCode Value)
arg Integer
n = VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
(RenderValue r var val typ, TypeSym r typ, ValueElim r val) =>
VS (r val) -> VS (r val) -> VS (r val)
G.arg (Integer -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k) (typ :: k).
Literal r val typ =>
Integer -> VS (r val)
litInt (Integer -> VS (CppSrcCode Value))
-> Integer -> VS (CppSrcCode Value)
forall a b. (a -> b) -> a -> b
$ Integer
nInteger -> Integer -> Integer
forall a. Num a => a -> a -> a
+Integer
1) VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
CommandLineArgs r val =>
VS (r val)
argsList
argsList :: VS (CppSrcCode Value)
argsList = State ValueState (CppSrcCode TypeData)
-> Doc -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). Monad r => VS (r TypeData)
argvType (String -> Doc
text String
argv)
argExists :: Integer -> VS (CppSrcCode Value)
argExists Integer
i = VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
List r val =>
VS (r val) -> VS (r val)
listSize VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
CommandLineArgs r val =>
VS (r val)
argsList VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
Comparison r val =>
VS (r val) -> VS (r val) -> VS (r val)
?> Integer -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k) (typ :: k).
Literal r val typ =>
Integer -> VS (r val)
litInt (Integer -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Integer -> Integer) -> Integer -> Integer
forall a b. (a -> b) -> a -> b
$ Integer
iInteger -> Integer -> Integer
forall a. Num a => a -> a -> a
+Integer
1)
instance NumericExpression CppSrcCode Value where
#~ :: VS (CppSrcCode Value) -> VS (CppSrcCode Value)
(#~) = State ValueState (CppSrcCode OpData)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall (r :: * -> *) var val typ.
(OpElim r, RenderValue r var val typ, ValueElim r val,
ValueSym r val typ) =>
VSUnOp r -> VS (r val) -> VS (r val)
unExpr' State ValueState (CppSrcCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
negateOp
#/^ :: VS (CppSrcCode Value) -> VS (CppSrcCode Value)
(#/^) = State ValueState (CppSrcCode OpData)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall (r :: * -> *) var val typ.
(OpElim r, RenderValue r var val typ, ValueElim r val,
ValueSym r val typ) =>
VSUnOp r -> VS (r val) -> VS (r val)
unExpr State ValueState (CppSrcCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
sqrtOp
#| :: VS (CppSrcCode Value) -> VS (CppSrcCode Value)
(#|) = State ValueState (CppSrcCode OpData)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall (r :: * -> *) var val typ.
(OpElim r, RenderValue r var val typ, ValueElim r val,
ValueSym r val typ) =>
VSUnOp r -> VS (r val) -> VS (r val)
unExpr State ValueState (CppSrcCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
absOp
#+ :: VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
(#+) = State ValueState (CppSrcCode OpData)
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
forall (r :: * -> *) var val typ.
(OpElim r, RenderValue r var val typ, TypeElim r typ,
ValueElim r val, ValueSym r val typ) =>
VSBinOp r -> VS (r val) -> VS (r val) -> VS (r val)
binExpr State ValueState (CppSrcCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
plusOp
#- :: VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
(#-) = State ValueState (CppSrcCode OpData)
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
forall (r :: * -> *) var val typ.
(OpElim r, RenderValue r var val typ, TypeElim r typ,
ValueElim r val, ValueSym r val typ) =>
VSBinOp r -> VS (r val) -> VS (r val) -> VS (r val)
binExpr State ValueState (CppSrcCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
minusOp
#* :: VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
(#*) = State ValueState (CppSrcCode OpData)
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
forall (r :: * -> *) var val typ.
(OpElim r, RenderValue r var val typ, TypeElim r typ,
ValueElim r val, ValueSym r val typ) =>
VSBinOp r -> VS (r val) -> VS (r val) -> VS (r val)
binExpr State ValueState (CppSrcCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
multOp
#/ :: VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
(#/) = State ValueState (CppSrcCode OpData)
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
forall (r :: * -> *) var val typ.
(OpElim r, RenderValue r var val typ, TypeElim r typ,
ValueElim r val, ValueSym r val typ) =>
VSBinOp r -> VS (r val) -> VS (r val) -> VS (r val)
binExpr State ValueState (CppSrcCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
divideOp
#% :: VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
(#%) = State ValueState (CppSrcCode OpData)
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
forall (r :: * -> *) var val typ.
(OpElim r, RenderValue r var val typ, TypeElim r typ,
ValueElim r val, ValueSym r val typ) =>
VSBinOp r -> VS (r val) -> VS (r val) -> VS (r val)
binExpr State ValueState (CppSrcCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
moduloOp
#^ :: VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
(#^) = State ValueState (CppSrcCode OpData)
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
forall (r :: * -> *) var val typ.
(OpElim r, RenderValue r var val typ, TypeElim r typ,
ValueElim r val, ValueSym r val typ) =>
VSBinOp r -> VS (r val) -> VS (r val) -> VS (r val)
binExpr' State ValueState (CppSrcCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
powerOp
log :: VS (CppSrcCode Value) -> VS (CppSrcCode Value)
log = State ValueState (CppSrcCode OpData)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall (r :: * -> *) var val typ.
(OpElim r, RenderValue r var val typ, ValueElim r val,
ValueSym r val typ) =>
VSUnOp r -> VS (r val) -> VS (r val)
unExpr State ValueState (CppSrcCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
logOp
ln :: VS (CppSrcCode Value) -> VS (CppSrcCode Value)
ln = State ValueState (CppSrcCode OpData)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall (r :: * -> *) var val typ.
(OpElim r, RenderValue r var val typ, ValueElim r val,
ValueSym r val typ) =>
VSUnOp r -> VS (r val) -> VS (r val)
unExpr State ValueState (CppSrcCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
lnOp
exp :: VS (CppSrcCode Value) -> VS (CppSrcCode Value)
exp = State ValueState (CppSrcCode OpData)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall (r :: * -> *) var val typ.
(OpElim r, RenderValue r var val typ, ValueElim r val,
ValueSym r val typ) =>
VSUnOp r -> VS (r val) -> VS (r val)
unExpr State ValueState (CppSrcCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
expOp
sin :: VS (CppSrcCode Value) -> VS (CppSrcCode Value)
sin = State ValueState (CppSrcCode OpData)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall (r :: * -> *) var val typ.
(OpElim r, RenderValue r var val typ, ValueElim r val,
ValueSym r val typ) =>
VSUnOp r -> VS (r val) -> VS (r val)
unExpr State ValueState (CppSrcCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
sinOp
cos :: VS (CppSrcCode Value) -> VS (CppSrcCode Value)
cos = State ValueState (CppSrcCode OpData)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall (r :: * -> *) var val typ.
(OpElim r, RenderValue r var val typ, ValueElim r val,
ValueSym r val typ) =>
VSUnOp r -> VS (r val) -> VS (r val)
unExpr State ValueState (CppSrcCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
cosOp
tan :: VS (CppSrcCode Value) -> VS (CppSrcCode Value)
tan = State ValueState (CppSrcCode OpData)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall (r :: * -> *) var val typ.
(OpElim r, RenderValue r var val typ, ValueElim r val,
ValueSym r val typ) =>
VSUnOp r -> VS (r val) -> VS (r val)
unExpr State ValueState (CppSrcCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
tanOp
csc :: VS (CppSrcCode Value) -> VS (CppSrcCode Value)
csc = VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k) (typ :: k).
(ValueSym r val typ, Literal r val typ, NumericExpression r val,
TypeElim r typ) =>
VS (r val) -> VS (r val)
G.csc
sec :: VS (CppSrcCode Value) -> VS (CppSrcCode Value)
sec = VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k) (typ :: k).
(ValueSym r val typ, Literal r val typ, NumericExpression r val,
TypeElim r typ) =>
VS (r val) -> VS (r val)
G.sec
cot :: VS (CppSrcCode Value) -> VS (CppSrcCode Value)
cot = VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k) (typ :: k).
(ValueSym r val typ, Literal r val typ, NumericExpression r val,
TypeElim r typ) =>
VS (r val) -> VS (r val)
G.cot
arcsin :: VS (CppSrcCode Value) -> VS (CppSrcCode Value)
arcsin = State ValueState (CppSrcCode OpData)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall (r :: * -> *) var val typ.
(OpElim r, RenderValue r var val typ, ValueElim r val,
ValueSym r val typ) =>
VSUnOp r -> VS (r val) -> VS (r val)
unExpr State ValueState (CppSrcCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
asinOp
arccos :: VS (CppSrcCode Value) -> VS (CppSrcCode Value)
arccos = State ValueState (CppSrcCode OpData)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall (r :: * -> *) var val typ.
(OpElim r, RenderValue r var val typ, ValueElim r val,
ValueSym r val typ) =>
VSUnOp r -> VS (r val) -> VS (r val)
unExpr State ValueState (CppSrcCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
acosOp
arctan :: VS (CppSrcCode Value) -> VS (CppSrcCode Value)
arctan = State ValueState (CppSrcCode OpData)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall (r :: * -> *) var val typ.
(OpElim r, RenderValue r var val typ, ValueElim r val,
ValueSym r val typ) =>
VSUnOp r -> VS (r val) -> VS (r val)
unExpr State ValueState (CppSrcCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
atanOp
floor :: VS (CppSrcCode Value) -> VS (CppSrcCode Value)
floor = State ValueState (CppSrcCode OpData)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall (r :: * -> *) var val typ.
(OpElim r, RenderValue r var val typ, ValueElim r val,
ValueSym r val typ) =>
VSUnOp r -> VS (r val) -> VS (r val)
unExpr State ValueState (CppSrcCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
floorOp
ceil :: VS (CppSrcCode Value) -> VS (CppSrcCode Value)
ceil = State ValueState (CppSrcCode OpData)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall (r :: * -> *) var val typ.
(OpElim r, RenderValue r var val typ, ValueElim r val,
ValueSym r val typ) =>
VSUnOp r -> VS (r val) -> VS (r val)
unExpr State ValueState (CppSrcCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
ceilOp
instance BooleanExpression CppSrcCode Value where
?! :: VS (CppSrcCode Value) -> VS (CppSrcCode Value)
(?!) = State ValueState (CppSrcCode OpData)
-> State ValueState (CppSrcCode TypeData)
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
forall (r :: * -> *) var val typ.
(OpElim r, RenderValue r var val typ, ValueElim r val) =>
VSUnOp r -> VS (r typ) -> VS (r val) -> VS (r val)
typeUnExpr State ValueState (CppSrcCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
notOp State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
bool
?&& :: VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
(?&&) = State ValueState (CppSrcCode OpData)
-> State ValueState (CppSrcCode TypeData)
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
forall (r :: * -> *) var val typ.
(OpElim r, RenderValue r var val typ, ValueElim r val) =>
VSBinOp r -> VS (r typ) -> VS (r val) -> VS (r val) -> VS (r val)
typeBinExpr State ValueState (CppSrcCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
andOp State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
bool
?|| :: VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
(?||) = State ValueState (CppSrcCode OpData)
-> State ValueState (CppSrcCode TypeData)
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
forall (r :: * -> *) var val typ.
(OpElim r, RenderValue r var val typ, ValueElim r val) =>
VSBinOp r -> VS (r typ) -> VS (r val) -> VS (r val) -> VS (r val)
typeBinExpr State ValueState (CppSrcCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
orOp State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
bool
instance Comparison CppSrcCode Value where
?< :: VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
(?<) = State ValueState (CppSrcCode OpData)
-> State ValueState (CppSrcCode TypeData)
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
forall (r :: * -> *) var val typ.
(OpElim r, RenderValue r var val typ, ValueElim r val) =>
VSBinOp r -> VS (r typ) -> VS (r val) -> VS (r val) -> VS (r val)
typeBinExpr State ValueState (CppSrcCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
lessOp State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
bool
?<= :: VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
(?<=) = State ValueState (CppSrcCode OpData)
-> State ValueState (CppSrcCode TypeData)
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
forall (r :: * -> *) var val typ.
(OpElim r, RenderValue r var val typ, ValueElim r val) =>
VSBinOp r -> VS (r typ) -> VS (r val) -> VS (r val) -> VS (r val)
typeBinExpr State ValueState (CppSrcCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
lessEqualOp State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
bool
?> :: VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
(?>) = State ValueState (CppSrcCode OpData)
-> State ValueState (CppSrcCode TypeData)
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
forall (r :: * -> *) var val typ.
(OpElim r, RenderValue r var val typ, ValueElim r val) =>
VSBinOp r -> VS (r typ) -> VS (r val) -> VS (r val) -> VS (r val)
typeBinExpr State ValueState (CppSrcCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
greaterOp State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
bool
?>= :: VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
(?>=) = State ValueState (CppSrcCode OpData)
-> State ValueState (CppSrcCode TypeData)
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
forall (r :: * -> *) var val typ.
(OpElim r, RenderValue r var val typ, ValueElim r val) =>
VSBinOp r -> VS (r typ) -> VS (r val) -> VS (r val) -> VS (r val)
typeBinExpr State ValueState (CppSrcCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
greaterEqualOp State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
bool
?== :: VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
(?==) = State ValueState (CppSrcCode OpData)
-> State ValueState (CppSrcCode TypeData)
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
forall (r :: * -> *) var val typ.
(OpElim r, RenderValue r var val typ, ValueElim r val) =>
VSBinOp r -> VS (r typ) -> VS (r val) -> VS (r val) -> VS (r val)
typeBinExpr State ValueState (CppSrcCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
equalOp State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
bool
?!= :: VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
(?!=) = State ValueState (CppSrcCode OpData)
-> State ValueState (CppSrcCode TypeData)
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
forall (r :: * -> *) var val typ.
(OpElim r, RenderValue r var val typ, ValueElim r val) =>
VSBinOp r -> VS (r typ) -> VS (r val) -> VS (r val) -> VS (r val)
typeBinExpr State ValueState (CppSrcCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
notEqualOp State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
bool
instance ValueExpression CppSrcCode Variable Value BinderD TypeData where
inlineIf :: VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
inlineIf = VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
(RenderValue r var val typ, ValueElim r val, ValueSym r val typ) =>
VS (r val) -> VS (r val) -> VS (r val) -> VS (r val)
C.inlineIf
funcAppMixedArgs :: MixedCall CppSrcCode Variable Value TypeData
funcAppMixedArgs = MixedCall CppSrcCode Variable Value TypeData
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
MixedCall r var val typ
G.funcAppMixedArgs
extFuncAppMixedArgs :: String -> MixedCall CppSrcCode Variable Value TypeData
extFuncAppMixedArgs String
l String
n State ValueState (CppSrcCode TypeData)
t [VS (CppSrcCode Value)]
vs [(SrcState ValueState Variable, VS (CppSrcCode Value))]
ns = do
(ValueState -> ValueState) -> StateT ValueState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (String -> ValueState -> ValueState
addModuleImportVS String
l)
MixedCall CppSrcCode Variable Value TypeData
forall {k} (r :: k -> *) (var :: k) (val :: k) (binder :: k)
(typ :: k).
ValueExpression r var val binder typ =>
MixedCall r var val typ
funcAppMixedArgs String
n State ValueState (CppSrcCode TypeData)
t [VS (CppSrcCode Value)]
vs [(SrcState ValueState Variable, VS (CppSrcCode Value))]
ns
libFuncAppMixedArgs :: String -> MixedCall CppSrcCode Variable Value TypeData
libFuncAppMixedArgs = String -> MixedCall CppSrcCode Variable Value TypeData
forall {k} (r :: k -> *) (var :: k) (val :: k) (binder :: k)
(typ :: k).
ValueExpression r var val binder typ =>
String -> MixedCall r var val typ
C.libFuncAppMixedArgs
lambda :: [SrcState ValueState BinderD]
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
lambda = ([CppSrcCode BinderD] -> CppSrcCode Value -> Doc)
-> [SrcState ValueState BinderD]
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (binder :: k) (typ :: k) (var :: k)
(val :: k).
(BinderElim r binder typ, RenderValue r var val typ, TypeSym r typ,
ValueSym r val typ) =>
([r binder] -> r val -> Doc)
-> [VS (r binder)] -> VS (r val) -> VS (r val)
G.lambda [CppSrcCode BinderD] -> CppSrcCode Value -> Doc
cppLambda
notNull :: VS (CppSrcCode Value) -> VS (CppSrcCode Value)
notNull VS (CppSrcCode Value)
v = VS (CppSrcCode Value)
v
instance OOValueExpression CppSrcCode Variable Value TypeData where
newObjMixedArgs :: State ValueState (CppSrcCode TypeData)
-> [VS (CppSrcCode Value)]
-> [(SrcState ValueState Variable, VS (CppSrcCode Value))]
-> VS (CppSrcCode Value)
newObjMixedArgs = MixedCall CppSrcCode Variable Value TypeData
forall (r :: * -> *) var val.
(RenderValue r var val TypeData, UnRepr r TypeData) =>
String -> MixedCtorCall r var val TypeData
G.newObjMixedArgs String
""
extNewObjMixedArgs :: MixedCall CppSrcCode Variable Value TypeData
extNewObjMixedArgs String
l State ValueState (CppSrcCode TypeData)
t [VS (CppSrcCode Value)]
vs [(SrcState ValueState Variable, VS (CppSrcCode Value))]
ns = do
(ValueState -> ValueState) -> StateT ValueState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (String -> ValueState -> ValueState
addModuleImportVS String
l)
State ValueState (CppSrcCode TypeData)
-> [VS (CppSrcCode Value)]
-> [(SrcState ValueState Variable, VS (CppSrcCode Value))]
-> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
OOValueExpression r var val typ =>
MixedCtorCall r var val typ
newObjMixedArgs State ValueState (CppSrcCode TypeData)
t [VS (CppSrcCode Value)]
vs [(SrcState ValueState Variable, VS (CppSrcCode Value))]
ns
libNewObjMixedArgs :: MixedCall CppSrcCode Variable Value TypeData
libNewObjMixedArgs = MixedCall CppSrcCode Variable Value TypeData
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
OOValueExpression r var val typ =>
String -> MixedCtorCall r var val typ
C.libNewObjMixedArgs
instance RenderValue CppSrcCode Variable Value TypeData where
inputFunc :: VS (CppSrcCode Value)
inputFunc = VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall a. VS a -> VS a
addIOStreamImport (VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall a b. (a -> b) -> a -> b
$ State ValueState (CppSrcCode TypeData)
-> Doc -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
string (String -> Doc
text String
cin)
printFunc :: VS (CppSrcCode Value)
printFunc = VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall a. VS a -> VS a
addIOStreamImport (VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall a b. (a -> b) -> a -> b
$ State ValueState (CppSrcCode TypeData)
-> Doc -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void (String -> Doc
text String
cout)
printLnFunc :: VS (CppSrcCode Value)
printLnFunc = VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall a. VS a -> VS a
addIOStreamImport (VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall a b. (a -> b) -> a -> b
$ State ValueState (CppSrcCode TypeData)
-> Doc -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void (String -> Doc
text String
cout)
printFileFunc :: VS (CppSrcCode Value) -> VS (CppSrcCode Value)
printFileFunc = (CppSrcCode TypeData -> CppSrcCode Value -> VS (CppSrcCode Value))
-> State ValueState (CppSrcCode TypeData)
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
forall (m :: * -> *) a b c.
Monad m =>
(a -> b -> m c) -> m a -> m b -> m c
on2StateWrapped (\CppSrcCode TypeData
vt CppSrcCode Value
w -> CppSrcCode TypeData -> Doc -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
r typ -> Doc -> VS (r val)
mkVal CppSrcCode TypeData
vt (CppSrcCode Value -> Doc
forall {k} (r :: k -> *) (val :: k).
ValueElim r val =>
r val -> Doc
RC.value CppSrcCode Value
w)) State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void
printFileLnFunc :: VS (CppSrcCode Value) -> VS (CppSrcCode Value)
printFileLnFunc = (CppSrcCode TypeData -> CppSrcCode Value -> VS (CppSrcCode Value))
-> State ValueState (CppSrcCode TypeData)
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
forall (m :: * -> *) a b c.
Monad m =>
(a -> b -> m c) -> m a -> m b -> m c
on2StateWrapped (\CppSrcCode TypeData
vt CppSrcCode Value
w -> CppSrcCode TypeData -> Doc -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
r typ -> Doc -> VS (r val)
mkVal CppSrcCode TypeData
vt (CppSrcCode Value -> Doc
forall {k} (r :: k -> *) (val :: k).
ValueElim r val =>
r val -> Doc
RC.value CppSrcCode Value
w)) State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void
cast :: State ValueState (CppSrcCode TypeData)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
cast = State ValueState (CppSrcCode TypeData)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
cppCast
call :: Maybe String
-> Maybe Doc -> MixedCall CppSrcCode Variable Value TypeData
call = String
-> Maybe String
-> Maybe Doc
-> MixedCall CppSrcCode Variable Value TypeData
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
(InternalVarElim r var, RenderValue r var val typ,
ValueElim r val) =>
String -> Maybe String -> Maybe Doc -> MixedCall r var val typ
CP.call' String
cppName
valFromData :: Maybe Int
-> Maybe Integer
-> State ValueState (CppSrcCode TypeData)
-> Doc
-> VS (CppSrcCode Value)
valFromData Maybe Int
p Maybe Integer
i State ValueState (CppSrcCode TypeData)
t' Doc
d = do
t <- State ValueState (CppSrcCode TypeData)
t'
toState $ on2CodeValues (vd p i) t (toCode d)
instance ValueElim CppSrcCode Value where
valuePrec :: CppSrcCode Value -> Maybe Int
valuePrec = Value -> Maybe Int
valPrec (Value -> Maybe Int)
-> (CppSrcCode Value -> Value) -> CppSrcCode Value -> Maybe Int
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppSrcCode Value -> Value
forall a. CppSrcCode a -> a
unCPPSC
valueInt :: CppSrcCode Value -> Maybe Integer
valueInt = Value -> Maybe Integer
valInt (Value -> Maybe Integer)
-> (CppSrcCode Value -> Value) -> CppSrcCode Value -> Maybe Integer
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppSrcCode Value -> Value
forall a. CppSrcCode a -> a
unCPPSC
value :: CppSrcCode Value -> Doc
value = Value -> Doc
val (Value -> Doc)
-> (CppSrcCode Value -> Value) -> CppSrcCode Value -> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppSrcCode Value -> Value
forall a. CppSrcCode a -> a
unCPPSC
instance InternalValueExp CppSrcCode Variable Value TypeData where
objMethodCallMixedArgs' :: String
-> State ValueState (CppSrcCode TypeData)
-> VS (CppSrcCode Value)
-> [VS (CppSrcCode Value)]
-> [(SrcState ValueState Variable, VS (CppSrcCode Value))]
-> VS (CppSrcCode Value)
objMethodCallMixedArgs' String
fn State ValueState (CppSrcCode TypeData)
tp VS (CppSrcCode Value)
ob [VS (CppSrcCode Value)]
posArgs [(SrcState ValueState Variable, VS (CppSrcCode Value))]
nmArgs = do
ob' <- VS (CppSrcCode Value)
ob
let objTp = TypeData -> CodeType
cType (TypeData -> CodeType) -> TypeData -> CodeType
forall a b. (a -> b) -> a -> b
$ CppSrcCode TypeData -> TypeData
forall (repr :: * -> *) contents.
UnRepr repr contents =>
repr contents -> contents
unRepr (CppSrcCode TypeData -> TypeData)
-> CppSrcCode TypeData -> TypeData
forall a b. (a -> b) -> a -> b
$ CppSrcCode Value -> CppSrcCode TypeData
forall {k} (r :: k -> *) (val :: k) (typ :: k).
ValueSym r val typ =>
r val -> r typ
valueType CppSrcCode Value
ob'
case objTp of
(Reference CodeType
_) -> Maybe String
-> Maybe Doc -> MixedCall CppSrcCode Variable Value TypeData
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
Maybe String -> Maybe Doc -> MixedCall r var val typ
RC.call Maybe String
forall a. Maybe a
Nothing (Doc -> Maybe Doc
forall a. a -> Maybe a
Just (Doc -> Maybe Doc) -> Doc -> Maybe Doc
forall a b. (a -> b) -> a -> b
$ CppSrcCode Value -> Doc
forall {k} (r :: k -> *) (val :: k).
ValueElim r val =>
r val -> Doc
RC.value CppSrcCode Value
ob' Doc -> Doc -> Doc
<> Doc
ptrAccess') String
fn State ValueState (CppSrcCode TypeData)
tp [VS (CppSrcCode Value)]
posArgs [(SrcState ValueState Variable, VS (CppSrcCode Value))]
nmArgs
CodeType
_ -> String
-> State ValueState (CppSrcCode TypeData)
-> VS (CppSrcCode Value)
-> [VS (CppSrcCode Value)]
-> [(SrcState ValueState Variable, VS (CppSrcCode Value))]
-> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
(RenderValue r var val typ, ValueElim r val) =>
String
-> VS (r typ)
-> VS (r val)
-> [VS (r val)]
-> NamedArgs r var val
-> VS (r val)
G.objMethodCall String
fn State ValueState (CppSrcCode TypeData)
tp VS (CppSrcCode Value)
ob [VS (CppSrcCode Value)]
posArgs [(SrcState ValueState Variable, VS (CppSrcCode Value))]
nmArgs
classMethodCallMixedArgs' :: String
-> State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData)
-> [VS (CppSrcCode Value)]
-> [(SrcState ValueState Variable, VS (CppSrcCode Value))]
-> VS (CppSrcCode Value)
classMethodCallMixedArgs' String
f State ValueState (CppSrcCode TypeData)
t State ValueState (CppSrcCode TypeData)
cls [VS (CppSrcCode Value)]
vs [(SrcState ValueState Variable, VS (CppSrcCode Value))]
ns = do
c <- State ValueState (CppSrcCode TypeData)
cls
RC.call Nothing (Just $ renderType c <> text nmSpc) f t vs ns
instance OOFunctionSym CppSrcCode Value TypeData where
func :: String
-> State ValueState (CppSrcCode TypeData)
-> [VS (CppSrcCode Value)]
-> SrcState ValueState FuncData
func = String
-> State ValueState (CppSrcCode TypeData)
-> [VS (CppSrcCode Value)]
-> SrcState ValueState FuncData
forall (r :: * -> *) typ val var binder.
(RenderFunction r typ, ValueElim r val,
ValueExpression r var val binder typ) =>
String -> VS (r typ) -> [VS (r val)] -> VS (r FuncData)
G.func
objAccess :: VS (CppSrcCode Value)
-> SrcState ValueState FuncData -> VS (CppSrcCode Value)
objAccess = VS (CppSrcCode Value)
-> SrcState ValueState FuncData -> VS (CppSrcCode Value)
forall (r :: * -> *) typ var val.
(FunctionElim r typ, RenderValue r var val typ, ValueElim r val) =>
VS (r val) -> VS (r FuncData) -> VS (r val)
G.objAccess
instance GetSet CppSrcCode Variable Value where
get :: VS (CppSrcCode Value)
-> SrcState ValueState Variable -> VS (CppSrcCode Value)
get = VS (CppSrcCode Value)
-> SrcState ValueState Variable -> VS (CppSrcCode Value)
forall (r :: * -> *) var val typ.
(InternalGetSet r var val typ, OOFunctionSym r val typ) =>
VS (r val) -> VS (r var) -> VS (r val)
G.get
set :: VS (CppSrcCode Value)
-> SrcState ValueState Variable
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
set = VS (CppSrcCode Value)
-> SrcState ValueState Variable
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
forall (r :: * -> *) val typ var.
(ValueSym r val typ, InternalGetSet r var val typ,
OOFunctionSym r val typ) =>
VS (r val) -> VS (r var) -> VS (r val) -> VS (r val)
G.set
instance IndexTranslator CppSrcCode Value where
intToIndex :: VS (CppSrcCode Value) -> VS (CppSrcCode Value)
intToIndex = VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k). VS (r val) -> VS (r val)
CP.intToIndex
indexToInt :: VS (CppSrcCode Value) -> VS (CppSrcCode Value)
indexToInt = VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k). VS (r val) -> VS (r val)
CP.indexToInt
instance Reference CppSrcCode Value where
makeRef :: VS (CppSrcCode Value) -> VS (CppSrcCode Value)
makeRef VS (CppSrcCode Value)
vl = do
vl' <- VS (CppSrcCode Value)
vl
let vlTyp = TypeData -> CodeType
cType (TypeData -> CodeType) -> TypeData -> CodeType
forall a b. (a -> b) -> a -> b
$ CppSrcCode TypeData -> TypeData
forall (repr :: * -> *) contents.
UnRepr repr contents =>
repr contents -> contents
unRepr (CppSrcCode TypeData -> TypeData)
-> CppSrcCode TypeData -> TypeData
forall a b. (a -> b) -> a -> b
$ CppSrcCode Value -> CppSrcCode TypeData
forall {k} (r :: k -> *) (val :: k) (typ :: k).
ValueSym r val typ =>
r val -> r typ
valueType CppSrcCode Value
vl'
vlDoc = CppSrcCode Value -> Doc
forall {k} (r :: k -> *) (val :: k).
ValueElim r val =>
r val -> Doc
RC.value CppSrcCode Value
vl'
mkStateVal (convTypeOO $ Reference vlTyp) (cppPtr <> vlDoc)
maybeDeref :: VS (CppSrcCode Value) -> VS (CppSrcCode Value)
maybeDeref VS (CppSrcCode Value)
vl = do
vl' <- VS (CppSrcCode Value)
vl
let vlTyp = TypeData -> CodeType
cType (TypeData -> CodeType) -> TypeData -> CodeType
forall a b. (a -> b) -> a -> b
$ CppSrcCode TypeData -> TypeData
forall (repr :: * -> *) contents.
UnRepr repr contents =>
repr contents -> contents
unRepr (CppSrcCode TypeData -> TypeData)
-> CppSrcCode TypeData -> TypeData
forall a b. (a -> b) -> a -> b
$ CppSrcCode Value -> CppSrcCode TypeData
forall {k} (r :: k -> *) (val :: k) (typ :: k).
ValueSym r val typ =>
r val -> r typ
valueType CppSrcCode Value
vl'
vlDoc = CppSrcCode Value -> Doc
forall {k} (r :: k -> *) (val :: k).
ValueElim r val =>
r val -> Doc
RC.value CppSrcCode Value
vl'
case vlTyp of
(Reference CodeType
tp) -> State ValueState (CppSrcCode TypeData)
-> Doc -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal (CodeType -> State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k).
(TypeSym r typ, OOTypeSym r typ) =>
CodeType -> VS (r typ)
convTypeOO CodeType
tp) (Doc
cppDeref Doc -> Doc -> Doc
<> Doc
vlDoc)
CodeType
_ -> VS (CppSrcCode Value)
vl
instance Array CppSrcCode Variable Value where
arrayElem :: VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> SrcState ValueState Variable
arrayElem = VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> SrcState ValueState Variable
forall {k} (r :: k -> *) (typ :: k) (val :: k) (var :: k).
(TypeSym r typ, ValueSym r val typ, IndexTranslator r val,
RenderVariable r var typ, ValueElim r val) =>
VS (r val) -> VS (r val) -> VS (r var)
G.arrayElem
arrayLength :: VS (CppSrcCode Value) -> VS (CppSrcCode Value)
arrayLength = VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
List r val =>
VS (r val) -> VS (r val)
listSize
arrayCopy :: VS (CppSrcCode Value) -> VS (CppSrcCode Value)
arrayCopy = VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall a. a -> a
id
instance List CppSrcCode Value where
listSize :: VS (CppSrcCode Value) -> VS (CppSrcCode Value)
listSize VS (CppSrcCode Value)
v = State ValueState (CppSrcCode TypeData)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> VS (r val) -> VS (r val)
cast State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
int (String -> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (typ :: k) (var :: k) (val :: k).
(TypeSym r typ, InternalValueExp r var val typ) =>
String -> VS (r val) -> VS (r val)
C.listSize String
"size" VS (CppSrcCode Value)
v)
listAccess :: VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
listAccess = VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall (r :: * -> *) typ val var.
(TypeSym r typ, ValueSym r val typ, IndexTranslator r val,
InternalListFunc r val typ, FunctionElim r typ,
RenderFunction r typ, RenderValue r var val typ, TypeElim r typ,
ValueElim r val) =>
VS (r val) -> VS (r val) -> VS (r val)
G.listAccess
indexOf :: VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
indexOf VS (CppSrcCode Value)
l VS (CppSrcCode Value)
v = VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall a. VS a -> VS a
addAlgorithmImportVS (VS (CppSrcCode Value) -> VS (CppSrcCode Value))
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall a b. (a -> b) -> a -> b
$ VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
cppIndexFunc VS (CppSrcCode Value)
l VS (CppSrcCode Value)
v VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
NumericExpression r val =>
VS (r val) -> VS (r val) -> VS (r val)
#- VS (CppSrcCode Value) -> VS (CppSrcCode Value)
iterBegin VS (CppSrcCode Value)
l
instance ListStatement CppSrcCode Statement Value where
listAdd :: VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> SrcState MethodState Statement
listAdd VS (CppSrcCode Value)
list VS (CppSrcCode Value)
idx VS (CppSrcCode Value)
vl = VS (CppSrcCode Value) -> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (val :: k).
ValueStatement r stmt val =>
VS (r val) -> MS (r stmt)
valStmt (VS (CppSrcCode Value) -> SrcState MethodState Statement)
-> VS (CppSrcCode Value) -> SrcState MethodState Statement
forall a b. (a -> b) -> a -> b
$
State ValueState (CppSrcCode TypeData)
-> VS (CppSrcCode Value)
-> String
-> [VS (CppSrcCode Value)]
-> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
InternalValueExp r var val typ =>
VS (r typ) -> VS (r val) -> String -> [VS (r val)] -> VS (r val)
objMethodCall State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void VS (CppSrcCode Value)
list String
cppListAdd [VS (CppSrcCode Value) -> VS (CppSrcCode Value)
iterBegin VS (CppSrcCode Value)
list VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
NumericExpression r val =>
VS (r val) -> VS (r val) -> VS (r val)
#+ VS (CppSrcCode Value)
idx, VS (CppSrcCode Value)
vl]
listAppend :: VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> SrcState MethodState Statement
listAppend = String
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> SrcState MethodState Statement
forall {k} (r :: k -> *) (typ :: k) (var :: k) (val :: k)
(stmt :: k).
(TypeSym r typ, InternalValueExp r var val typ,
ValueStatement r stmt val) =>
String -> VS (r val) -> VS (r val) -> MS (r stmt)
CG.listAppend String
cppListAppend
listSet :: VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> SrcState MethodState Statement
listSet VS (CppSrcCode Value)
list VS (CppSrcCode Value)
idx VS (CppSrcCode Value)
vl = do
listAccessVal <- LensLike'
(Zoomed (StateT ValueState Identity) (CppSrcCode Value))
MethodState
ValueState
-> VS (CppSrcCode Value)
-> StateT MethodState Identity (CppSrcCode Value)
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) (CppSrcCode Value))
MethodState
ValueState
(ValueState -> Focusing Identity (CppSrcCode Value) ValueState)
-> MethodState -> Focusing Identity (CppSrcCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS (VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k).
List r val =>
VS (r val) -> VS (r val) -> VS (r val)
listAccess VS (CppSrcCode Value)
list VS (CppSrcCode Value)
idx)
let listAccessVar =
String
-> CppSrcCode TypeData -> Doc -> SrcState ValueState Variable
forall {k} (r :: k -> *) (var :: k) (typ :: k).
RenderVariable r var typ =>
String -> r typ -> Doc -> VS (r var)
mkVar (Doc -> String
render (Doc -> String) -> Doc -> String
forall a b. (a -> b) -> a -> b
$ CppSrcCode Value -> Doc
forall {k} (r :: k -> *) (val :: k).
ValueElim r val =>
r val -> Doc
RC.value CppSrcCode Value
listAccessVal) (CppSrcCode Value -> CppSrcCode TypeData
forall {k} (r :: k -> *) (val :: k) (typ :: k).
ValueSym r val typ =>
r val -> r typ
valueType CppSrcCode Value
listAccessVal) (CppSrcCode Value -> Doc
forall {k} (r :: k -> *) (val :: k).
ValueElim r val =>
r val -> Doc
RC.value CppSrcCode Value
listAccessVal)
listAccessVar &= vl
instance Set CppSrcCode Value where
contains :: VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
contains = String
-> String
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
forall (r :: * -> *) typ val.
(TypeSym r typ, Comparison r val, OOFunctionSym r val typ) =>
String -> String -> VS (r val) -> VS (r val) -> VS (r val)
CP.containsInt String
cppIndex String
cppIterEnd
setAdd :: VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
setAdd = String
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (typ :: k) (val :: k) (var :: k).
(TypeSym r typ, ValueSym r val typ,
InternalValueExp r var val typ) =>
String -> VS (r val) -> VS (r val) -> VS (r val)
CP.setMethodCall String
cppListAdd
setRemove :: VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
setRemove = String
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (typ :: k) (val :: k) (var :: k).
(TypeSym r typ, ValueSym r val typ,
InternalValueExp r var val typ) =>
String -> VS (r val) -> VS (r val) -> VS (r val)
CP.setMethodCall String
cppListRemove
setUnion :: VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
setUnion = String
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
forall a. HasCallStack => String -> a
error String
"not done yet"
instance InternalList CppSrcCode Block Variable Value where
listSlice' :: Maybe (VS (CppSrcCode Value))
-> Maybe (VS (CppSrcCode Value))
-> Maybe (VS (CppSrcCode Value))
-> SrcState ValueState Variable
-> VS (CppSrcCode Value)
-> SrcState MethodState Doc
listSlice' = Maybe (VS (CppSrcCode Value))
-> Maybe (VS (CppSrcCode Value))
-> Maybe (VS (CppSrcCode Value))
-> SrcState ValueState Variable
-> VS (CppSrcCode Value)
-> SrcState MethodState Doc
forall (r :: * -> *) bod block stmt var val typ binder.
(BodySym r bod block, BlockSym r block stmt, EmptyStatement r stmt,
ScopeSym r ScopeData, DeclStatement r bod stmt var ScopeData val,
AssignStatement r stmt var val,
ControlStatement r bod stmt var val, TypeSym r typ,
Literal r val typ, BooleanExpression r val, Comparison r val,
NumericExpression r val, ValueExpression r var val binder typ,
VariableSym r var typ, VariableValue r var val,
IndexTranslator r val, List r val, ListStatement r stmt val,
ValueElim r val, VariableElim r var typ) =>
Maybe (VS (r val))
-> Maybe (VS (r val))
-> Maybe (VS (r val))
-> VS (r var)
-> VS (r val)
-> MS (r block)
M.listSlice
instance InternalGetSet CppSrcCode Variable Value TypeData where
getFunc :: SrcState ValueState Variable -> SrcState ValueState FuncData
getFunc = SrcState ValueState Variable -> SrcState ValueState FuncData
forall (r :: * -> *) val typ var.
(OOFunctionSym r val typ, VariableElim r var typ) =>
VS (r var) -> VS (r FuncData)
G.getFunc
setFunc :: State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable
-> VS (CppSrcCode Value)
-> SrcState ValueState FuncData
setFunc = State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable
-> VS (CppSrcCode Value)
-> SrcState ValueState FuncData
forall (r :: * -> *) val typ var.
(OOFunctionSym r val typ, VariableElim r var typ) =>
VS (r typ) -> VS (r var) -> VS (r val) -> VS (r FuncData)
G.setFunc
instance InternalListFunc CppSrcCode Value TypeData where
listAccessFunc :: State ValueState (CppSrcCode TypeData)
-> VS (CppSrcCode Value) -> SrcState ValueState FuncData
listAccessFunc = String
-> State ValueState (CppSrcCode TypeData)
-> VS (CppSrcCode Value)
-> SrcState ValueState FuncData
forall (r :: * -> *) val typ.
(ValueSym r val typ, OOFunctionSym r val typ, TypeElim r typ) =>
String -> VS (r typ) -> VS (r val) -> VS (r FuncData)
CP.listAccessFunc' String
cppListAccess
instance BinderSym CppSrcCode BinderD TypeData where
binder :: String
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState BinderD
binder String
nm State ValueState (CppSrcCode TypeData)
tp = (TypeData -> BinderD) -> CppSrcCode TypeData -> CppSrcCode BinderD
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
onCodeValue (String -> TypeData -> BinderD
bindFormD String
nm) (CppSrcCode TypeData -> CppSrcCode BinderD)
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState BinderD
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> State ValueState (CppSrcCode TypeData)
tp
instance BinderElim CppSrcCode BinderD TypeData where
binderName :: CppSrcCode BinderD -> String
binderName = BinderD -> String
bindName (BinderD -> String)
-> (CppSrcCode BinderD -> BinderD) -> CppSrcCode BinderD -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppSrcCode BinderD -> BinderD
forall a. CppSrcCode a -> a
unCPPSC
binderType :: CppSrcCode BinderD -> CppSrcCode TypeData
binderType = (BinderD -> TypeData) -> CppSrcCode BinderD -> CppSrcCode TypeData
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
onCodeValue BinderD -> TypeData
bindType
instance InternalBinderElim CppSrcCode BinderD where
binderElim :: CppSrcCode BinderD -> Doc
binderElim = String -> Doc
text (String -> Doc)
-> (CppSrcCode BinderD -> String) -> CppSrcCode BinderD -> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. BinderD -> String
bindName (BinderD -> String)
-> (CppSrcCode BinderD -> BinderD) -> CppSrcCode BinderD -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppSrcCode BinderD -> BinderD
forall a. CppSrcCode a -> a
unCPPSC
instance RenderFunction CppSrcCode TypeData where
funcFromData :: Doc
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState FuncData
funcFromData Doc
d = (CppSrcCode TypeData -> CppSrcCode FuncData)
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState FuncData
forall a b s. (a -> b) -> State s a -> State s b
onStateValue ((TypeData -> FuncData)
-> CppSrcCode TypeData -> CppSrcCode FuncData
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
onCodeValue (TypeData -> Doc -> FuncData
`fd` Doc
d))
instance FunctionElim CppSrcCode TypeData where
functionType :: CppSrcCode FuncData -> CppSrcCode TypeData
functionType = (FuncData -> TypeData)
-> CppSrcCode FuncData -> CppSrcCode TypeData
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
onCodeValue FuncData -> TypeData
fType
function :: CppSrcCode FuncData -> Doc
function = FuncData -> Doc
funcDoc (FuncData -> Doc)
-> (CppSrcCode FuncData -> FuncData) -> CppSrcCode FuncData -> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppSrcCode FuncData -> FuncData
forall a. CppSrcCode a -> a
unCPPSC
instance InternalAssignStmt CppSrcCode Statement Variable Value where
multiAssign :: [SrcState ValueState Variable]
-> [VS (CppSrcCode Value)] -> SrcState MethodState Statement
multiAssign [SrcState ValueState Variable]
_ [VS (CppSrcCode Value)]
_ = String -> SrcState MethodState Statement
forall a. HasCallStack => String -> a
error (String -> SrcState MethodState Statement)
-> String -> SrcState MethodState Statement
forall a b. (a -> b) -> a -> b
$ String -> String
C.multiAssignError String
cppName
instance InternalIOStmt CppSrcCode Statement Value where
printSt :: Bool
-> Maybe (VS (CppSrcCode Value))
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> SrcState MethodState Statement
printSt Bool
nl Maybe (VS (CppSrcCode Value))
_ = Bool
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (val :: k).
(RenderStatement r stmt, ValueElim r val) =>
Bool -> VS (r val) -> VS (r val) -> MS (r stmt)
cppPrint Bool
nl
instance InternalControlStmt CppSrcCode Statement Value where
multiReturn :: [VS (CppSrcCode Value)] -> SrcState MethodState Statement
multiReturn [VS (CppSrcCode Value)]
_ = String -> SrcState MethodState Statement
forall a. HasCallStack => String -> a
error (String -> SrcState MethodState Statement)
-> String -> SrcState MethodState Statement
forall a b. (a -> b) -> a -> b
$ String -> String
C.multiReturnError String
cppName
instance RenderStatement CppSrcCode Statement where
stmt :: SrcState MethodState Statement -> SrcState MethodState Statement
stmt = SrcState MethodState Statement -> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
(RenderStatement r stmt, StatementElim r stmt) =>
MS (r stmt) -> MS (r stmt)
G.stmt
loopStmt :: SrcState MethodState Statement -> SrcState MethodState Statement
loopStmt = SrcState MethodState Statement -> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
(RenderStatement r stmt, StatementElim r stmt) =>
MS (r stmt) -> MS (r stmt)
G.loopStmt
stmtFromData :: Doc -> Terminator -> SrcState MethodState Statement
stmtFromData Doc
d Terminator
t = CppSrcCode Statement -> SrcState MethodState Statement
forall a s. a -> State s a
toState (CppSrcCode Statement -> SrcState MethodState Statement)
-> CppSrcCode Statement -> SrcState MethodState Statement
forall a b. (a -> b) -> a -> b
$ Statement -> CppSrcCode Statement
forall (r :: * -> *) a. Monad r => a -> r a
toCode (Doc
d, Terminator
t)
instance StatementElim CppSrcCode Statement where
statement :: CppSrcCode Statement -> Doc
statement = Statement -> Doc
forall a b. (a, b) -> a
fst (Statement -> Doc)
-> (CppSrcCode Statement -> Statement)
-> CppSrcCode Statement
-> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppSrcCode Statement -> Statement
forall a. CppSrcCode a -> a
unCPPSC
statementTerm :: CppSrcCode Statement -> Terminator
statementTerm = Statement -> Terminator
forall a b. (a, b) -> b
snd (Statement -> Terminator)
-> (CppSrcCode Statement -> Statement)
-> CppSrcCode Statement
-> Terminator
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppSrcCode Statement -> Statement
forall a. CppSrcCode a -> a
unCPPSC
instance EmptyStatement CppSrcCode Statement where
emptyStmt :: SrcState MethodState Statement
emptyStmt = SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
RenderStatement r stmt =>
MS (r stmt)
G.emptyStmt
instance MultiStatement CppSrcCode Statement where
multi :: [SrcState MethodState Statement] -> SrcState MethodState Statement
multi = ([CppSrcCode Statement] -> CppSrcCode Statement)
-> [SrcState MethodState Statement]
-> SrcState MethodState Statement
forall a b s. ([a] -> b) -> [State s a] -> State s b
onStateList (([Statement] -> Statement)
-> [CppSrcCode Statement] -> CppSrcCode Statement
forall (m :: * -> *) a b. Monad m => ([a] -> b) -> [m a] -> m b
onCodeList [Statement] -> Statement
R.multiStmt)
instance ValueStatement CppSrcCode Statement Value where
valStmt :: VS (CppSrcCode Value) -> SrcState MethodState Statement
valStmt = Terminator
-> VS (CppSrcCode Value) -> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (val :: k).
(RenderStatement r stmt, ValueElim r val) =>
Terminator -> VS (r val) -> MS (r stmt)
G.valStmt Terminator
Semi
instance AssignStatement CppSrcCode Statement Variable Value where
assign :: SrcState ValueState Variable
-> VS (CppSrcCode Value) -> SrcState MethodState Statement
assign = Terminator
-> SrcState ValueState Variable
-> VS (CppSrcCode Value)
-> SrcState MethodState Statement
forall {k} (r :: k -> *) (var :: k) (stmt :: k) (val :: k).
(InternalVarElim r var, RenderStatement r stmt, ValueElim r val) =>
Terminator -> VS (r var) -> VS (r val) -> MS (r stmt)
G.assign Terminator
Semi
&-= :: SrcState ValueState Variable
-> VS (CppSrcCode Value) -> SrcState MethodState Statement
(&-=) = Terminator
-> SrcState ValueState Variable
-> VS (CppSrcCode Value)
-> SrcState MethodState Statement
forall {k} (r :: k -> *) (var :: k) (stmt :: k) (val :: k).
(InternalVarElim r var, RenderStatement r stmt, ValueElim r val) =>
Terminator -> VS (r var) -> VS (r val) -> MS (r stmt)
G.subAssign Terminator
Semi
&+= :: SrcState ValueState Variable
-> VS (CppSrcCode Value) -> SrcState MethodState Statement
(&+=) = SrcState ValueState Variable
-> VS (CppSrcCode Value) -> SrcState MethodState Statement
forall {k} (r :: k -> *) (var :: k) (stmt :: k) (val :: k).
(InternalVarElim r var, RenderStatement r stmt, ValueElim r val) =>
VS (r var) -> VS (r val) -> MS (r stmt)
C.increment
&++ :: SrcState ValueState Variable -> SrcState MethodState Statement
(&++) = SrcState ValueState Variable -> SrcState MethodState Statement
forall {k} (r :: k -> *) (var :: k) (stmt :: k).
(InternalVarElim r var, RenderStatement r stmt) =>
VS (r var) -> MS (r stmt)
C.increment1
&-- :: SrcState ValueState Variable -> SrcState MethodState Statement
(&--) = SrcState ValueState Variable -> SrcState MethodState Statement
forall {k} (r :: k -> *) (var :: k) (stmt :: k).
(InternalVarElim r var, RenderStatement r stmt) =>
VS (r var) -> MS (r stmt)
C.decrement1
instance DeclStatement CppSrcCode Body Statement Variable ScopeData Value where
varDec :: SrcState ValueState Variable
-> CppSrcCode ScopeData -> SrcState MethodState Statement
varDec SrcState ValueState Variable
vr CppSrcCode ScopeData
scp = do
vr' <- LensLike'
(Zoomed (StateT ValueState Identity) (CppSrcCode Variable))
MethodState
ValueState
-> SrcState ValueState Variable
-> StateT MethodState Identity (CppSrcCode Variable)
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) (CppSrcCode Variable))
MethodState
ValueState
(ValueState -> Focusing Identity (CppSrcCode Variable) ValueState)
-> MethodState
-> Focusing Identity (CppSrcCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS SrcState ValueState Variable
vr
let tp = (TypeData -> CodeType
cType (TypeData -> CodeType)
-> (CppSrcCode Variable -> TypeData)
-> CppSrcCode Variable
-> CodeType
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppSrcCode TypeData -> TypeData
forall a. CppSrcCode a -> a
unCPPSC (CppSrcCode TypeData -> TypeData)
-> (CppSrcCode Variable -> CppSrcCode TypeData)
-> CppSrcCode Variable
-> TypeData
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppSrcCode Variable -> CppSrcCode TypeData
forall {k} (r :: k -> *) (var :: k) (typ :: k).
VariableElim r var typ =>
r var -> r typ
variableType) CppSrcCode Variable
vr'
case tp of
(Array CodeType
_) -> String -> SrcState MethodState Statement
forall a. HasCallStack => String -> a
error String
"Can't use `varDec` for C++ arrays; use `arrayDec`"
CodeType
_ -> CppSrcCode AttachmentData
-> CppSrcCode AttachmentData
-> Doc
-> SrcState ValueState Variable
-> CppSrcCode ScopeData
-> SrcState MethodState Statement
forall (r :: * -> *) var attch stmt.
(InternalVarElim r var, PermElim r attch, RenderStatement r stmt,
ScopeElim r ScopeData, UnRepr r TypeData, TypeElim r TypeData,
VariableElim r var TypeData) =>
r attch
-> r attch -> Doc -> VS (r var) -> r ScopeData -> MS (r stmt)
C.varDec CppSrcCode AttachmentData
forall {k} (r :: k -> *) (attch :: k).
AttachmentSym r attch =>
r attch
classLevel CppSrcCode AttachmentData
forall {k} (r :: k -> *) (attch :: k).
AttachmentSym r attch =>
r attch
instanceLevel Doc
empty SrcState ValueState Variable
vr CppSrcCode ScopeData
scp
varDecDef :: SrcState ValueState Variable
-> CppSrcCode ScopeData
-> VS (CppSrcCode Value)
-> SrcState MethodState Statement
varDecDef = Terminator
-> SrcState ValueState Variable
-> CppSrcCode ScopeData
-> VS (CppSrcCode Value)
-> SrcState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(scope :: k) (val :: k).
(DeclStatement r bod stmt var scope val, RenderStatement r stmt,
StatementElim r stmt, ValueElim r val) =>
Terminator -> VS (r var) -> r scope -> VS (r val) -> MS (r stmt)
C.varDecDef Terminator
Semi
setDec :: SrcState ValueState Variable
-> CppSrcCode ScopeData -> SrcState MethodState Statement
setDec = SrcState ValueState Variable
-> CppSrcCode ScopeData -> SrcState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(scope :: k) (val :: k).
DeclStatement r bod stmt var scope val =>
VS (r var) -> r scope -> MS (r stmt)
varDec
setDecDef :: SrcState ValueState Variable
-> CppSrcCode ScopeData
-> VS (CppSrcCode Value)
-> SrcState MethodState Statement
setDecDef = SrcState ValueState Variable
-> CppSrcCode ScopeData
-> VS (CppSrcCode Value)
-> SrcState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(scope :: k) (val :: k).
DeclStatement r bod stmt var scope val =>
VS (r var) -> r scope -> VS (r val) -> MS (r stmt)
varDecDef
listDec :: Integer
-> SrcState ValueState Variable
-> CppSrcCode ScopeData
-> SrcState MethodState Statement
listDec Integer
n = (CppSrcCode Value -> Doc)
-> VS (CppSrcCode Value)
-> SrcState ValueState Variable
-> CppSrcCode ScopeData
-> SrcState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(scope :: k) (val :: k).
(DeclStatement r bod stmt var scope val, RenderStatement r stmt,
StatementElim r stmt) =>
(r val -> Doc)
-> VS (r val) -> VS (r var) -> r scope -> MS (r stmt)
C.listDec CppSrcCode Value -> Doc
forall {k} (r :: k -> *) (val :: k).
ValueElim r val =>
r val -> Doc
cppListDecDoc (Integer -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k) (typ :: k).
Literal r val typ =>
Integer -> VS (r val)
litInt Integer
n)
listDecDef :: SrcState ValueState Variable
-> CppSrcCode ScopeData
-> [VS (CppSrcCode Value)]
-> SrcState MethodState Statement
listDecDef = ([CppSrcCode Value] -> Doc)
-> SrcState ValueState Variable
-> CppSrcCode ScopeData
-> [VS (CppSrcCode Value)]
-> SrcState MethodState Statement
forall (r :: * -> *) bod stmt var scope val.
(DeclStatement r bod stmt var scope val, RenderStatement r stmt,
StatementElim r stmt) =>
([r Value] -> Doc)
-> VS (r var) -> r scope -> [VS (r Value)] -> MS (r stmt)
cppListDecDef [CppSrcCode Value] -> Doc
forall {k} (r :: k -> *) (val :: k).
ValueElim r val =>
[r val] -> Doc
cppListDecDefDoc
arrayDec :: Integer
-> VS (CppSrcCode Value)
-> SrcState ValueState Variable
-> CppSrcCode ScopeData
-> SrcState MethodState Statement
arrayDec Integer
n VS (CppSrcCode Value)
_ SrcState ValueState Variable
vr CppSrcCode ScopeData
scp = do
decBase <- SrcState ValueState Variable -> CppSrcCode ScopeData -> MS Doc
arrayDecBase SrcState ValueState Variable
vr CppSrcCode ScopeData
scp
let sz' = Integer -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k) (typ :: k).
Literal r val typ =>
Integer -> VS (r val)
litInt Integer
n :: VS (CppSrcCode Value)
sz <- zoom lensMStoVS sz'
mkStmt $ decBase <> parens (RC.value sz)
arrayDecDef :: SrcState ValueState Variable
-> CppSrcCode ScopeData
-> [VS (CppSrcCode Value)]
-> SrcState MethodState Statement
arrayDecDef SrcState ValueState Variable
vr CppSrcCode ScopeData
scp [VS (CppSrcCode Value)]
vals = do
decBase <- SrcState ValueState Variable -> CppSrcCode ScopeData -> MS Doc
arrayDecBase SrcState ValueState Variable
vr CppSrcCode ScopeData
scp
vs <- mapM (zoom lensMStoVS) vals
mkStmt $ decBase <+> braces (valueList vs)
constDecDef :: SrcState ValueState Variable
-> CppSrcCode ScopeData
-> VS (CppSrcCode Value)
-> SrcState MethodState Statement
constDecDef = SrcState ValueState Variable
-> CppSrcCode ScopeData
-> VS (CppSrcCode Value)
-> SrcState MethodState Statement
forall (r :: * -> *) var stmt val.
(InternalVarElim r var, RenderStatement r stmt,
ScopeElim r ScopeData, UnRepr r TypeData, ValueElim r val,
VariableElim r var TypeData) =>
VS (r var) -> r ScopeData -> VS (r val) -> MS (r stmt)
CG.constDecDef
funcDecDef :: SrcState ValueState Variable
-> CppSrcCode ScopeData
-> [SrcState ValueState Variable]
-> SrcState MethodState Doc
-> SrcState MethodState Statement
funcDecDef = SrcState ValueState Variable
-> CppSrcCode ScopeData
-> [SrcState ValueState Variable]
-> SrcState MethodState Doc
-> SrcState MethodState Statement
cppFuncDecDef
instance OODeclStatement CppSrcCode Statement Variable ScopeData Value where
objDecDef :: SrcState ValueState Variable
-> CppSrcCode ScopeData
-> VS (CppSrcCode Value)
-> SrcState MethodState Statement
objDecDef = SrcState ValueState Variable
-> CppSrcCode ScopeData
-> VS (CppSrcCode Value)
-> SrcState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(scope :: k) (val :: k).
DeclStatement r bod stmt var scope val =>
VS (r var) -> r scope -> VS (r val) -> MS (r stmt)
varDecDef
objDecNew :: SrcState ValueState Variable
-> CppSrcCode ScopeData
-> [VS (CppSrcCode Value)]
-> SrcState MethodState Statement
objDecNew = SrcState ValueState Variable
-> CppSrcCode ScopeData
-> [VS (CppSrcCode Value)]
-> SrcState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(scope :: k) (val :: k) (typ :: k).
(DeclStatement r bod stmt var scope val,
OOValueExpression r var val typ, VariableElim r var typ) =>
VS (r var) -> r scope -> [VS (r val)] -> MS (r stmt)
G.objDecNew
extObjDecNew :: String
-> SrcState ValueState Variable
-> CppSrcCode ScopeData
-> [VS (CppSrcCode Value)]
-> SrcState MethodState Statement
extObjDecNew = String
-> SrcState ValueState Variable
-> CppSrcCode ScopeData
-> [VS (CppSrcCode Value)]
-> SrcState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(scope :: k) (val :: k) (typ :: k).
(DeclStatement r bod stmt var scope val,
OOValueExpression r var val typ, VariableElim r var typ) =>
String -> VS (r var) -> r scope -> [VS (r val)] -> MS (r stmt)
C.extObjDecNew
instance PrintConsole CppSrcCode Statement Value where
print :: VS (CppSrcCode Value) -> SrcState MethodState Statement
print = Bool
-> Maybe (VS (CppSrcCode Value))
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> SrcState MethodState Statement
forall {k} (r :: k -> *) (block :: k) (stmt :: k) (bod :: k)
(val :: k) (scope :: k) (var :: k) (typ :: k).
(BlockSym r block stmt, BodySym r bod block, MultiStatement r stmt,
PrintConsole r stmt val, PrintFile r stmt val, ScopeSym r scope,
DeclStatement r bod stmt var scope val,
AssignStatement r stmt var val,
ControlStatement r bod stmt var val, ValueSym r val typ,
Literal r val typ, NumericExpression r val, Comparison r val,
VariableSym r var typ, VariableValue r var val, List r val,
TypeSym r typ, TypeElim r typ, InternalIOStmt r stmt val) =>
Bool
-> Maybe (VS (r val)) -> VS (r val) -> VS (r val) -> MS (r stmt)
G.print Bool
False Maybe (VS (CppSrcCode Value))
forall a. Maybe a
Nothing VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r val)
printFunc
printLn :: VS (CppSrcCode Value) -> SrcState MethodState Statement
printLn = Bool
-> Maybe (VS (CppSrcCode Value))
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> SrcState MethodState Statement
forall {k} (r :: k -> *) (block :: k) (stmt :: k) (bod :: k)
(val :: k) (scope :: k) (var :: k) (typ :: k).
(BlockSym r block stmt, BodySym r bod block, MultiStatement r stmt,
PrintConsole r stmt val, PrintFile r stmt val, ScopeSym r scope,
DeclStatement r bod stmt var scope val,
AssignStatement r stmt var val,
ControlStatement r bod stmt var val, ValueSym r val typ,
Literal r val typ, NumericExpression r val, Comparison r val,
VariableSym r var typ, VariableValue r var val, List r val,
TypeSym r typ, TypeElim r typ, InternalIOStmt r stmt val) =>
Bool
-> Maybe (VS (r val)) -> VS (r val) -> VS (r val) -> MS (r stmt)
G.print Bool
True Maybe (VS (CppSrcCode Value))
forall a. Maybe a
Nothing VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r val)
printLnFunc
printStr :: String -> SrcState MethodState Statement
printStr = Bool
-> Maybe (VS (CppSrcCode Value))
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> SrcState MethodState Statement
forall {k} (r :: k -> *) (block :: k) (stmt :: k) (bod :: k)
(val :: k) (scope :: k) (var :: k) (typ :: k).
(BlockSym r block stmt, BodySym r bod block, MultiStatement r stmt,
PrintConsole r stmt val, PrintFile r stmt val, ScopeSym r scope,
DeclStatement r bod stmt var scope val,
AssignStatement r stmt var val,
ControlStatement r bod stmt var val, ValueSym r val typ,
Literal r val typ, NumericExpression r val, Comparison r val,
VariableSym r var typ, VariableValue r var val, List r val,
TypeSym r typ, TypeElim r typ, InternalIOStmt r stmt val) =>
Bool
-> Maybe (VS (r val)) -> VS (r val) -> VS (r val) -> MS (r stmt)
G.print Bool
False Maybe (VS (CppSrcCode Value))
forall a. Maybe a
Nothing VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r val)
printFunc (VS (CppSrcCode Value) -> SrcState MethodState Statement)
-> (String -> VS (CppSrcCode Value))
-> String
-> SrcState MethodState Statement
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k) (typ :: k).
Literal r val typ =>
String -> VS (r val)
litString
printStrLn :: String -> SrcState MethodState Statement
printStrLn = Bool
-> Maybe (VS (CppSrcCode Value))
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> SrcState MethodState Statement
forall {k} (r :: k -> *) (block :: k) (stmt :: k) (bod :: k)
(val :: k) (scope :: k) (var :: k) (typ :: k).
(BlockSym r block stmt, BodySym r bod block, MultiStatement r stmt,
PrintConsole r stmt val, PrintFile r stmt val, ScopeSym r scope,
DeclStatement r bod stmt var scope val,
AssignStatement r stmt var val,
ControlStatement r bod stmt var val, ValueSym r val typ,
Literal r val typ, NumericExpression r val, Comparison r val,
VariableSym r var typ, VariableValue r var val, List r val,
TypeSym r typ, TypeElim r typ, InternalIOStmt r stmt val) =>
Bool
-> Maybe (VS (r val)) -> VS (r val) -> VS (r val) -> MS (r stmt)
G.print Bool
True Maybe (VS (CppSrcCode Value))
forall a. Maybe a
Nothing VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r val)
printLnFunc (VS (CppSrcCode Value) -> SrcState MethodState Statement)
-> (String -> VS (CppSrcCode Value))
-> String
-> SrcState MethodState Statement
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k) (typ :: k).
Literal r val typ =>
String -> VS (r val)
litString
instance ReadConsole CppSrcCode Statement Variable where
getInput :: SrcState ValueState Variable -> SrcState MethodState Statement
getInput SrcState ValueState Variable
v = SrcState ValueState Variable
-> VS (CppSrcCode Value) -> SrcState MethodState Statement
cppInput SrcState ValueState Variable
v VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r val)
inputFunc
discardInput :: SrcState MethodState Statement
discardInput = SrcState MethodState Statement -> SrcState MethodState Statement
forall a. MS a -> MS a
addAlgorithmImport (SrcState MethodState Statement -> SrcState MethodState Statement)
-> SrcState MethodState Statement -> SrcState MethodState Statement
forall a b. (a -> b) -> a -> b
$ SrcState MethodState Statement -> SrcState MethodState Statement
forall a. MS a -> MS a
addLimitsImport (SrcState MethodState Statement -> SrcState MethodState Statement)
-> SrcState MethodState Statement -> SrcState MethodState Statement
forall a b. (a -> b) -> a -> b
$ Char -> VS (CppSrcCode Value) -> SrcState MethodState Statement
cppDiscardInput Char
'\n'
VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r val)
inputFunc
instance FileHandling CppSrcCode Statement Variable Value where
openFileR :: SrcState ValueState Variable
-> VS (CppSrcCode Value) -> SrcState MethodState Statement
openFileR = String
-> SrcState ValueState Variable
-> VS (CppSrcCode Value)
-> SrcState MethodState Statement
cppOpenFile String
cppR
openFileW :: SrcState ValueState Variable
-> VS (CppSrcCode Value) -> SrcState MethodState Statement
openFileW = String
-> SrcState ValueState Variable
-> VS (CppSrcCode Value)
-> SrcState MethodState Statement
cppOpenFile String
cppW
openFileA :: SrcState ValueState Variable
-> VS (CppSrcCode Value) -> SrcState MethodState Statement
openFileA = String
-> SrcState ValueState Variable
-> VS (CppSrcCode Value)
-> SrcState MethodState Statement
cppOpenFile String
cppA
closeFile :: VS (CppSrcCode Value) -> SrcState MethodState Statement
closeFile = String -> VS (CppSrcCode Value) -> SrcState MethodState Statement
forall {k} (r :: k -> *) (typ :: k) (var :: k) (val :: k)
(stmt :: k).
(TypeSym r typ, InternalValueExp r var val typ,
ValueStatement r stmt val) =>
String -> VS (r val) -> MS (r stmt)
G.closeFile String
cppClose
instance PrintFile CppSrcCode Statement Value where
printFile :: VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> SrcState MethodState Statement
printFile VS (CppSrcCode Value)
f = Bool
-> Maybe (VS (CppSrcCode Value))
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> SrcState MethodState Statement
forall {k} (r :: k -> *) (block :: k) (stmt :: k) (bod :: k)
(val :: k) (scope :: k) (var :: k) (typ :: k).
(BlockSym r block stmt, BodySym r bod block, MultiStatement r stmt,
PrintConsole r stmt val, PrintFile r stmt val, ScopeSym r scope,
DeclStatement r bod stmt var scope val,
AssignStatement r stmt var val,
ControlStatement r bod stmt var val, ValueSym r val typ,
Literal r val typ, NumericExpression r val, Comparison r val,
VariableSym r var typ, VariableValue r var val, List r val,
TypeSym r typ, TypeElim r typ, InternalIOStmt r stmt val) =>
Bool
-> Maybe (VS (r val)) -> VS (r val) -> VS (r val) -> MS (r stmt)
G.print Bool
False (VS (CppSrcCode Value) -> Maybe (VS (CppSrcCode Value))
forall a. a -> Maybe a
Just VS (CppSrcCode Value)
f) (VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r val) -> VS (r val)
printFileFunc VS (CppSrcCode Value)
f)
printFileLn :: VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> SrcState MethodState Statement
printFileLn VS (CppSrcCode Value)
f = Bool
-> Maybe (VS (CppSrcCode Value))
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> SrcState MethodState Statement
forall {k} (r :: k -> *) (block :: k) (stmt :: k) (bod :: k)
(val :: k) (scope :: k) (var :: k) (typ :: k).
(BlockSym r block stmt, BodySym r bod block, MultiStatement r stmt,
PrintConsole r stmt val, PrintFile r stmt val, ScopeSym r scope,
DeclStatement r bod stmt var scope val,
AssignStatement r stmt var val,
ControlStatement r bod stmt var val, ValueSym r val typ,
Literal r val typ, NumericExpression r val, Comparison r val,
VariableSym r var typ, VariableValue r var val, List r val,
TypeSym r typ, TypeElim r typ, InternalIOStmt r stmt val) =>
Bool
-> Maybe (VS (r val)) -> VS (r val) -> VS (r val) -> MS (r stmt)
G.print Bool
True (VS (CppSrcCode Value) -> Maybe (VS (CppSrcCode Value))
forall a. a -> Maybe a
Just VS (CppSrcCode Value)
f) (VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r val) -> VS (r val)
printFileLnFunc VS (CppSrcCode Value)
f)
printFileStr :: VS (CppSrcCode Value) -> String -> SrcState MethodState Statement
printFileStr VS (CppSrcCode Value)
f = Bool
-> Maybe (VS (CppSrcCode Value))
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> SrcState MethodState Statement
forall {k} (r :: k -> *) (block :: k) (stmt :: k) (bod :: k)
(val :: k) (scope :: k) (var :: k) (typ :: k).
(BlockSym r block stmt, BodySym r bod block, MultiStatement r stmt,
PrintConsole r stmt val, PrintFile r stmt val, ScopeSym r scope,
DeclStatement r bod stmt var scope val,
AssignStatement r stmt var val,
ControlStatement r bod stmt var val, ValueSym r val typ,
Literal r val typ, NumericExpression r val, Comparison r val,
VariableSym r var typ, VariableValue r var val, List r val,
TypeSym r typ, TypeElim r typ, InternalIOStmt r stmt val) =>
Bool
-> Maybe (VS (r val)) -> VS (r val) -> VS (r val) -> MS (r stmt)
G.print Bool
False (VS (CppSrcCode Value) -> Maybe (VS (CppSrcCode Value))
forall a. a -> Maybe a
Just VS (CppSrcCode Value)
f) (VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r val) -> VS (r val)
printFileFunc VS (CppSrcCode Value)
f) (VS (CppSrcCode Value) -> SrcState MethodState Statement)
-> (String -> VS (CppSrcCode Value))
-> String
-> SrcState MethodState Statement
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k) (typ :: k).
Literal r val typ =>
String -> VS (r val)
litString
printFileStrLn :: VS (CppSrcCode Value) -> String -> SrcState MethodState Statement
printFileStrLn VS (CppSrcCode Value)
f = Bool
-> Maybe (VS (CppSrcCode Value))
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> SrcState MethodState Statement
forall {k} (r :: k -> *) (block :: k) (stmt :: k) (bod :: k)
(val :: k) (scope :: k) (var :: k) (typ :: k).
(BlockSym r block stmt, BodySym r bod block, MultiStatement r stmt,
PrintConsole r stmt val, PrintFile r stmt val, ScopeSym r scope,
DeclStatement r bod stmt var scope val,
AssignStatement r stmt var val,
ControlStatement r bod stmt var val, ValueSym r val typ,
Literal r val typ, NumericExpression r val, Comparison r val,
VariableSym r var typ, VariableValue r var val, List r val,
TypeSym r typ, TypeElim r typ, InternalIOStmt r stmt val) =>
Bool
-> Maybe (VS (r val)) -> VS (r val) -> VS (r val) -> MS (r stmt)
G.print Bool
True (VS (CppSrcCode Value) -> Maybe (VS (CppSrcCode Value))
forall a. a -> Maybe a
Just VS (CppSrcCode Value)
f) (VS (CppSrcCode Value) -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r val) -> VS (r val)
printFileLnFunc VS (CppSrcCode Value)
f) (VS (CppSrcCode Value) -> SrcState MethodState Statement)
-> (String -> VS (CppSrcCode Value))
-> String
-> SrcState MethodState Statement
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k) (typ :: k).
Literal r val typ =>
String -> VS (r val)
litString
instance ReadFile CppSrcCode Statement Variable Value where
getFileInput :: VS (CppSrcCode Value)
-> SrcState ValueState Variable -> SrcState MethodState Statement
getFileInput VS (CppSrcCode Value)
f SrcState ValueState Variable
v = SrcState ValueState Variable
-> VS (CppSrcCode Value) -> SrcState MethodState Statement
cppInput SrcState ValueState Variable
v VS (CppSrcCode Value)
f
discardFileInput :: VS (CppSrcCode Value) -> SrcState MethodState Statement
discardFileInput VS (CppSrcCode Value)
f = SrcState MethodState Statement -> SrcState MethodState Statement
forall a. MS a -> MS a
addAlgorithmImport (SrcState MethodState Statement -> SrcState MethodState Statement)
-> SrcState MethodState Statement -> SrcState MethodState Statement
forall a b. (a -> b) -> a -> b
$ SrcState MethodState Statement -> SrcState MethodState Statement
forall a. MS a -> MS a
addLimitsImport (SrcState MethodState Statement -> SrcState MethodState Statement)
-> SrcState MethodState Statement -> SrcState MethodState Statement
forall a b. (a -> b) -> a -> b
$
Char -> VS (CppSrcCode Value) -> SrcState MethodState Statement
cppDiscardInput Char
' ' VS (CppSrcCode Value)
f
getFileInputLine :: VS (CppSrcCode Value)
-> SrcState ValueState Variable -> SrcState MethodState Statement
getFileInputLine VS (CppSrcCode Value)
f SrcState ValueState Variable
v = VS (CppSrcCode Value) -> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (val :: k).
ValueStatement r stmt val =>
VS (r val) -> MS (r stmt)
valStmt (VS (CppSrcCode Value) -> SrcState MethodState Statement)
-> VS (CppSrcCode Value) -> SrcState MethodState Statement
forall a b. (a -> b) -> a -> b
$ VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
getLineFunc VS (CppSrcCode Value)
f (SrcState ValueState Variable -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k).
VariableValue r var val =>
VS (r var) -> VS (r val)
valueOf SrcState ValueState Variable
v)
discardFileLine :: VS (CppSrcCode Value) -> SrcState MethodState Statement
discardFileLine VS (CppSrcCode Value)
f = SrcState MethodState Statement -> SrcState MethodState Statement
forall a. MS a -> MS a
addLimitsImport (SrcState MethodState Statement -> SrcState MethodState Statement)
-> SrcState MethodState Statement -> SrcState MethodState Statement
forall a b. (a -> b) -> a -> b
$ Char -> VS (CppSrcCode Value) -> SrcState MethodState Statement
cppDiscardInput Char
'\n' VS (CppSrcCode Value)
f
getFileInputAll :: VS (CppSrcCode Value)
-> SrcState ValueState Variable -> SrcState MethodState Statement
getFileInputAll VS (CppSrcCode Value)
f SrcState ValueState Variable
v = do
v' <- LensLike'
(Zoomed (StateT ValueState Identity) (CppSrcCode Variable))
MethodState
ValueState
-> SrcState ValueState Variable
-> StateT MethodState Identity (CppSrcCode Variable)
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) (CppSrcCode Variable))
MethodState
ValueState
(ValueState -> Focusing Identity (CppSrcCode Variable) ValueState)
-> MethodState
-> Focusing Identity (CppSrcCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS SrcState ValueState Variable
v
scpData <- getVarScope $ variableName v'
let scp = ScopeData -> CppSrcCode ScopeData
forall {k} (r :: k -> *) (scope :: k).
ScopeSym r scope =>
ScopeData -> r scope
convScope ScopeData
scpData
l_line = String
"nextLine"
var_line = String
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable
forall {k} (r :: k -> *) (var :: k) (typ :: k).
VariableSym r var typ =>
String -> VS (r typ) -> VS (r var)
var String
l_line State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
string
v_line = SrcState ValueState Variable -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k).
VariableValue r var val =>
VS (r var) -> VS (r val)
valueOf SrcState ValueState Variable
var_line
multi [varDec var_line scp,
while (getLineFunc f v_line)
(oneLiner $ listAppend (valueOf v) v_line)]
instance StringStatement CppSrcCode Statement Variable Value where
stringSplit :: Char
-> SrcState ValueState Variable
-> VS (CppSrcCode Value)
-> SrcState MethodState Statement
stringSplit Char
d SrcState ValueState Variable
vnew VS (CppSrcCode Value)
s = do
vn <- LensLike'
(Zoomed (StateT ValueState Identity) (CppSrcCode Variable))
MethodState
ValueState
-> SrcState ValueState Variable
-> StateT MethodState Identity (CppSrcCode Variable)
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) (CppSrcCode Variable))
MethodState
ValueState
(ValueState -> Focusing Identity (CppSrcCode Variable) ValueState)
-> MethodState
-> Focusing Identity (CppSrcCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS SrcState ValueState Variable
vnew
scpData <- getVarScope $ variableName vn
let scp = ScopeData -> CppSrcCode ScopeData
forall {k} (r :: k -> *) (scope :: k).
ScopeSym r scope =>
ScopeData -> r scope
convScope ScopeData
scpData
l_ss = String
"ss"
var_ss = String
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable
forall {k} (r :: k -> *) (var :: k) (typ :: k).
VariableSym r var typ =>
String -> VS (r typ) -> VS (r var)
var String
l_ss (String -> State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k).
OOTypeSym r typ =>
String -> VS (r typ)
obj String
stringstream)
v_ss = SrcState ValueState Variable -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k).
VariableValue r var val =>
VS (r var) -> VS (r val)
valueOf SrcState ValueState Variable
var_ss
l_word = String
"word"
var_word = String
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable
forall {k} (r :: k -> *) (var :: k) (typ :: k).
VariableSym r var typ =>
String -> VS (r typ) -> VS (r var)
var String
l_word State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
string
v_word = SrcState ValueState Variable -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k).
VariableValue r var val =>
VS (r var) -> VS (r val)
valueOf SrcState ValueState Variable
var_word
modify (addLangImport sstream) >> multi [
valStmt $ valueOf vnew $. clearFunc,
varDec var_ss scp,
valStmt $ strFunc v_ss s,
varDec var_word scp,
while (getLine3ArgFunc v_ss v_word d)
(oneLiner $ listAppend (valueOf vnew) v_word)
]
stringListVals :: [SrcState ValueState Variable]
-> VS (CppSrcCode Value) -> SrcState MethodState Statement
stringListVals = [SrcState ValueState Variable]
-> VS (CppSrcCode Value) -> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (var :: k) (val :: k)
(typ :: k).
(MultiStatement r stmt, AssignStatement r stmt var val, List r val,
ValueSym r val typ, Literal r val typ, RenderValue r var val typ,
TypeElim r typ, VariableElim r var typ) =>
[VS (r var)] -> VS (r val) -> MS (r stmt)
M.stringListVals
stringListLists :: [SrcState ValueState Variable]
-> VS (CppSrcCode Value) -> SrcState MethodState Statement
stringListLists = [SrcState ValueState Variable]
-> VS (CppSrcCode Value) -> SrcState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (block :: k) (stmt :: k)
(var :: k) (val :: k) (typ :: k).
(BodySym r bod block, BlockSym r block stmt,
ControlStatement r bod stmt var val, TypeSym r typ,
ValueSym r val typ, Literal r val typ, NumericExpression r val,
VariableSym r var typ, VariableValue r var val, List r val,
ListStatement r stmt val, TypeElim r typ, VariableElim r var typ,
RenderValue r var val typ) =>
[VS (r var)] -> VS (r val) -> MS (r stmt)
M.stringListLists
instance FuncAppStatement CppSrcCode Statement Variable Value where
inOutCall :: InOutCall CppSrcCode Statement Variable Value
inOutCall = (String
-> State ValueState (CppSrcCode TypeData)
-> [VS (CppSrcCode Value)]
-> VS (CppSrcCode Value))
-> InOutCall CppSrcCode Statement Variable Value
cppInOutCall String
-> State ValueState (CppSrcCode TypeData)
-> [VS (CppSrcCode Value)]
-> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (binder :: k)
(typ :: k).
ValueExpression r var val binder typ =>
PosCall r val typ
funcApp
extInOutCall :: String -> InOutCall CppSrcCode Statement Variable Value
extInOutCall String
m = (String
-> State ValueState (CppSrcCode TypeData)
-> [VS (CppSrcCode Value)]
-> VS (CppSrcCode Value))
-> InOutCall CppSrcCode Statement Variable Value
cppInOutCall (String
-> String
-> State ValueState (CppSrcCode TypeData)
-> [VS (CppSrcCode Value)]
-> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (binder :: k)
(typ :: k).
ValueExpression r var val binder typ =>
String -> PosCall r val typ
extFuncApp String
m)
instance OOFuncAppStatement CppSrcCode Statement Variable Value where
selfInOutCall :: InOutCall CppSrcCode Statement Variable Value
selfInOutCall = (String
-> State ValueState (CppSrcCode TypeData)
-> [VS (CppSrcCode Value)]
-> VS (CppSrcCode Value))
-> InOutCall CppSrcCode Statement Variable Value
cppInOutCall String
-> State ValueState (CppSrcCode TypeData)
-> [VS (CppSrcCode Value)]
-> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
(InternalValueExp r var val typ, VariableValue r var val,
SelfSym r var) =>
PosCall r val typ
selfMethodCall
instance CommentStatement CppSrcCode Statement where
comment :: String -> SrcState MethodState Statement
comment = Doc -> String -> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
RenderStatement r stmt =>
Doc -> String -> MS (r stmt)
G.comment Doc
commentStart
instance ControlStatement CppSrcCode Body Statement Variable Value where
break :: SrcState MethodState Statement
break = Doc -> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
RenderStatement r stmt =>
Doc -> MS (r stmt)
mkStmt Doc
R.break
continue :: SrcState MethodState Statement
continue = Doc -> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
RenderStatement r stmt =>
Doc -> MS (r stmt)
mkStmt Doc
R.continue
returnStmt :: VS (CppSrcCode Value) -> SrcState MethodState Statement
returnStmt = Terminator
-> VS (CppSrcCode Value) -> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (val :: k).
(RenderStatement r stmt, ValueElim r val) =>
Terminator -> VS (r val) -> MS (r stmt)
G.returnStmt Terminator
Semi
throw :: String -> SrcState MethodState Statement
throw = (CppSrcCode Value -> Doc)
-> Terminator -> String -> SrcState MethodState Statement
forall {k} (r :: k -> *) (val :: k) (typ :: k) (stmt :: k).
(Literal r val typ, RenderStatement r stmt) =>
(r val -> Doc) -> Terminator -> String -> MS (r stmt)
G.throw CppSrcCode Value -> Doc
forall {k} (r :: k -> *) (val :: k).
ValueElim r val =>
r val -> Doc
cppThrowDoc Terminator
Semi
ifCond :: [(VS (CppSrcCode Value), SrcState MethodState Doc)]
-> SrcState MethodState Doc -> SrcState MethodState Statement
ifCond = (Doc -> Doc)
-> Doc
-> OptionalSpace
-> Doc
-> Doc
-> Doc
-> [(VS (CppSrcCode Value), SrcState MethodState Doc)]
-> SrcState MethodState Doc
-> SrcState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (val :: k).
(BodyElim r bod, RenderStatement r stmt, ValueElim r val) =>
(Doc -> Doc)
-> Doc
-> OptionalSpace
-> Doc
-> Doc
-> Doc
-> [(VS (r val), MS (r bod))]
-> MS (r bod)
-> MS (r stmt)
G.ifCond Doc -> Doc
parens Doc
bodyStart OptionalSpace
G.defaultOptSpace Doc
elseIfLabel Doc
bodyEnd Doc
empty
switch :: VS (CppSrcCode Value)
-> [(VS (CppSrcCode Value), SrcState MethodState Doc)]
-> SrcState MethodState Doc
-> SrcState MethodState Statement
switch = (Doc -> Doc)
-> SrcState MethodState Statement
-> VS (CppSrcCode Value)
-> [(VS (CppSrcCode Value), SrcState MethodState Doc)]
-> SrcState MethodState Doc
-> SrcState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (val :: k).
(BodyElim r bod, RenderStatement r stmt, StatementElim r stmt,
ValueElim r val) =>
(Doc -> Doc)
-> MS (r stmt)
-> VS (r val)
-> [(VS (r val), MS (r bod))]
-> MS (r bod)
-> MS (r stmt)
C.switch Doc -> Doc
parens SrcState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(val :: k).
ControlStatement r bod stmt var val =>
MS (r stmt)
break
ifExists :: VS (CppSrcCode Value)
-> SrcState MethodState Doc
-> SrcState MethodState Doc
-> SrcState MethodState Statement
ifExists VS (CppSrcCode Value)
_ SrcState MethodState Doc
ifBody SrcState MethodState Doc
_ = do
ifb <- SrcState MethodState Doc
ifBody
mkStmtNoEnd (RC.body ifb)
for :: SrcState MethodState Statement
-> VS (CppSrcCode Value)
-> SrcState MethodState Statement
-> SrcState MethodState Doc
-> SrcState MethodState Statement
for = Doc
-> Doc
-> SrcState MethodState Statement
-> VS (CppSrcCode Value)
-> SrcState MethodState Statement
-> SrcState MethodState Doc
-> SrcState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (val :: k).
(BodyElim r bod, RenderStatement r stmt, StatementElim r stmt,
ValueElim r val) =>
Doc
-> Doc
-> MS (r stmt)
-> VS (r val)
-> MS (r stmt)
-> MS (r bod)
-> MS (r stmt)
C.for Doc
bodyStart Doc
bodyEnd
forRange :: SrcState ValueState Variable
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> SrcState MethodState Doc
-> SrcState MethodState Statement
forRange = SrcState ValueState Variable
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
-> SrcState MethodState Doc
-> SrcState MethodState Statement
forall {k} (r :: k -> *) (scope :: k) (bod :: k) (stmt :: k)
(var :: k) (val :: k).
(ScopeSym r scope, DeclStatement r bod stmt var scope val,
AssignStatement r stmt var val,
ControlStatement r bod stmt var val, Comparison r val,
VariableValue r var val) =>
VS (r var)
-> VS (r val)
-> VS (r val)
-> VS (r val)
-> MS (r bod)
-> MS (r stmt)
M.forRange
forEach :: SrcState ValueState Variable
-> VS (CppSrcCode Value)
-> SrcState MethodState Doc
-> SrcState MethodState Statement
forEach = Doc
-> Doc
-> Doc
-> Doc
-> SrcState ValueState Variable
-> VS (CppSrcCode Value)
-> SrcState MethodState Doc
-> SrcState MethodState Statement
cppForEach Doc
bodyStart Doc
bodyEnd (String -> Doc
text String
cppFor) (String -> Doc
text String
cppIn)
while :: VS (CppSrcCode Value)
-> SrcState MethodState Doc -> SrcState MethodState Statement
while = (Doc -> Doc)
-> Doc
-> Doc
-> VS (CppSrcCode Value)
-> SrcState MethodState Doc
-> SrcState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (val :: k).
(BodyElim r bod, RenderStatement r stmt, ValueElim r val) =>
(Doc -> Doc)
-> Doc -> Doc -> VS (r val) -> MS (r bod) -> MS (r stmt)
C.while Doc -> Doc
parens Doc
bodyStart Doc
bodyEnd
tryCatch :: SrcState MethodState Doc
-> SrcState MethodState Doc -> SrcState MethodState Statement
tryCatch = (CppSrcCode Doc -> CppSrcCode Doc -> Doc)
-> SrcState MethodState Doc
-> SrcState MethodState Doc
-> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (bod :: k).
RenderStatement r stmt =>
(r bod -> r bod -> Doc) -> MS (r bod) -> MS (r bod) -> MS (r stmt)
G.tryCatch CppSrcCode Doc -> CppSrcCode Doc -> Doc
forall {k} (r :: k -> *) (bod :: k).
BodyElim r bod =>
r bod -> r bod -> Doc
cppTryCatch
assert :: VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> SrcState MethodState Statement
assert VS (CppSrcCode Value)
condition VS (CppSrcCode Value)
errorMessage = do
SrcState MethodState Statement -> SrcState MethodState Statement
forall a. MS a -> MS a
addCAssertImport (SrcState MethodState Statement -> SrcState MethodState Statement)
-> SrcState MethodState Statement -> SrcState MethodState Statement
forall a b. (a -> b) -> a -> b
$ do
cond <- LensLike'
(Zoomed (StateT ValueState Identity) (CppSrcCode Value))
MethodState
ValueState
-> VS (CppSrcCode Value)
-> StateT MethodState Identity (CppSrcCode Value)
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) (CppSrcCode Value))
MethodState
ValueState
(ValueState -> Focusing Identity (CppSrcCode Value) ValueState)
-> MethodState -> Focusing Identity (CppSrcCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS VS (CppSrcCode Value)
condition
errMsg <- zoom lensMStoVS errorMessage
mkStmtNoEnd (cppAssert cond errMsg)
instance ObserverPattern CppSrcCode Statement TypeData where
notifyObservers :: SrcState ValueState FuncData
-> State ValueState (CppSrcCode TypeData)
-> SrcState MethodState Statement
notifyObservers = SrcState ValueState FuncData
-> State ValueState (CppSrcCode TypeData)
-> SrcState MethodState Statement
forall (r :: * -> *) bod block stmt typ val var scope.
(BodySym r bod block, BlockSym r block stmt, TypeSym r typ,
Literal r val typ, VariableSym r var typ, VariableValue r var val,
Comparison r val, List r val, ValueStatement r stmt val,
ScopeSym r scope, DeclStatement r bod stmt var scope val,
AssignStatement r stmt var val,
ControlStatement r bod stmt var val, OOFunctionSym r val typ) =>
VS (r FuncData) -> VS (r typ) -> MS (r stmt)
M.notifyObservers
instance StrategyPattern CppSrcCode Body Block Variable Value where
runStrategy :: String
-> [(String, SrcState MethodState Doc)]
-> Maybe (VS (CppSrcCode Value))
-> Maybe (SrcState ValueState Variable)
-> SrcState MethodState Doc
runStrategy = String
-> [(String, SrcState MethodState Doc)]
-> Maybe (VS (CppSrcCode Value))
-> Maybe (SrcState ValueState Variable)
-> SrcState MethodState Doc
forall (r :: * -> *) stmt var val bod.
(EmptyStatement r stmt, AssignStatement r stmt var val,
BodyElim r bod, Monad r, RenderStatement r stmt,
StatementElim r stmt) =>
String
-> [(String, MS (r bod))]
-> Maybe (VS (r val))
-> Maybe (VS (r var))
-> MS (r Doc)
M.runStrategy
instance VisibilitySym CppSrcCode (Doc, VisibilityTag) where
private :: CppSrcCode (Doc, VisibilityTag)
private = (Doc, VisibilityTag) -> CppSrcCode (Doc, VisibilityTag)
forall (r :: * -> *) a. Monad r => a -> r a
toCode (Doc
R.private, VisibilityTag
Priv)
public :: CppSrcCode (Doc, VisibilityTag)
public = (Doc, VisibilityTag) -> CppSrcCode (Doc, VisibilityTag)
forall (r :: * -> *) a. Monad r => a -> r a
toCode (Doc
R.public, VisibilityTag
Pub)
instance RenderVisibility CppSrcCode (Doc, VisibilityTag) where
visibilityFromData :: VisibilityTag -> Doc -> CppSrcCode (Doc, VisibilityTag)
visibilityFromData VisibilityTag
s Doc
d = (Doc, VisibilityTag) -> CppSrcCode (Doc, VisibilityTag)
forall (r :: * -> *) a. Monad r => a -> r a
toCode (Doc
d, VisibilityTag
s)
instance VisibilityElim CppSrcCode (Doc, VisibilityTag) where
visibility :: CppSrcCode (Doc, VisibilityTag) -> Doc
visibility = (Doc, VisibilityTag) -> Doc
forall a b. (a, b) -> a
fst ((Doc, VisibilityTag) -> Doc)
-> (CppSrcCode (Doc, VisibilityTag) -> (Doc, VisibilityTag))
-> CppSrcCode (Doc, VisibilityTag)
-> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppSrcCode (Doc, VisibilityTag) -> (Doc, VisibilityTag)
forall a. CppSrcCode a -> a
unCPPSC
instance MethodTypeSym CppSrcCode TypeData where
mType :: State ValueState (CppSrcCode TypeData)
-> SrcState MethodState TypeData
mType = LensLike'
(Zoomed (StateT ValueState Identity) (CppSrcCode TypeData))
MethodState
ValueState
-> State ValueState (CppSrcCode TypeData)
-> SrcState MethodState TypeData
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) (CppSrcCode TypeData))
MethodState
ValueState
(ValueState -> Focusing Identity (CppSrcCode TypeData) ValueState)
-> MethodState
-> Focusing Identity (CppSrcCode TypeData) MethodState
Lens' MethodState ValueState
lensMStoVS
instance OOMethodTypeSym CppSrcCode TypeData where
construct :: String -> SrcState MethodState TypeData
construct = String -> SrcState MethodState TypeData
forall (r :: * -> *). Monad r => String -> MS (r TypeData)
G.construct
instance ParameterSym CppSrcCode ParamData Variable where
param :: SrcState ValueState Variable -> SrcState MethodState ParamData
param = (CppSrcCode Variable -> Doc)
-> SrcState ValueState Variable -> SrcState MethodState ParamData
forall {k} (r :: k -> *) (param :: k) (var :: k) (typ :: k).
(RenderParam r param var, VariableElim r var typ) =>
(r var -> Doc) -> VS (r var) -> MS (r param)
G.param CppSrcCode Variable -> Doc
forall (r :: * -> *) var.
(InternalVarElim r var, UnRepr r TypeData,
VariableElim r var TypeData) =>
r var -> Doc
renderParam
pointerParam :: SrcState ValueState Variable -> SrcState MethodState ParamData
pointerParam = (CppSrcCode Variable -> Doc)
-> SrcState ValueState Variable -> SrcState MethodState ParamData
forall {k} (r :: k -> *) (param :: k) (var :: k) (typ :: k).
(RenderParam r param var, VariableElim r var typ) =>
(r var -> Doc) -> VS (r var) -> MS (r param)
G.param CppSrcCode Variable -> Doc
forall (r :: * -> *) var.
(InternalVarElim r var, UnRepr r TypeData,
VariableElim r var TypeData) =>
r var -> Doc
cppPointerParamDoc
instance RenderParam CppSrcCode ParamData Variable where
paramFromData :: SrcState ValueState Variable
-> Doc -> SrcState MethodState ParamData
paramFromData SrcState ValueState Variable
v' Doc
d = do
v <- LensLike'
(Zoomed (StateT ValueState Identity) (CppSrcCode Variable))
MethodState
ValueState
-> SrcState ValueState Variable
-> StateT MethodState Identity (CppSrcCode Variable)
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) (CppSrcCode Variable))
MethodState
ValueState
(ValueState -> Focusing Identity (CppSrcCode Variable) ValueState)
-> MethodState
-> Focusing Identity (CppSrcCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS SrcState ValueState Variable
v'
toState $ on2CodeValues pd v (toCode d)
instance ParamElim CppSrcCode ParamData TypeData where
parameterName :: CppSrcCode ParamData -> String
parameterName = CppSrcCode Variable -> String
forall {k} (r :: k -> *) (var :: k) (typ :: k).
VariableElim r var typ =>
r var -> String
variableName (CppSrcCode Variable -> String)
-> (CppSrcCode ParamData -> CppSrcCode Variable)
-> CppSrcCode ParamData
-> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ParamData -> Variable)
-> CppSrcCode ParamData -> CppSrcCode Variable
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
onCodeValue ParamData -> Variable
paramVar
parameterType :: CppSrcCode ParamData -> CppSrcCode TypeData
parameterType = CppSrcCode Variable -> CppSrcCode TypeData
forall {k} (r :: k -> *) (var :: k) (typ :: k).
VariableElim r var typ =>
r var -> r typ
variableType (CppSrcCode Variable -> CppSrcCode TypeData)
-> (CppSrcCode ParamData -> CppSrcCode Variable)
-> CppSrcCode ParamData
-> CppSrcCode TypeData
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ParamData -> Variable)
-> CppSrcCode ParamData -> CppSrcCode Variable
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
onCodeValue ParamData -> Variable
paramVar
parameter :: CppSrcCode ParamData -> Doc
parameter = ParamData -> Doc
paramDoc (ParamData -> Doc)
-> (CppSrcCode ParamData -> ParamData)
-> CppSrcCode ParamData
-> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppSrcCode ParamData -> ParamData
forall a. CppSrcCode a -> a
unCPPSC
instance MethodSym CppSrcCode MethodData (Doc, VisibilityTag) ParamData Body Variable TypeData where
docMain :: SrcState MethodState Doc -> SrcState MethodState MethodData
docMain SrcState MethodState Doc
b = SrcState MethodState Doc
-> SrcState MethodState MethodData
-> SrcState MethodState MethodData
forall (r :: * -> *) mthd.
RenderMethod r mthd =>
MS (r Doc) -> MS (r mthd) -> MS (r mthd)
commentedFunc (State MethodState [String] -> SrcState MethodState Doc
forall a. State a [String] -> State a (CppSrcCode Doc)
forall (r :: * -> *) a.
BlockCommentSym r =>
State a [String] -> State a (r Doc)
docComment (State MethodState [String] -> SrcState MethodState Doc)
-> State MethodState [String] -> SrcState MethodState Doc
forall a b. (a -> b) -> a -> b
$ [String] -> State MethodState [String]
forall a s. a -> State s a
toState ([String] -> State MethodState [String])
-> [String] -> State MethodState [String]
forall a b. (a -> b) -> a -> b
$ FuncDocRenderer
functionDox String
mainDesc
[(String
argc, String
argcDesc), (String
argv, String
argvDesc)] [String
mainReturnDesc]) (SrcState MethodState Doc -> SrcState MethodState MethodData
forall {k} (r :: k -> *) (mthd :: k) (vis :: k) (param :: k)
(bod :: k) (var :: k) (typ :: k).
MethodSym r mthd vis param bod var typ =>
MS (r bod) -> MS (r mthd)
mainFunction SrcState MethodState Doc
b)
function :: String
-> CppSrcCode (Doc, VisibilityTag)
-> State ValueState (CppSrcCode TypeData)
-> [SrcState MethodState ParamData]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData
function = String
-> CppSrcCode (Doc, VisibilityTag)
-> State ValueState (CppSrcCode TypeData)
-> [SrcState MethodState ParamData]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData
forall {k} (r :: k -> *) (attch :: k) (typ :: k) (mthd :: k)
(vis :: k) (param :: k) (bod :: k).
(AttachmentSym r attch, MethodTypeSym r typ,
OORenderMethod r mthd attch vis param bod typ) =>
String
-> r vis
-> VS (r typ)
-> [MS (r param)]
-> MS (r bod)
-> MS (r mthd)
G.function
mainFunction :: SrcState MethodState Doc -> SrcState MethodState MethodData
mainFunction SrcState MethodState Doc
b = Bool
-> String
-> CppSrcCode (Doc, VisibilityTag)
-> CppSrcCode AttachmentData
-> SrcState MethodState TypeData
-> [SrcState MethodState ParamData]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData
forall {k} (r :: k -> *) (mthd :: k) (attch :: k) (vis :: k)
(param :: k) (bod :: k) (typ :: k).
OORenderMethod r mthd attch vis param bod typ =>
Bool
-> String
-> r vis
-> r attch
-> MS (r typ)
-> [MS (r param)]
-> MS (r bod)
-> MS (r mthd)
intFunc Bool
True String
mainFunc CppSrcCode (Doc, VisibilityTag)
forall {k} (r :: k -> *) (vis :: k). VisibilitySym r vis => r vis
public CppSrcCode AttachmentData
forall {k} (r :: k -> *) (attch :: k).
AttachmentSym r attch =>
r attch
classLevel (State ValueState (CppSrcCode TypeData)
-> SrcState MethodState TypeData
forall {k} (r :: k -> *) (typ :: k).
MethodTypeSym r typ =>
VS (r typ) -> MS (r typ)
mType State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
int)
[SrcState ValueState Variable -> SrcState MethodState ParamData
forall {k} (r :: k -> *) (param :: k) (var :: k).
ParameterSym r param var =>
VS (r var) -> MS (r param)
param SrcState ValueState Variable
argcVar, SrcState ValueState Variable -> SrcState MethodState ParamData
forall {k} (r :: k -> *) (param :: k) (var :: k).
ParameterSym r param var =>
VS (r var) -> MS (r param)
param SrcState ValueState Variable
argvVar]
((CppSrcCode Doc -> CppSrcCode Statement -> CppSrcCode Doc)
-> SrcState MethodState Doc
-> SrcState MethodState Statement
-> SrcState MethodState Doc
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues ((Doc -> Statement -> Doc)
-> CppSrcCode Doc -> CppSrcCode Statement -> CppSrcCode Doc
forall (r :: * -> *) a b c.
Applicative r =>
(a -> b -> c) -> r a -> r b -> r c
on2CodeValues Doc -> Statement -> Doc
appendToBody) SrcState MethodState Doc
b (VS (CppSrcCode Value) -> SrcState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(val :: k).
ControlStatement r bod stmt var val =>
VS (r val) -> MS (r stmt)
returnStmt (VS (CppSrcCode Value) -> SrcState MethodState Statement)
-> VS (CppSrcCode Value) -> SrcState MethodState Statement
forall a b. (a -> b) -> a -> b
$ Integer -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k) (typ :: k).
Literal r val typ =>
Integer -> VS (r val)
litInt Integer
0))
where argcVar :: SrcState ValueState Variable
argcVar = String
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable
forall {k} (r :: k -> *) (var :: k) (typ :: k).
VariableSym r var typ =>
String -> VS (r typ) -> VS (r var)
var String
argc State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
int
argvVar :: SrcState ValueState Variable
argvVar = do
t <- CodeType -> String -> Doc -> State ValueState (CppSrcCode TypeData)
forall (r :: * -> *).
Monad r =>
CodeType -> String -> Doc -> VS (r TypeData)
typeFromData (CodeType -> CodeType
List CodeType
String)
(String
constDec String -> String -> String
forall a. Semigroup a => a -> a -> a
P.<> String
" " String -> String -> String
forall a. Semigroup a => a -> a -> a
P.<> String
C.charRender) (Doc
constDec' Doc -> Doc -> Doc
<+> String -> Doc
text
String
C.charRender)
mkVar argv t (cppDeref <> text argv <> array')
docFunc :: String
-> [String]
-> Maybe String
-> SrcState MethodState MethodData
-> SrcState MethodState MethodData
docFunc = String
-> [String]
-> Maybe String
-> SrcState MethodState MethodData
-> SrcState MethodState MethodData
forall (r :: * -> *) mthd.
(BlockCommentSym r, RenderMethod r mthd) =>
String -> [String] -> Maybe String -> MS (r mthd) -> MS (r mthd)
CP.doxFunc
inOutFunc :: String
-> CppSrcCode (Doc, VisibilityTag)
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData
inOutFunc String
n CppSrcCode (Doc, VisibilityTag)
s = (State ValueState (CppSrcCode TypeData)
-> [SrcState MethodState ParamData]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData)
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData
forall mthd.
(State ValueState (CppSrcCode TypeData)
-> [SrcState MethodState ParamData]
-> SrcState MethodState Doc
-> MS (CppSrcCode mthd))
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> SrcState MethodState Doc
-> MS (CppSrcCode mthd)
cppsInOut (String
-> CppSrcCode (Doc, VisibilityTag)
-> State ValueState (CppSrcCode TypeData)
-> [SrcState MethodState ParamData]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData
forall {k} (r :: k -> *) (mthd :: k) (vis :: k) (param :: k)
(bod :: k) (var :: k) (typ :: k).
MethodSym r mthd vis param bod var typ =>
String
-> r vis
-> VS (r typ)
-> [MS (r param)]
-> MS (r bod)
-> MS (r mthd)
function String
n CppSrcCode (Doc, VisibilityTag)
s)
docInOutFunc :: String
-> CppSrcCode (Doc, VisibilityTag)
-> DocInOutFunc CppSrcCode MethodData Doc Variable
docInOutFunc String
n CppSrcCode (Doc, VisibilityTag)
s = ([SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData)
-> DocInOutFunc CppSrcCode MethodData Doc Variable
forall (r :: * -> *) mthd var bod.
(BlockCommentSym r, RenderMethod r mthd) =>
([VS (r var)]
-> [VS (r var)] -> [VS (r var)] -> MS (r bod) -> MS (r mthd))
-> String
-> [(String, VS (r var))]
-> [(String, VS (r var))]
-> [(String, VS (r var))]
-> MS (r bod)
-> MS (r mthd)
CP.docInOutFunc (String
-> CppSrcCode (Doc, VisibilityTag)
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData
forall {k} (r :: k -> *) (mthd :: k) (vis :: k) (param :: k)
(bod :: k) (var :: k) (typ :: k).
MethodSym r mthd vis param bod var typ =>
String -> r vis -> InOutFunc r mthd bod var
inOutFunc String
n CppSrcCode (Doc, VisibilityTag)
s)
instance OOMethodSym CppSrcCode MethodData AttachmentData (Doc, VisibilityTag) ParamData Body Variable Value TypeData where
method :: String
-> CppSrcCode (Doc, VisibilityTag)
-> CppSrcCode AttachmentData
-> State ValueState (CppSrcCode TypeData)
-> [SrcState MethodState ParamData]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData
method = String
-> CppSrcCode (Doc, VisibilityTag)
-> CppSrcCode AttachmentData
-> State ValueState (CppSrcCode TypeData)
-> [SrcState MethodState ParamData]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData
forall {k} (r :: k -> *) (typ :: k) (mthd :: k) (attch :: k)
(vis :: k) (param :: k) (bod :: k).
(MethodTypeSym r typ,
OORenderMethod r mthd attch vis param bod typ) =>
String
-> r vis
-> r attch
-> VS (r typ)
-> [MS (r param)]
-> MS (r bod)
-> MS (r mthd)
G.method
getMethod :: SrcState ValueState Variable -> SrcState MethodState MethodData
getMethod = SrcState ValueState Variable -> SrcState MethodState MethodData
forall (r :: * -> *) file mod cls stvr mthd attch vis param bod
block stmt var scope val binder typ.
OORenderSym
r
file
mod
cls
stvr
mthd
attch
vis
param
bod
block
stmt
var
scope
val
binder
typ =>
VS (r var) -> MS (r mthd)
G.getMethod
setMethod :: SrcState ValueState Variable -> SrcState MethodState MethodData
setMethod = SrcState ValueState Variable -> SrcState MethodState MethodData
forall (r :: * -> *) file mod cls stvr mthd attch vis param bod
block stmt var scope val binder typ.
OORenderSym
r
file
mod
cls
stvr
mthd
attch
vis
param
bod
block
stmt
var
scope
val
binder
typ =>
VS (r var) -> MS (r mthd)
G.setMethod
constructor :: [SrcState MethodState ParamData]
-> [(SrcState ValueState Variable, VS (CppSrcCode Value))]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData
constructor = [SrcState MethodState ParamData]
-> [(SrcState ValueState Variable, VS (CppSrcCode Value))]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData
cppConstructor
inOutMethod :: String
-> CppSrcCode (Doc, VisibilityTag)
-> CppSrcCode AttachmentData
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData
inOutMethod String
n CppSrcCode (Doc, VisibilityTag)
s CppSrcCode AttachmentData
p = (State ValueState (CppSrcCode TypeData)
-> [SrcState MethodState ParamData]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData)
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData
forall mthd.
(State ValueState (CppSrcCode TypeData)
-> [SrcState MethodState ParamData]
-> SrcState MethodState Doc
-> MS (CppSrcCode mthd))
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> SrcState MethodState Doc
-> MS (CppSrcCode mthd)
cppsInOut (String
-> CppSrcCode (Doc, VisibilityTag)
-> CppSrcCode AttachmentData
-> State ValueState (CppSrcCode TypeData)
-> [SrcState MethodState ParamData]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData
forall {k} (r :: k -> *) (mthd :: k) (attch :: k) (vis :: k)
(param :: k) (bod :: k) (var :: k) (val :: k) (typ :: k).
OOMethodSym r mthd attch vis param bod var val typ =>
String
-> r vis
-> r attch
-> VS (r typ)
-> [MS (r param)]
-> MS (r bod)
-> MS (r mthd)
method String
n CppSrcCode (Doc, VisibilityTag)
s CppSrcCode AttachmentData
p)
docInOutMethod :: String
-> CppSrcCode (Doc, VisibilityTag)
-> CppSrcCode AttachmentData
-> DocInOutFunc CppSrcCode MethodData Doc Variable
docInOutMethod String
n CppSrcCode (Doc, VisibilityTag)
s CppSrcCode AttachmentData
p = ([SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData)
-> DocInOutFunc CppSrcCode MethodData Doc Variable
forall (r :: * -> *) mthd var bod.
(BlockCommentSym r, RenderMethod r mthd) =>
([VS (r var)]
-> [VS (r var)] -> [VS (r var)] -> MS (r bod) -> MS (r mthd))
-> String
-> [(String, VS (r var))]
-> [(String, VS (r var))]
-> [(String, VS (r var))]
-> MS (r bod)
-> MS (r mthd)
CP.docInOutFunc (String
-> CppSrcCode (Doc, VisibilityTag)
-> CppSrcCode AttachmentData
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData
forall {k} (r :: k -> *) (mthd :: k) (attch :: k) (vis :: k)
(param :: k) (bod :: k) (var :: k) (val :: k) (typ :: k).
OOMethodSym r mthd attch vis param bod var val typ =>
String -> r vis -> r attch -> InOutFunc r mthd bod var
inOutMethod String
n CppSrcCode (Doc, VisibilityTag)
s CppSrcCode AttachmentData
p)
instance RenderMethod CppSrcCode MethodData where
commentedFunc :: SrcState MethodState Doc
-> SrcState MethodState MethodData
-> SrcState MethodState MethodData
commentedFunc = FileType
-> SrcState MethodState Doc
-> SrcState MethodState MethodData
-> SrcState MethodState MethodData
forall (r :: * -> *).
(BlockCommentElim r, Monad r) =>
FileType -> MS (r Doc) -> MS (r MethodData) -> MS (r MethodData)
cppCommentedFunc FileType
Source
mthdFromData :: VisibilityTag -> Doc -> SrcState MethodState MethodData
mthdFromData VisibilityTag
s Doc
d = CppSrcCode MethodData -> SrcState MethodState MethodData
forall a s. a -> State s a
toState (CppSrcCode MethodData -> SrcState MethodState MethodData)
-> CppSrcCode MethodData -> SrcState MethodState MethodData
forall a b. (a -> b) -> a -> b
$ MethodData -> CppSrcCode MethodData
forall (r :: * -> *) a. Monad r => a -> r a
toCode (MethodData -> CppSrcCode MethodData)
-> MethodData -> CppSrcCode MethodData
forall a b. (a -> b) -> a -> b
$ VisibilityTag -> Doc -> MethodData
mthd VisibilityTag
s Doc
d
instance OORenderMethod CppSrcCode MethodData AttachmentData (Doc, VisibilityTag) ParamData Body TypeData where
intMethod :: Bool
-> String
-> CppSrcCode (Doc, VisibilityTag)
-> CppSrcCode AttachmentData
-> SrcState MethodState TypeData
-> [SrcState MethodState ParamData]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData
intMethod Bool
m String
n CppSrcCode (Doc, VisibilityTag)
s CppSrcCode AttachmentData
_ SrcState MethodState TypeData
t [SrcState MethodState ParamData]
ps SrcState MethodState Doc
b = do
(MethodState -> MethodState) -> StateT MethodState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (if Bool
m then MethodState -> MethodState
setCurrMain else MethodState -> MethodState
forall a. a -> a
id)
c <- StateT MethodState Identity String
getClassName
cppsIntFunc (cppsMethod [] n c) s t ps b
intFunc :: Bool
-> String
-> CppSrcCode (Doc, VisibilityTag)
-> CppSrcCode AttachmentData
-> SrcState MethodState TypeData
-> [SrcState MethodState ParamData]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData
intFunc Bool
m String
n CppSrcCode (Doc, VisibilityTag)
s CppSrcCode AttachmentData
_ SrcState MethodState TypeData
t [SrcState MethodState ParamData]
ps SrcState MethodState Doc
b = do
(MethodState -> MethodState) -> StateT MethodState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (if Bool
m then Bool -> MethodState -> MethodState
setCurrMainFunc Bool
m (MethodState -> MethodState)
-> (MethodState -> MethodState) -> MethodState -> MethodState
forall b c a. (b -> c) -> (a -> b) -> a -> c
. MethodState -> MethodState
setCurrMain else MethodState -> MethodState
forall a. a -> a
id)
(CppSrcCode TypeData
-> [CppSrcCode ParamData] -> CppSrcCode Doc -> Doc)
-> CppSrcCode (Doc, VisibilityTag)
-> SrcState MethodState TypeData
-> [SrcState MethodState ParamData]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData
cppsIntFunc (String
-> CppSrcCode TypeData
-> [CppSrcCode ParamData]
-> CppSrcCode Doc
-> Doc
cppsFunction String
n) CppSrcCode (Doc, VisibilityTag)
s SrcState MethodState TypeData
t [SrcState MethodState ParamData]
ps SrcState MethodState Doc
b
destructor :: forall stvr.
[CSStateVar CppSrcCode stvr] -> SrcState MethodState MethodData
destructor = String
-> [CSStateVar CppSrcCode stvr] -> SrcState MethodState MethodData
forall a. HasCallStack => String -> a
error (String
-> [CSStateVar CppSrcCode stvr] -> SrcState MethodState MethodData)
-> String
-> [CSStateVar CppSrcCode stvr]
-> SrcState MethodState MethodData
forall a b. (a -> b) -> a -> b
$ String -> String
CP.destructorError String
cppName
instance MethodElim CppSrcCode MethodData where
method :: CppSrcCode MethodData -> Doc
method = MethodData -> Doc
mthdDoc (MethodData -> Doc)
-> (CppSrcCode MethodData -> MethodData)
-> CppSrcCode MethodData
-> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppSrcCode MethodData -> MethodData
forall a. CppSrcCode a -> a
unCPPSC
instance StateVarSym CppSrcCode StateVarData AttachmentData (Doc, VisibilityTag) Variable Value where
stateVar :: CppSrcCode (Doc, VisibilityTag)
-> CppSrcCode AttachmentData
-> SrcState ValueState Variable
-> SrcState ClassState StateVarData
stateVar CppSrcCode (Doc, VisibilityTag)
s CppSrcCode AttachmentData
_ SrcState ValueState Variable
_ = CppSrcCode StateVarData -> SrcState ClassState StateVarData
forall a. a -> StateT ClassState Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (CppSrcCode StateVarData -> SrcState ClassState StateVarData)
-> CppSrcCode StateVarData -> SrcState ClassState StateVarData
forall a b. (a -> b) -> a -> b
$ StateVarData -> CppSrcCode StateVarData
forall a. a -> CppSrcCode a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (StateVarData -> CppSrcCode StateVarData)
-> StateVarData -> CppSrcCode StateVarData
forall a b. (a -> b) -> a -> b
$ VisibilityTag -> Doc -> StateVarData
svd ((Doc, VisibilityTag) -> VisibilityTag
forall a b. (a, b) -> b
snd (CppSrcCode (Doc, VisibilityTag) -> (Doc, VisibilityTag)
forall a. CppSrcCode a -> a
unCPPSC CppSrcCode (Doc, VisibilityTag)
s)) Doc
empty
stateVarDef :: CppSrcCode (Doc, VisibilityTag)
-> CppSrcCode AttachmentData
-> SrcState ValueState Variable
-> VS (CppSrcCode Value)
-> SrcState ClassState StateVarData
stateVarDef = Doc
-> CppSrcCode (Doc, VisibilityTag)
-> CppSrcCode AttachmentData
-> SrcState ValueState Variable
-> VS (CppSrcCode Value)
-> SrcState ClassState StateVarData
cppsStateVarDef Doc
empty
constVar :: CppSrcCode (Doc, VisibilityTag)
-> SrcState ValueState Variable
-> VS (CppSrcCode Value)
-> SrcState ClassState StateVarData
constVar CppSrcCode (Doc, VisibilityTag)
s = Doc
-> CppSrcCode (Doc, VisibilityTag)
-> CppSrcCode AttachmentData
-> SrcState ValueState Variable
-> VS (CppSrcCode Value)
-> SrcState ClassState StateVarData
cppsStateVarDef Doc
constDec' CppSrcCode (Doc, VisibilityTag)
s CppSrcCode AttachmentData
forall {k} (r :: k -> *) (attch :: k).
AttachmentSym r attch =>
r attch
classLevel
instance StateVarElim CppSrcCode StateVarData where
stateVar :: CppSrcCode StateVarData -> Doc
stateVar = StateVarData -> Doc
stVar (StateVarData -> Doc)
-> (CppSrcCode StateVarData -> StateVarData)
-> CppSrcCode StateVarData
-> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppSrcCode StateVarData -> StateVarData
forall a. CppSrcCode a -> a
unCPPSC
instance ClassSym CppSrcCode Class StateVarData MethodData where
buildClass :: Maybe String
-> [SrcState ClassState StateVarData]
-> [SrcState MethodState MethodData]
-> [SrcState MethodState MethodData]
-> SrcState ClassState Doc
buildClass = Maybe String
-> [SrcState ClassState StateVarData]
-> [SrcState MethodState MethodData]
-> [SrcState MethodState MethodData]
-> SrcState ClassState Doc
forall (r :: * -> *) cls stvr mthd vis.
(RenderClass r cls stvr mthd vis, VisibilitySym r vis) =>
Maybe String
-> [CSStateVar r stvr]
-> [MS (r mthd)]
-> [MS (r mthd)]
-> CS (r cls)
G.buildClass
extraClass :: String
-> Maybe String
-> [SrcState ClassState StateVarData]
-> [SrcState MethodState MethodData]
-> [SrcState MethodState MethodData]
-> SrcState ClassState Doc
extraClass = String
-> Maybe String
-> [SrcState ClassState StateVarData]
-> [SrcState MethodState MethodData]
-> [SrcState MethodState MethodData]
-> SrcState ClassState Doc
forall (r :: * -> *) cls stvr mthd vis.
(RenderClass r cls stvr mthd vis, VisibilitySym r vis) =>
String
-> Maybe String
-> [CSStateVar r stvr]
-> [MS (r mthd)]
-> [MS (r mthd)]
-> CS (r cls)
CP.extraClass
implementingClass :: String
-> [String]
-> [SrcState ClassState StateVarData]
-> [SrcState MethodState MethodData]
-> [SrcState MethodState MethodData]
-> SrcState ClassState Doc
implementingClass = String
-> [String]
-> [SrcState ClassState StateVarData]
-> [SrcState MethodState MethodData]
-> [SrcState MethodState MethodData]
-> SrcState ClassState Doc
forall (r :: * -> *) cls stvr mthd vis.
(RenderClass r cls stvr mthd vis, VisibilitySym r vis) =>
String
-> [String]
-> [CSStateVar r stvr]
-> [MS (r mthd)]
-> [MS (r mthd)]
-> CS (r cls)
G.implementingClass
docClass :: String -> SrcState ClassState Doc -> SrcState ClassState Doc
docClass = String -> SrcState ClassState Doc -> SrcState ClassState Doc
forall (r :: * -> *) cls stvr mthd vis.
(BlockCommentSym r, RenderClass r cls stvr mthd vis) =>
String -> CS (r cls) -> CS (r cls)
CP.doxClass
instance RenderClass CppSrcCode Class StateVarData MethodData (Doc, VisibilityTag) where
intClass :: String
-> CppSrcCode (Doc, VisibilityTag)
-> CppSrcCode Doc
-> [SrcState ClassState StateVarData]
-> [SrcState MethodState MethodData]
-> [SrcState MethodState MethodData]
-> SrcState ClassState Doc
intClass String
n CppSrcCode (Doc, VisibilityTag)
_ CppSrcCode Doc
_ [SrcState ClassState StateVarData]
vs [SrcState MethodState MethodData]
cs [SrcState MethodState MethodData]
fs = do
(ClassState -> ClassState) -> StateT ClassState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (String -> ClassState -> ClassState
setClassName String
n)
([CppSrcCode StateVarData]
-> [CppSrcCode MethodData] -> CppSrcCode Doc)
-> [SrcState ClassState StateVarData]
-> [State ClassState (CppSrcCode MethodData)]
-> SrcState ClassState Doc
forall a b c s.
([a] -> [b] -> c) -> [State s a] -> [State s b] -> State s c
on2StateLists [CppSrcCode StateVarData]
-> [CppSrcCode MethodData] -> CppSrcCode Doc
cppsClass [SrcState ClassState StateVarData]
vs (LensLike'
(Zoomed (StateT MethodState Identity) (CppSrcCode MethodData))
ClassState
MethodState
-> SrcState MethodState MethodData
-> State ClassState (CppSrcCode MethodData)
forall c.
LensLike'
(Zoomed (StateT MethodState Identity) c) ClassState MethodState
-> StateT MethodState Identity c -> StateT ClassState 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 MethodState Identity) (CppSrcCode MethodData))
ClassState
MethodState
(MethodState
-> Focusing Identity (CppSrcCode MethodData) MethodState)
-> ClassState
-> Focusing Identity (CppSrcCode MethodData) ClassState
Lens' ClassState MethodState
lensCStoMS (SrcState MethodState MethodData
-> State ClassState (CppSrcCode MethodData))
-> [SrcState MethodState MethodData]
-> [State ClassState (CppSrcCode MethodData)]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [SrcState MethodState MethodData]
cs [SrcState MethodState MethodData]
-> [SrcState MethodState MethodData]
-> [SrcState MethodState MethodData]
forall a. Semigroup a => a -> a -> a
P.<> [SrcState MethodState MethodData]
fs)
inherit :: Maybe String -> CppSrcCode Doc
inherit Maybe String
n = ((Doc, VisibilityTag) -> Doc)
-> CppSrcCode (Doc, VisibilityTag) -> CppSrcCode Doc
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
onCodeValue (Maybe String -> Doc -> Doc
cppInherit Maybe String
n (Doc -> Doc)
-> ((Doc, VisibilityTag) -> Doc) -> (Doc, VisibilityTag) -> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Doc, VisibilityTag) -> Doc
forall a b. (a, b) -> a
fst) CppSrcCode (Doc, VisibilityTag)
forall {k} (r :: k -> *) (vis :: k). VisibilitySym r vis => r vis
public
implements :: [String] -> CppSrcCode Doc
implements [String]
is = ((Doc, VisibilityTag) -> Doc)
-> CppSrcCode (Doc, VisibilityTag) -> CppSrcCode Doc
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
onCodeValue ((\Doc
p -> Doc
colon Doc -> Doc -> Doc
<+> [Doc] -> Doc
hcat ((Doc
p Doc -> Doc -> Doc
<+>) (Doc -> Doc) -> (String -> Doc) -> String -> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> Doc
text (String -> Doc) -> [String] -> [Doc]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [String]
is))
(Doc -> Doc)
-> ((Doc, VisibilityTag) -> Doc) -> (Doc, VisibilityTag) -> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Doc, VisibilityTag) -> Doc
forall a b. (a, b) -> a
fst) CppSrcCode (Doc, VisibilityTag)
forall {k} (r :: k -> *) (vis :: k). VisibilitySym r vis => r vis
public
commentedClass :: SrcState ClassState Doc
-> SrcState ClassState Doc -> SrcState ClassState Doc
commentedClass SrcState ClassState Doc
_ SrcState ClassState Doc
cs = SrcState ClassState Doc
cs
instance ClassElim CppSrcCode Class where
class' :: CppSrcCode Doc -> Doc
class' = CppSrcCode Doc -> Doc
forall a. CppSrcCode a -> a
unCPPSC
instance ModuleSym CppSrcCode ModData Class MethodData where
buildModule :: String
-> [String]
-> [SrcState MethodState MethodData]
-> [SrcState ClassState Doc]
-> SrcState FileState ModData
buildModule String
n [String]
is [SrcState MethodState MethodData]
ms [SrcState ClassState Doc]
cs = String
-> FS Doc
-> FS Doc
-> FS Doc
-> [SrcState MethodState MethodData]
-> [SrcState ClassState Doc]
-> SrcState FileState ModData
forall {k} (r :: k -> *) (cls :: k) (mthd :: k) (mod :: k).
(ClassElim r cls, MethodElim r mthd, RenderMod r mod) =>
String
-> FS Doc
-> FS Doc
-> FS Doc
-> [MS (r mthd)]
-> [CS (r cls)]
-> FS (r mod)
CP.buildModule String
n (do
ds <- FS [String]
getDefines
lis <- getLangImports
libis <- getLibImports
mis <- getModuleImports
us <- getUsing
mn <- getCurrMain
pure $ vibcat [
if mn && length ms + length cs == 1 then empty else RC.import' $ mi n,
vcat ((define <+>) . text <$> ds),
vcat (RC.import' . li <$> lis),
vcat (RC.import' . mi <$> (sort (is P.<> libis) P.<> mis)),
vcat (usingNameSpace std . Just <$> us)])
(Doc -> FS Doc
forall a. a -> StateT FileState Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Doc
empty) (Doc -> FS Doc
forall a. a -> StateT FileState Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Doc
empty) [SrcState MethodState MethodData]
ms [SrcState ClassState Doc]
cs
where mi, li :: Label -> CppSrcCode Doc
mi :: String -> CppSrcCode Doc
mi = String -> CppSrcCode Doc
forall (r :: * -> *). ImportSym r => String -> r Doc
modImport
li :: String -> CppSrcCode Doc
li = String -> CppSrcCode Doc
forall (r :: * -> *). ImportSym r => String -> r Doc
langImport
instance RenderMod CppSrcCode ModData where
modFromData :: String -> FS Doc -> SrcState FileState ModData
modFromData String
n = String
-> (Doc -> CppSrcCode ModData)
-> FS Doc
-> SrcState FileState ModData
forall {k} (r :: k -> *) (mod :: k).
String -> (Doc -> r mod) -> FS Doc -> FS (r mod)
G.modFromData String
n (ModData -> CppSrcCode ModData
forall (r :: * -> *) a. Monad r => a -> r a
toCode (ModData -> CppSrcCode ModData)
-> (Doc -> ModData) -> Doc -> CppSrcCode ModData
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> Doc -> ModData
md String
n)
updateModuleDoc :: (Doc -> Doc) -> CppSrcCode ModData -> CppSrcCode ModData
updateModuleDoc Doc -> Doc
f = (ModData -> ModData) -> CppSrcCode ModData -> CppSrcCode ModData
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
onCodeValue ((Doc -> Doc) -> ModData -> ModData
updateMod Doc -> Doc
f)
instance ModuleElim CppSrcCode ModData where
module' :: CppSrcCode ModData -> Doc
module' = ModData -> Doc
modDoc (ModData -> Doc)
-> (CppSrcCode ModData -> ModData) -> CppSrcCode ModData -> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppSrcCode ModData -> ModData
forall a. CppSrcCode a -> a
unCPPSC
instance BlockCommentSym CppSrcCode where
blockComment :: [String] -> CppSrcCode Doc
blockComment [String]
lns = Doc -> CppSrcCode Doc
forall (r :: * -> *) a. Monad r => a -> r a
toCode (Doc -> CppSrcCode Doc) -> Doc -> CppSrcCode Doc
forall a b. (a -> b) -> a -> b
$ [String] -> Doc -> Doc -> Doc
R.blockCmt [String]
lns Doc
blockCmtStart Doc
blockCmtEnd
docComment :: forall a. State a [String] -> State a (CppSrcCode Doc)
docComment = ([String] -> CppSrcCode Doc)
-> State a [String] -> State a (CppSrcCode Doc)
forall a b s. (a -> b) -> State s a -> State s b
onStateValue (\[String]
lns -> Doc -> CppSrcCode Doc
forall (r :: * -> *) a. Monad r => a -> r a
toCode (Doc -> CppSrcCode Doc) -> Doc -> CppSrcCode Doc
forall a b. (a -> b) -> a -> b
$ [String] -> Doc -> Doc -> Doc
R.docCmt [String]
lns Doc
docCmtStart
Doc
blockCmtEnd)
instance BlockCommentElim CppSrcCode where
blockComment' :: CppSrcCode Doc -> Doc
blockComment' = CppSrcCode Doc -> Doc
forall a. CppSrcCode a -> a
unCPPSC
newtype CppHdrCode a = CPPHC {forall a. CppHdrCode a -> a
unCPPHC :: a} deriving CppHdrCode a -> CppHdrCode a -> Bool
(CppHdrCode a -> CppHdrCode a -> Bool)
-> (CppHdrCode a -> CppHdrCode a -> Bool) -> Eq (CppHdrCode a)
forall a. Eq a => CppHdrCode a -> CppHdrCode a -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: forall a. Eq a => CppHdrCode a -> CppHdrCode a -> Bool
== :: CppHdrCode a -> CppHdrCode a -> Bool
$c/= :: forall a. Eq a => CppHdrCode a -> CppHdrCode a -> Bool
/= :: CppHdrCode a -> CppHdrCode a -> Bool
Eq
instance Functor CppHdrCode where
fmap :: forall a b. (a -> b) -> CppHdrCode a -> CppHdrCode b
fmap a -> b
f (CPPHC a
x) = b -> CppHdrCode b
forall a. a -> CppHdrCode a
CPPHC (a -> b
f a
x)
instance Applicative CppHdrCode where
pure :: forall a. a -> CppHdrCode a
pure = a -> CppHdrCode a
forall a. a -> CppHdrCode a
CPPHC
(CPPHC a -> b
f) <*> :: forall a b. CppHdrCode (a -> b) -> CppHdrCode a -> CppHdrCode b
<*> (CPPHC a
x) = b -> CppHdrCode b
forall a. a -> CppHdrCode a
CPPHC (a -> b
f a
x)
instance Monad CppHdrCode where
CPPHC a
x >>= :: forall a b. CppHdrCode a -> (a -> CppHdrCode b) -> CppHdrCode b
>>= a -> CppHdrCode b
f = a -> CppHdrCode b
f a
x
instance CommonRenderSym CppHdrCode MethodData (Doc, VisibilityTag) ParamData Body Block Statement Variable ScopeData Value BinderD TypeData
instance OORenderSym CppHdrCode FileData ModData Class StateVarData MethodData AttachmentData (Doc, VisibilityTag) ParamData Body Block Statement Variable ScopeData Value BinderD TypeData
instance UnRepr CppHdrCode contents where
unRepr :: CppHdrCode contents -> contents
unRepr = CppHdrCode contents -> contents
forall a. CppHdrCode a -> a
unCPPHC
instance FileSym CppHdrCode FileData ModData where
fileDoc :: HdrState FileState ModData -> HdrState FileState FileData
fileDoc HdrState FileState ModData
m = do
(FileState -> FileState) -> StateT FileState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (FileType -> FileState -> FileState
setFileType FileType
Header)
String
-> (CppHdrCode ModData -> CppHdrCode Doc)
-> CppHdrCode Doc
-> HdrState FileState ModData
-> HdrState FileState FileData
forall (r :: * -> *) block mod file.
(BlockElim r block, RenderMod r mod, RenderFile r file mod) =>
String
-> (r mod -> r block) -> r block -> FS (r mod) -> FS (r file)
G.fileDoc String
cppHdrExt CppHdrCode ModData -> CppHdrCode Doc
forall (r :: * -> *) file mod.
RenderFile r file mod =>
r mod -> r Doc
top CppHdrCode Doc
forall (r :: * -> *) file mod. RenderFile r file mod => r Doc
bottom HdrState FileState ModData
m
docMod :: String
-> String
-> [String]
-> String
-> HdrState FileState FileData
-> HdrState FileState FileData
docMod = String
-> String
-> String
-> [String]
-> String
-> HdrState FileState FileData
-> HdrState FileState FileData
forall (r :: * -> *) file mod.
(BlockCommentSym r, RenderFile r file mod) =>
String
-> String
-> String
-> [String]
-> String
-> FS (r file)
-> FS (r file)
CP.doxMod String
cppHdrExt
instance RenderFile CppHdrCode FileData ModData where
top :: CppHdrCode ModData -> CppHdrCode Doc
top = (ModData -> Doc) -> CppHdrCode ModData -> CppHdrCode Doc
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
onCodeValue ModData -> Doc
cpphtop
bottom :: CppHdrCode Doc
bottom = Doc -> CppHdrCode Doc
forall (r :: * -> *) a. Monad r => a -> r a
toCode Doc
endif
commentedMod :: HdrState FileState FileData
-> HdrState FileState Doc -> HdrState FileState FileData
commentedMod = (CppHdrCode FileData -> CppHdrCode Doc -> CppHdrCode FileData)
-> HdrState FileState FileData
-> HdrState FileState Doc
-> HdrState FileState FileData
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues (\CppHdrCode FileData
m CppHdrCode Doc
cmt -> if Doc -> Bool
isEmpty (CppHdrCode ModData -> Doc
forall {k} (r :: k -> *) (mod :: k).
ModuleElim r mod =>
r mod -> Doc
RC.module' (CppHdrCode ModData -> Doc) -> CppHdrCode ModData -> Doc
forall a b. (a -> b) -> a -> b
$
(FileData -> ModData) -> CppHdrCode FileData -> CppHdrCode ModData
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
onCodeValue FileData -> ModData
fileMod CppHdrCode FileData
m) then CppHdrCode FileData
m else (FileData -> Doc -> FileData)
-> CppHdrCode FileData -> CppHdrCode Doc -> CppHdrCode FileData
forall (r :: * -> *) a b c.
Applicative r =>
(a -> b -> c) -> r a -> r b -> r c
on2CodeValues FileData -> Doc -> FileData
R.commentedMod CppHdrCode FileData
m CppHdrCode Doc
cmt)
fileFromData :: String -> HdrState FileState ModData -> HdrState FileState FileData
fileFromData = (String -> CppHdrCode ModData -> CppHdrCode FileData)
-> String
-> HdrState FileState ModData
-> HdrState FileState FileData
forall {k} (r :: k -> *) (mod :: k) (file :: k).
ModuleElim r mod =>
(String -> r mod -> r file) -> String -> FS (r mod) -> FS (r file)
G.fileFromData ((ModData -> FileData) -> CppHdrCode ModData -> CppHdrCode FileData
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
onCodeValue ((ModData -> FileData)
-> CppHdrCode ModData -> CppHdrCode FileData)
-> (String -> ModData -> FileData)
-> String
-> CppHdrCode ModData
-> CppHdrCode FileData
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ModData -> FileData
fileD)
instance ImportSym CppHdrCode where
langImport :: String -> CppHdrCode Doc
langImport String
n = Doc -> CppHdrCode Doc
forall (r :: * -> *) a. Monad r => a -> r a
toCode (Doc -> CppHdrCode Doc) -> Doc -> CppHdrCode Doc
forall a b. (a -> b) -> a -> b
$ Doc
inc Doc -> Doc -> Doc
<+> Doc -> Doc
angles (String -> Doc
text String
n)
modImport :: String -> CppHdrCode Doc
modImport String
n = Doc -> CppHdrCode Doc
forall (r :: * -> *) a. Monad r => a -> r a
toCode (Doc -> CppHdrCode Doc) -> Doc -> CppHdrCode Doc
forall a b. (a -> b) -> a -> b
$ Doc
inc Doc -> Doc -> Doc
<+> String -> Doc
doubleQuotedText (String -> String -> String
addExt String
cppHdrExt String
n)
instance AttachmentSym CppHdrCode AttachmentData where
classLevel :: CppHdrCode AttachmentData
classLevel = AttachmentData -> CppHdrCode AttachmentData
forall (r :: * -> *) a. Monad r => a -> r a
toCode (AttachmentData -> CppHdrCode AttachmentData)
-> AttachmentData -> CppHdrCode AttachmentData
forall a b. (a -> b) -> a -> b
$ AttachmentTag -> Doc -> AttachmentData
ad AttachmentTag
ClassLevel Doc
R.classLevel
instanceLevel :: CppHdrCode AttachmentData
instanceLevel = AttachmentData -> CppHdrCode AttachmentData
forall (r :: * -> *) a. Monad r => a -> r a
toCode (AttachmentData -> CppHdrCode AttachmentData)
-> AttachmentData -> CppHdrCode AttachmentData
forall a b. (a -> b) -> a -> b
$ AttachmentTag -> Doc -> AttachmentData
ad AttachmentTag
InstanceLevel Doc
R.instanceLevel
instance PermElim CppHdrCode AttachmentData where
perm :: CppHdrCode AttachmentData -> Doc
perm = AttachmentData -> Doc
attachmentDoc (AttachmentData -> Doc)
-> (CppHdrCode AttachmentData -> AttachmentData)
-> CppHdrCode AttachmentData
-> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppHdrCode AttachmentData -> AttachmentData
forall a. CppHdrCode a -> a
unCPPHC
binding :: CppHdrCode AttachmentData -> AttachmentTag
binding = AttachmentData -> AttachmentTag
attachment (AttachmentData -> AttachmentTag)
-> (CppHdrCode AttachmentData -> AttachmentData)
-> CppHdrCode AttachmentData
-> AttachmentTag
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppHdrCode AttachmentData -> AttachmentData
forall a. CppHdrCode a -> a
unCPPHC
instance BodySym CppHdrCode Body Block where
body :: [HdrState MethodState Doc] -> HdrState MethodState Doc
body [HdrState MethodState Doc]
_ = CppHdrCode Doc -> HdrState MethodState Doc
forall a s. a -> State s a
toState (CppHdrCode Doc -> HdrState MethodState Doc)
-> CppHdrCode Doc -> HdrState MethodState Doc
forall a b. (a -> b) -> a -> b
$ Doc -> CppHdrCode Doc
forall (r :: * -> *) a. Monad r => a -> r a
toCode Doc
empty
addComments :: String -> HdrState MethodState Doc -> HdrState MethodState Doc
addComments String
_ HdrState MethodState Doc
_ = CppHdrCode Doc -> HdrState MethodState Doc
forall a s. a -> State s a
toState (CppHdrCode Doc -> HdrState MethodState Doc)
-> CppHdrCode Doc -> HdrState MethodState Doc
forall a b. (a -> b) -> a -> b
$ Doc -> CppHdrCode Doc
forall (r :: * -> *) a. Monad r => a -> r a
toCode Doc
empty
instance RenderBody CppHdrCode Body where
multiBody :: [HdrState MethodState Doc] -> HdrState MethodState Doc
multiBody = [HdrState MethodState Doc] -> HdrState MethodState Doc
forall (r :: * -> *) bod.
(BodyElim r bod, Monad r) =>
[MS (r bod)] -> MS (r Doc)
G.multiBody
instance BodyElim CppHdrCode Body where
body :: CppHdrCode Doc -> Doc
body = CppHdrCode Doc -> Doc
forall a. CppHdrCode a -> a
unCPPHC
instance BlockSym CppHdrCode Block Statement where
block :: [HdrState MethodState Statement] -> HdrState MethodState Doc
block [HdrState MethodState Statement]
_ = CppHdrCode Doc -> HdrState MethodState Doc
forall a s. a -> State s a
toState (CppHdrCode Doc -> HdrState MethodState Doc)
-> CppHdrCode Doc -> HdrState MethodState Doc
forall a b. (a -> b) -> a -> b
$ Doc -> CppHdrCode Doc
forall (r :: * -> *) a. Monad r => a -> r a
toCode Doc
empty
instance RenderBlock CppHdrCode Block where
multiBlock :: [HdrState MethodState Doc] -> HdrState MethodState Doc
multiBlock = [HdrState MethodState Doc] -> HdrState MethodState Doc
forall (r :: * -> *) block.
(BlockElim r block, Monad r) =>
[MS (r block)] -> MS (r Doc)
G.multiBlock
instance BlockElim CppHdrCode Block where
block :: CppHdrCode Doc -> Doc
block = CppHdrCode Doc -> Doc
forall a. CppHdrCode a -> a
unCPPHC
instance TypeSym CppHdrCode TypeData where
bool :: State ValueState (CppHdrCode TypeData)
bool = State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). Monad r => VS (r TypeData)
cppBoolType
int :: State ValueState (CppHdrCode TypeData)
int = State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). Monad r => VS (r TypeData)
CP.int
float :: State ValueState (CppHdrCode TypeData)
float = State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). Monad r => VS (r TypeData)
C.float
double :: State ValueState (CppHdrCode TypeData)
double = State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). Monad r => VS (r TypeData)
C.double
char :: State ValueState (CppHdrCode TypeData)
char = State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). Monad r => VS (r TypeData)
C.char
string :: State ValueState (CppHdrCode TypeData)
string = do
(ValueState -> ValueState) -> StateT ValueState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (String -> ValueState -> ValueState
addHeaderUsing String
cppString (ValueState -> ValueState)
-> (ValueState -> ValueState) -> ValueState -> ValueState
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ValueState -> ValueState
addHeaderLangImport String
cppString)
State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). Monad r => VS (r TypeData)
CP.string
infile :: State ValueState (CppHdrCode TypeData)
infile = do
(ValueState -> ValueState) -> StateT ValueState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (String -> ValueState -> ValueState
addHeaderUsing String
cppInfile)
State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). Monad r => VS (r TypeData)
cppInfileType
outfile :: State ValueState (CppHdrCode TypeData)
outfile = do
(ValueState -> ValueState) -> StateT ValueState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (String -> ValueState -> ValueState
addHeaderUsing String
cppOutfile)
State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). Monad r => VS (r TypeData)
cppOutfileType
referenceType :: State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData)
referenceType = State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData)
forall (r :: * -> *).
(Monad r, TypeElim r TypeData, UnRepr r TypeData) =>
VS (r TypeData) -> VS (r TypeData)
cppReferenceType
listType :: State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData)
listType State ValueState (CppHdrCode TypeData)
t = do
(ValueState -> ValueState) -> StateT ValueState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (String -> ValueState -> ValueState
addHeaderUsing String
vector (ValueState -> ValueState)
-> (ValueState -> ValueState) -> ValueState -> ValueState
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ValueState -> ValueState
addHeaderLangImport String
vector)
String
-> State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData)
forall (r :: * -> *).
(Monad r, TypeElim r TypeData, UnRepr r TypeData) =>
String -> VS (r TypeData) -> VS (r TypeData)
C.listType String
vector State ValueState (CppHdrCode TypeData)
t
setType :: State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData)
setType State ValueState (CppHdrCode TypeData)
t = do
(ValueState -> ValueState) -> StateT ValueState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (String -> ValueState -> ValueState
addHeaderUsing String
cppSet (ValueState -> ValueState)
-> (ValueState -> ValueState) -> ValueState -> ValueState
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ValueState -> ValueState
addHeaderLangImport String
cppSet)
String
-> State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData)
forall (r :: * -> *).
(Monad r, TypeElim r TypeData, UnRepr r TypeData) =>
String -> VS (r TypeData) -> VS (r TypeData)
C.setType String
cppSet State ValueState (CppHdrCode TypeData)
t
arrayType :: State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData)
arrayType = State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k).
TypeSym r typ =>
VS (r typ) -> VS (r typ)
listType
innerType :: State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData)
innerType = State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k).
(TypeElim r typ, TypeSym r typ, OOTypeSym r typ) =>
VS (r typ) -> VS (r typ)
CG.innerType
funcType :: [State ValueState (CppHdrCode TypeData)]
-> State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData)
funcType = [State ValueState (CppHdrCode TypeData)]
-> State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData)
forall (r :: * -> *).
(Monad r, TypeElim r TypeData) =>
[VS (r TypeData)] -> VS (r TypeData) -> VS (r TypeData)
CS.funcType
void :: State ValueState (CppHdrCode TypeData)
void = State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). Monad r => VS (r TypeData)
C.void
instance TypeElim CppHdrCode TypeData where
getCodeType :: CppHdrCode TypeData -> CodeType
getCodeType = TypeData -> CodeType
cType (TypeData -> CodeType)
-> (CppHdrCode TypeData -> TypeData)
-> CppHdrCode TypeData
-> CodeType
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppHdrCode TypeData -> TypeData
forall a. CppHdrCode a -> a
unCPPHC
instance OOTypeSym CppHdrCode TypeData where
obj :: String -> State ValueState (CppHdrCode TypeData)
obj String
n = VS (Map String String)
getClassMap VS (Map String String)
-> (Map String String -> State ValueState (CppHdrCode TypeData))
-> State ValueState (CppHdrCode TypeData)
forall a b.
StateT ValueState Identity a
-> (a -> StateT ValueState Identity b)
-> StateT ValueState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (\Map String String
cm -> (State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData))
-> (String
-> State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData))
-> Maybe String
-> State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData)
forall b a. b -> (a -> b) -> Maybe a -> b
maybe State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData)
forall a. a -> a
id (StateT ValueState Identity ()
-> State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData)
forall a b.
StateT ValueState Identity a
-> StateT ValueState Identity b -> StateT ValueState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
(>>) (StateT ValueState Identity ()
-> State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData))
-> (String -> StateT ValueState Identity ())
-> String
-> State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ValueState -> ValueState) -> StateT ValueState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify ((ValueState -> ValueState) -> StateT ValueState Identity ())
-> (String -> ValueState -> ValueState)
-> String
-> StateT ValueState Identity ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ValueState -> ValueState
addHeaderModImport)
(String -> Map String String -> Maybe String
forall k a. Ord k => k -> Map k a -> Maybe a
Map.lookup String
n Map String String
cm) (State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData))
-> State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData)
forall a b. (a -> b) -> a -> b
$ String -> State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). Monad r => String -> VS (r TypeData)
G.obj String
n)
instance RenderType CppHdrCode TypeData where
multiType :: [State ValueState (CppHdrCode TypeData)]
-> State ValueState (CppHdrCode TypeData)
multiType [State ValueState (CppHdrCode TypeData)]
_ = String -> State ValueState (CppHdrCode TypeData)
forall a. HasCallStack => String -> a
error (String -> State ValueState (CppHdrCode TypeData))
-> String -> State ValueState (CppHdrCode TypeData)
forall a b. (a -> b) -> a -> b
$ String -> String
C.multiTypeError String
cppName
instance UnaryOpSym CppHdrCode where
notOp :: State ValueState (CppHdrCode OpData)
notOp = Int -> Doc -> State ValueState (CppHdrCode OpData)
forall (r :: * -> *). Monad r => Int -> Doc -> VSOp r
mkOp Int
0 Doc
empty
negateOp :: State ValueState (CppHdrCode OpData)
negateOp = Int -> Doc -> State ValueState (CppHdrCode OpData)
forall (r :: * -> *). Monad r => Int -> Doc -> VSOp r
mkOp Int
0 Doc
empty
sqrtOp :: State ValueState (CppHdrCode OpData)
sqrtOp = Int -> Doc -> State ValueState (CppHdrCode OpData)
forall (r :: * -> *). Monad r => Int -> Doc -> VSOp r
mkOp Int
0 Doc
empty
absOp :: State ValueState (CppHdrCode OpData)
absOp = Int -> Doc -> State ValueState (CppHdrCode OpData)
forall (r :: * -> *). Monad r => Int -> Doc -> VSOp r
mkOp Int
0 Doc
empty
logOp :: State ValueState (CppHdrCode OpData)
logOp = Int -> Doc -> State ValueState (CppHdrCode OpData)
forall (r :: * -> *). Monad r => Int -> Doc -> VSOp r
mkOp Int
0 Doc
empty
lnOp :: State ValueState (CppHdrCode OpData)
lnOp = Int -> Doc -> State ValueState (CppHdrCode OpData)
forall (r :: * -> *). Monad r => Int -> Doc -> VSOp r
mkOp Int
0 Doc
empty
expOp :: State ValueState (CppHdrCode OpData)
expOp = Int -> Doc -> State ValueState (CppHdrCode OpData)
forall (r :: * -> *). Monad r => Int -> Doc -> VSOp r
mkOp Int
0 Doc
empty
sinOp :: State ValueState (CppHdrCode OpData)
sinOp = Int -> Doc -> State ValueState (CppHdrCode OpData)
forall (r :: * -> *). Monad r => Int -> Doc -> VSOp r
mkOp Int
0 Doc
empty
cosOp :: State ValueState (CppHdrCode OpData)
cosOp = Int -> Doc -> State ValueState (CppHdrCode OpData)
forall (r :: * -> *). Monad r => Int -> Doc -> VSOp r
mkOp Int
0 Doc
empty
tanOp :: State ValueState (CppHdrCode OpData)
tanOp = Int -> Doc -> State ValueState (CppHdrCode OpData)
forall (r :: * -> *). Monad r => Int -> Doc -> VSOp r
mkOp Int
0 Doc
empty
asinOp :: State ValueState (CppHdrCode OpData)
asinOp = Int -> Doc -> State ValueState (CppHdrCode OpData)
forall (r :: * -> *). Monad r => Int -> Doc -> VSOp r
mkOp Int
0 Doc
empty
acosOp :: State ValueState (CppHdrCode OpData)
acosOp = Int -> Doc -> State ValueState (CppHdrCode OpData)
forall (r :: * -> *). Monad r => Int -> Doc -> VSOp r
mkOp Int
0 Doc
empty
atanOp :: State ValueState (CppHdrCode OpData)
atanOp = Int -> Doc -> State ValueState (CppHdrCode OpData)
forall (r :: * -> *). Monad r => Int -> Doc -> VSOp r
mkOp Int
0 Doc
empty
floorOp :: State ValueState (CppHdrCode OpData)
floorOp = Int -> Doc -> State ValueState (CppHdrCode OpData)
forall (r :: * -> *). Monad r => Int -> Doc -> VSOp r
mkOp Int
0 Doc
empty
ceilOp :: State ValueState (CppHdrCode OpData)
ceilOp = Int -> Doc -> State ValueState (CppHdrCode OpData)
forall (r :: * -> *). Monad r => Int -> Doc -> VSOp r
mkOp Int
0 Doc
empty
instance BinaryOpSym CppHdrCode where
equalOp :: State ValueState (CppHdrCode OpData)
equalOp = Int -> Doc -> State ValueState (CppHdrCode OpData)
forall (r :: * -> *). Monad r => Int -> Doc -> VSOp r
mkOp Int
0 Doc
empty
notEqualOp :: State ValueState (CppHdrCode OpData)
notEqualOp = Int -> Doc -> State ValueState (CppHdrCode OpData)
forall (r :: * -> *). Monad r => Int -> Doc -> VSOp r
mkOp Int
0 Doc
empty
greaterOp :: State ValueState (CppHdrCode OpData)
greaterOp = Int -> Doc -> State ValueState (CppHdrCode OpData)
forall (r :: * -> *). Monad r => Int -> Doc -> VSOp r
mkOp Int
0 Doc
empty
greaterEqualOp :: State ValueState (CppHdrCode OpData)
greaterEqualOp = Int -> Doc -> State ValueState (CppHdrCode OpData)
forall (r :: * -> *). Monad r => Int -> Doc -> VSOp r
mkOp Int
0 Doc
empty
lessOp :: State ValueState (CppHdrCode OpData)
lessOp = Int -> Doc -> State ValueState (CppHdrCode OpData)
forall (r :: * -> *). Monad r => Int -> Doc -> VSOp r
mkOp Int
0 Doc
empty
lessEqualOp :: State ValueState (CppHdrCode OpData)
lessEqualOp = Int -> Doc -> State ValueState (CppHdrCode OpData)
forall (r :: * -> *). Monad r => Int -> Doc -> VSOp r
mkOp Int
0 Doc
empty
plusOp :: State ValueState (CppHdrCode OpData)
plusOp = Int -> Doc -> State ValueState (CppHdrCode OpData)
forall (r :: * -> *). Monad r => Int -> Doc -> VSOp r
mkOp Int
0 Doc
empty
minusOp :: State ValueState (CppHdrCode OpData)
minusOp = Int -> Doc -> State ValueState (CppHdrCode OpData)
forall (r :: * -> *). Monad r => Int -> Doc -> VSOp r
mkOp Int
0 Doc
empty
multOp :: State ValueState (CppHdrCode OpData)
multOp = Int -> Doc -> State ValueState (CppHdrCode OpData)
forall (r :: * -> *). Monad r => Int -> Doc -> VSOp r
mkOp Int
0 Doc
empty
divideOp :: State ValueState (CppHdrCode OpData)
divideOp = Int -> Doc -> State ValueState (CppHdrCode OpData)
forall (r :: * -> *). Monad r => Int -> Doc -> VSOp r
mkOp Int
0 Doc
empty
powerOp :: State ValueState (CppHdrCode OpData)
powerOp = Int -> Doc -> State ValueState (CppHdrCode OpData)
forall (r :: * -> *). Monad r => Int -> Doc -> VSOp r
mkOp Int
0 Doc
empty
moduloOp :: State ValueState (CppHdrCode OpData)
moduloOp = Int -> Doc -> State ValueState (CppHdrCode OpData)
forall (r :: * -> *). Monad r => Int -> Doc -> VSOp r
mkOp Int
0 Doc
empty
andOp :: State ValueState (CppHdrCode OpData)
andOp = Int -> Doc -> State ValueState (CppHdrCode OpData)
forall (r :: * -> *). Monad r => Int -> Doc -> VSOp r
mkOp Int
0 Doc
empty
orOp :: State ValueState (CppHdrCode OpData)
orOp = Int -> Doc -> State ValueState (CppHdrCode OpData)
forall (r :: * -> *). Monad r => Int -> Doc -> VSOp r
mkOp Int
0 Doc
empty
instance OpElim CppHdrCode where
uOp :: CppHdrCode OpData -> Doc
uOp = OpData -> Doc
opDoc (OpData -> Doc)
-> (CppHdrCode OpData -> OpData) -> CppHdrCode OpData -> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppHdrCode OpData -> OpData
forall a. CppHdrCode a -> a
unCPPHC
bOp :: CppHdrCode OpData -> Doc
bOp = OpData -> Doc
opDoc (OpData -> Doc)
-> (CppHdrCode OpData -> OpData) -> CppHdrCode OpData -> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppHdrCode OpData -> OpData
forall a. CppHdrCode a -> a
unCPPHC
uOpPrec :: CppHdrCode OpData -> Int
uOpPrec = OpData -> Int
opPrec (OpData -> Int)
-> (CppHdrCode OpData -> OpData) -> CppHdrCode OpData -> Int
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppHdrCode OpData -> OpData
forall a. CppHdrCode a -> a
unCPPHC
bOpPrec :: CppHdrCode OpData -> Int
bOpPrec = OpData -> Int
opPrec (OpData -> Int)
-> (CppHdrCode OpData -> OpData) -> CppHdrCode OpData -> Int
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppHdrCode OpData -> OpData
forall a. CppHdrCode a -> a
unCPPHC
instance ScopeSym CppHdrCode ScopeData where
global :: CppHdrCode ScopeData
global = CppHdrCode ScopeData
forall (r :: * -> *). Monad r => r ScopeData
CP.global
mainFn :: CppHdrCode ScopeData
mainFn = CppHdrCode ScopeData
forall {k} (r :: k -> *) (scope :: k). ScopeSym r scope => r scope
local
local :: CppHdrCode ScopeData
local = CppHdrCode ScopeData
forall (r :: * -> *). Monad r => r ScopeData
G.local
instance ScopeElim CppHdrCode ScopeData where
scopeData :: CppHdrCode ScopeData -> ScopeData
scopeData = CppHdrCode ScopeData -> ScopeData
forall a. CppHdrCode a -> a
unCPPHC
instance VariableSym CppHdrCode Variable TypeData where
var :: String
-> State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Variable
var = String
-> State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Variable
forall {k} (r :: k -> *) (var :: k) (typ :: k).
RenderVariable r var typ =>
String -> VS (r typ) -> VS (r var)
G.var
constant :: String
-> State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Variable
constant String
_ State ValueState (CppHdrCode TypeData)
_ = String
-> State ValueState (CppHdrCode TypeData)
-> Doc
-> HdrState ValueState Variable
forall {k} (r :: k -> *) (var :: k) (typ :: k).
RenderVariable r var typ =>
String -> VS (r typ) -> Doc -> VS (r var)
mkStateVar String
"" State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
extVar :: String
-> String
-> State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Variable
extVar String
_ String
_ State ValueState (CppHdrCode TypeData)
_ = String
-> State ValueState (CppHdrCode TypeData)
-> Doc
-> HdrState ValueState Variable
forall {k} (r :: k -> *) (var :: k) (typ :: k).
RenderVariable r var typ =>
String -> VS (r typ) -> Doc -> VS (r var)
mkStateVar String
"" State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
instance OOVariableSym CppHdrCode Variable Value TypeData where
classVar :: String
-> State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Variable
classVar = String
-> State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Variable
forall {k} (r :: k -> *) (var :: k) (typ :: k).
RenderVariable r var typ =>
String -> VS (r typ) -> VS (r var)
G.classVar
classConst :: String
-> State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Variable
classConst = String
-> State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Variable
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
OOVariableSym r var val typ =>
String -> VS (r typ) -> VS (r var)
classVar
classVarAccess :: State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Variable -> HdrState ValueState Variable
classVarAccess State ValueState (CppHdrCode TypeData)
_ HdrState ValueState Variable
_ = String
-> State ValueState (CppHdrCode TypeData)
-> Doc
-> HdrState ValueState Variable
forall {k} (r :: k -> *) (var :: k) (typ :: k).
RenderVariable r var typ =>
String -> VS (r typ) -> Doc -> VS (r var)
mkStateVar String
"" State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
extClassVarAccess :: State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Variable -> HdrState ValueState Variable
extClassVarAccess State ValueState (CppHdrCode TypeData)
_ HdrState ValueState Variable
_ = String
-> State ValueState (CppHdrCode TypeData)
-> Doc
-> HdrState ValueState Variable
forall {k} (r :: k -> *) (var :: k) (typ :: k).
RenderVariable r var typ =>
String -> VS (r typ) -> Doc -> VS (r var)
mkStateVar String
"" State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
instanceVarAccess :: HdrState ValueState Value
-> HdrState ValueState Variable -> HdrState ValueState Variable
instanceVarAccess = HdrState ValueState Value
-> HdrState ValueState Variable -> HdrState ValueState Variable
forall {k} (r :: k -> *) (var :: k) (typ :: k) (val :: k).
(InternalVarElim r var, RenderVariable r var typ, ValueElim r val,
VariableElim r var typ) =>
VS (r val) -> VS (r var) -> VS (r var)
G.instanceVarAccess
instance SelfSym CppHdrCode Variable where
self :: HdrState ValueState Variable
self = String
-> State ValueState (CppHdrCode TypeData)
-> Doc
-> HdrState ValueState Variable
forall {k} (r :: k -> *) (var :: k) (typ :: k).
RenderVariable r var typ =>
String -> VS (r typ) -> Doc -> VS (r var)
mkStateVar String
"" State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
instance VariableElim CppHdrCode Variable TypeData where
variableName :: CppHdrCode Variable -> String
variableName = Variable -> String
varName (Variable -> String)
-> (CppHdrCode Variable -> Variable)
-> CppHdrCode Variable
-> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppHdrCode Variable -> Variable
forall a. CppHdrCode a -> a
unCPPHC
variableType :: CppHdrCode Variable -> CppHdrCode TypeData
variableType = (Variable -> TypeData)
-> CppHdrCode Variable -> CppHdrCode TypeData
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
onCodeValue Variable -> TypeData
varType
instance InternalVarElim CppHdrCode Variable where
variableBind :: CppHdrCode Variable -> AttachmentTag
variableBind = Variable -> AttachmentTag
varBind (Variable -> AttachmentTag)
-> (CppHdrCode Variable -> Variable)
-> CppHdrCode Variable
-> AttachmentTag
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppHdrCode Variable -> Variable
forall a. CppHdrCode a -> a
unCPPHC
variable :: CppHdrCode Variable -> Doc
variable = Variable -> Doc
varDoc (Variable -> Doc)
-> (CppHdrCode Variable -> Variable) -> CppHdrCode Variable -> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppHdrCode Variable -> Variable
forall a. CppHdrCode a -> a
unCPPHC
instance RenderVariable CppHdrCode Variable TypeData where
varFromData :: AttachmentTag
-> String
-> State ValueState (CppHdrCode TypeData)
-> Doc
-> HdrState ValueState Variable
varFromData AttachmentTag
b String
n State ValueState (CppHdrCode TypeData)
t' Doc
d = do
t <- State ValueState (CppHdrCode TypeData)
t'
toState $ on2CodeValues (vard b n) t (toCode d)
instance ValueSym CppHdrCode Value TypeData where
valueType :: CppHdrCode Value -> CppHdrCode TypeData
valueType = (Value -> TypeData) -> CppHdrCode Value -> CppHdrCode TypeData
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
onCodeValue Value -> TypeData
valType
instance Argument CppHdrCode Value where
pointerArg :: HdrState ValueState Value -> HdrState ValueState Value
pointerArg = HdrState ValueState Value -> HdrState ValueState Value
forall a. a -> a
id
instance Literal CppHdrCode Value TypeData where
litTrue :: HdrState ValueState Value
litTrue = HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
(RenderValue r var val typ, TypeSym r typ) =>
VS (r val)
C.litTrue
litFalse :: HdrState ValueState Value
litFalse = HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
(RenderValue r var val typ, TypeSym r typ) =>
VS (r val)
C.litFalse
litChar :: Char -> HdrState ValueState Value
litChar = (Doc -> Doc) -> Char -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
(RenderValue r var val typ, TypeSym r typ) =>
(Doc -> Doc) -> Char -> VS (r val)
G.litChar Doc -> Doc
quotes
litDouble :: Double -> HdrState ValueState Value
litDouble = Double -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
(RenderValue r var val typ, TypeSym r typ) =>
Double -> VS (r val)
G.litDouble
litFloat :: Float -> HdrState ValueState Value
litFloat = Float -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
(RenderValue r var val typ, TypeSym r typ) =>
Float -> VS (r val)
C.litFloat
litInt :: Integer -> HdrState ValueState Value
litInt = Integer -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
(RenderValue r var val typ, TypeSym r typ) =>
Integer -> VS (r val)
G.litInt
litString :: String -> HdrState ValueState Value
litString = String -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
(RenderValue r var val typ, TypeSym r typ) =>
String -> VS (r val)
G.litString
litArray :: State ValueState (CppHdrCode TypeData)
-> [HdrState ValueState Value] -> HdrState ValueState Value
litArray = State ValueState (CppHdrCode TypeData)
-> [HdrState ValueState Value] -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k) (typ :: k).
Literal r val typ =>
VS (r typ) -> [VS (r val)] -> VS (r val)
litList
litSet :: State ValueState (CppHdrCode TypeData)
-> [HdrState ValueState Value] -> HdrState ValueState Value
litSet = (State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData))
-> State ValueState (CppHdrCode TypeData)
-> [HdrState ValueState Value]
-> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
(RenderValue r var val typ, ValueElim r val) =>
(VS (r typ) -> VS (r typ))
-> VS (r typ) -> [VS (r val)] -> VS (r val)
cppLitSet State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k).
TypeSym r typ =>
VS (r typ) -> VS (r typ)
setType
litList :: State ValueState (CppHdrCode TypeData)
-> [HdrState ValueState Value] -> HdrState ValueState Value
litList = (Doc -> Doc)
-> State ValueState (CppHdrCode TypeData)
-> [HdrState ValueState Value]
-> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
(RenderValue r var val typ, TypeSym r typ, ValueElim r val) =>
(Doc -> Doc) -> VS (r typ) -> [VS (r val)] -> VS (r val)
CP.litArray Doc -> Doc
braces
instance MathConstant CppHdrCode Value where
pi :: HdrState ValueState Value
pi = do
(ValueState -> ValueState) -> StateT ValueState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (String -> ValueState -> ValueState
addHeaderDefine String
mathDefines (ValueState -> ValueState)
-> (ValueState -> ValueState) -> ValueState -> ValueState
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ValueState -> ValueState
addHeaderLangImport String
mathh)
State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
double Doc
cppPi
instance VariableValue CppHdrCode Variable Value where
valueOf :: HdrState ValueState Variable -> HdrState ValueState Value
valueOf = HdrState ValueState Variable -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
(InternalVarElim r var, RenderValue r var val typ,
VariableElim r var typ) =>
VS (r var) -> VS (r val)
G.valueOf
instance CommandLineArgs CppHdrCode Value where
arg :: Integer -> HdrState ValueState Value
arg Integer
n = HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
(RenderValue r var val typ, TypeSym r typ, ValueElim r val) =>
VS (r val) -> VS (r val) -> VS (r val)
G.arg (Integer -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k) (typ :: k).
Literal r val typ =>
Integer -> VS (r val)
litInt (Integer -> HdrState ValueState Value)
-> Integer -> HdrState ValueState Value
forall a b. (a -> b) -> a -> b
$ Integer
nInteger -> Integer -> Integer
forall a. Num a => a -> a -> a
+Integer
1) HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k).
CommandLineArgs r val =>
VS (r val)
argsList
argsList :: HdrState ValueState Value
argsList = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). Monad r => VS (r TypeData)
argvType (String -> Doc
text String
argv)
argExists :: Integer -> HdrState ValueState Value
argExists Integer
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
instance NumericExpression CppHdrCode Value where
#~ :: HdrState ValueState Value -> HdrState ValueState Value
(#~) HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
#/^ :: HdrState ValueState Value -> HdrState ValueState Value
(#/^) HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
#| :: HdrState ValueState Value -> HdrState ValueState Value
(#|) HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
#+ :: HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
(#+) HdrState ValueState Value
_ HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
#- :: HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
(#-) HdrState ValueState Value
_ HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
#* :: HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
(#*) HdrState ValueState Value
_ HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
#/ :: HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
(#/) HdrState ValueState Value
_ HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
#% :: HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
(#%) HdrState ValueState Value
_ HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
#^ :: HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
(#^) HdrState ValueState Value
_ HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
log :: HdrState ValueState Value -> HdrState ValueState Value
log HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
ln :: HdrState ValueState Value -> HdrState ValueState Value
ln HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
exp :: HdrState ValueState Value -> HdrState ValueState Value
exp HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
sin :: HdrState ValueState Value -> HdrState ValueState Value
sin HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
cos :: HdrState ValueState Value -> HdrState ValueState Value
cos HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
tan :: HdrState ValueState Value -> HdrState ValueState Value
tan HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
csc :: HdrState ValueState Value -> HdrState ValueState Value
csc HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
sec :: HdrState ValueState Value -> HdrState ValueState Value
sec HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
cot :: HdrState ValueState Value -> HdrState ValueState Value
cot HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
arcsin :: HdrState ValueState Value -> HdrState ValueState Value
arcsin HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
arccos :: HdrState ValueState Value -> HdrState ValueState Value
arccos HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
arctan :: HdrState ValueState Value -> HdrState ValueState Value
arctan HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
floor :: HdrState ValueState Value -> HdrState ValueState Value
floor HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
ceil :: HdrState ValueState Value -> HdrState ValueState Value
ceil HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
instance BooleanExpression CppHdrCode Value where
?! :: HdrState ValueState Value -> HdrState ValueState Value
(?!) HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
?&& :: HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
(?&&) HdrState ValueState Value
_ HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
?|| :: HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
(?||) HdrState ValueState Value
_ HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
instance Comparison CppHdrCode Value where
?< :: HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
(?<) HdrState ValueState Value
_ HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
?<= :: HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
(?<=) HdrState ValueState Value
_ HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
?> :: HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
(?>) HdrState ValueState Value
_ HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
?>= :: HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
(?>=) HdrState ValueState Value
_ HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
?== :: HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
(?==) HdrState ValueState Value
_ HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
?!= :: HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
(?!=) HdrState ValueState Value
_ HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
instance ValueExpression CppHdrCode Variable Value BinderD TypeData where
inlineIf :: HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState ValueState Value
inlineIf HdrState ValueState Value
_ HdrState ValueState Value
_ HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
funcAppMixedArgs :: MixedCall CppHdrCode Variable Value TypeData
funcAppMixedArgs String
_ State ValueState (CppHdrCode TypeData)
_ [HdrState ValueState Value]
_ [(HdrState ValueState Variable, HdrState ValueState Value)]
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
extFuncAppMixedArgs :: String -> MixedCall CppHdrCode Variable Value TypeData
extFuncAppMixedArgs String
_ String
_ State ValueState (CppHdrCode TypeData)
_ [HdrState ValueState Value]
_ [(HdrState ValueState Variable, HdrState ValueState Value)]
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
libFuncAppMixedArgs :: String -> MixedCall CppHdrCode Variable Value TypeData
libFuncAppMixedArgs String
_ String
_ State ValueState (CppHdrCode TypeData)
_ [HdrState ValueState Value]
_ [(HdrState ValueState Variable, HdrState ValueState Value)]
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
lambda :: [HdrState ValueState BinderD]
-> HdrState ValueState Value -> HdrState ValueState Value
lambda [HdrState ValueState BinderD]
_ HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
notNull :: HdrState ValueState Value -> HdrState ValueState Value
notNull HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
instance OOValueExpression CppHdrCode Variable Value TypeData where
newObjMixedArgs :: State ValueState (CppHdrCode TypeData)
-> [HdrState ValueState Value]
-> [(HdrState ValueState Variable, HdrState ValueState Value)]
-> HdrState ValueState Value
newObjMixedArgs State ValueState (CppHdrCode TypeData)
_ [HdrState ValueState Value]
_ [(HdrState ValueState Variable, HdrState ValueState Value)]
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
extNewObjMixedArgs :: MixedCall CppHdrCode Variable Value TypeData
extNewObjMixedArgs String
_ State ValueState (CppHdrCode TypeData)
_ [HdrState ValueState Value]
_ [(HdrState ValueState Variable, HdrState ValueState Value)]
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
libNewObjMixedArgs :: MixedCall CppHdrCode Variable Value TypeData
libNewObjMixedArgs String
_ State ValueState (CppHdrCode TypeData)
_ [HdrState ValueState Value]
_ [(HdrState ValueState Variable, HdrState ValueState Value)]
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
instance RenderValue CppHdrCode Variable Value TypeData where
inputFunc :: HdrState ValueState Value
inputFunc = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
printFunc :: HdrState ValueState Value
printFunc = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
printLnFunc :: HdrState ValueState Value
printLnFunc = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
printFileFunc :: HdrState ValueState Value -> HdrState ValueState Value
printFileFunc HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
printFileLnFunc :: HdrState ValueState Value -> HdrState ValueState Value
printFileLnFunc HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
cast :: State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Value -> HdrState ValueState Value
cast State ValueState (CppHdrCode TypeData)
_ HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
call :: Maybe String
-> Maybe Doc -> MixedCall CppHdrCode Variable Value TypeData
call Maybe String
_ Maybe Doc
_ String
_ State ValueState (CppHdrCode TypeData)
_ [HdrState ValueState Value]
_ [(HdrState ValueState Variable, HdrState ValueState Value)]
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
valFromData :: Maybe Int
-> Maybe Integer
-> State ValueState (CppHdrCode TypeData)
-> Doc
-> HdrState ValueState Value
valFromData Maybe Int
p Maybe Integer
i State ValueState (CppHdrCode TypeData)
t' Doc
d = do
t <- State ValueState (CppHdrCode TypeData)
t'
toState $ on2CodeValues (vd p i) t (toCode d)
instance ValueElim CppHdrCode Value where
valuePrec :: CppHdrCode Value -> Maybe Int
valuePrec = Value -> Maybe Int
valPrec (Value -> Maybe Int)
-> (CppHdrCode Value -> Value) -> CppHdrCode Value -> Maybe Int
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppHdrCode Value -> Value
forall a. CppHdrCode a -> a
unCPPHC
valueInt :: CppHdrCode Value -> Maybe Integer
valueInt = Value -> Maybe Integer
valInt (Value -> Maybe Integer)
-> (CppHdrCode Value -> Value) -> CppHdrCode Value -> Maybe Integer
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppHdrCode Value -> Value
forall a. CppHdrCode a -> a
unCPPHC
value :: CppHdrCode Value -> Doc
value = Value -> Doc
val (Value -> Doc)
-> (CppHdrCode Value -> Value) -> CppHdrCode Value -> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppHdrCode Value -> Value
forall a. CppHdrCode a -> a
unCPPHC
instance InternalValueExp CppHdrCode Variable Value TypeData where
objMethodCallMixedArgs' :: String
-> State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Value
-> [HdrState ValueState Value]
-> [(HdrState ValueState Variable, HdrState ValueState Value)]
-> HdrState ValueState Value
objMethodCallMixedArgs' String
_ State ValueState (CppHdrCode TypeData)
_ HdrState ValueState Value
_ [HdrState ValueState Value]
_ [(HdrState ValueState Variable, HdrState ValueState Value)]
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
classMethodCallMixedArgs' :: String
-> State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData)
-> [HdrState ValueState Value]
-> [(HdrState ValueState Variable, HdrState ValueState Value)]
-> HdrState ValueState Value
classMethodCallMixedArgs' String
_ State ValueState (CppHdrCode TypeData)
_ State ValueState (CppHdrCode TypeData)
_ [HdrState ValueState Value]
_ [(HdrState ValueState Variable, HdrState ValueState Value)]
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
instance OOFunctionSym CppHdrCode Value TypeData where
func :: String
-> State ValueState (CppHdrCode TypeData)
-> [HdrState ValueState Value]
-> HdrState ValueState FuncData
func String
_ State ValueState (CppHdrCode TypeData)
_ [HdrState ValueState Value]
_ = Doc
-> State ValueState (CppHdrCode TypeData)
-> HdrState ValueState FuncData
forall (r :: * -> *) typ.
RenderFunction r typ =>
Doc -> VS (r typ) -> VS (r FuncData)
funcFromData Doc
empty State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void
objAccess :: HdrState ValueState Value
-> HdrState ValueState FuncData -> HdrState ValueState Value
objAccess HdrState ValueState Value
_ HdrState ValueState FuncData
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
instance GetSet CppHdrCode Variable Value where
get :: HdrState ValueState Value
-> HdrState ValueState Variable -> HdrState ValueState Value
get HdrState ValueState Value
_ HdrState ValueState Variable
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
set :: HdrState ValueState Value
-> HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState ValueState Value
set HdrState ValueState Value
_ HdrState ValueState Variable
_ HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
instance IndexTranslator CppHdrCode Value where
intToIndex :: HdrState ValueState Value -> HdrState ValueState Value
intToIndex HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
indexToInt :: HdrState ValueState Value -> HdrState ValueState Value
indexToInt HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
instance Reference CppHdrCode Value where
makeRef :: HdrState ValueState Value -> HdrState ValueState Value
makeRef = HdrState ValueState Value -> HdrState ValueState Value
forall a. a -> a
id
maybeDeref :: HdrState ValueState Value -> HdrState ValueState Value
maybeDeref = HdrState ValueState Value -> HdrState ValueState Value
forall a. a -> a
id
instance Array CppHdrCode Variable Value where
arrayElem :: HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Variable
arrayElem HdrState ValueState Value
_ HdrState ValueState Value
_ = String
-> State ValueState (CppHdrCode TypeData)
-> Doc
-> HdrState ValueState Variable
forall {k} (r :: k -> *) (var :: k) (typ :: k).
RenderVariable r var typ =>
String -> VS (r typ) -> Doc -> VS (r var)
mkStateVar String
"" State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
arrayLength :: HdrState ValueState Value -> HdrState ValueState Value
arrayLength = HdrState ValueState Value -> HdrState ValueState Value
forall {k} (r :: k -> *) (val :: k).
List r val =>
VS (r val) -> VS (r val)
listSize
arrayCopy :: HdrState ValueState Value -> HdrState ValueState Value
arrayCopy = HdrState ValueState Value -> HdrState ValueState Value
forall a. a -> a
id
instance List CppHdrCode Value where
listSize :: HdrState ValueState Value -> HdrState ValueState Value
listSize HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
listAccess :: HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
listAccess HdrState ValueState Value
_ HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
indexOf :: HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
indexOf HdrState ValueState Value
_ HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
instance ListStatement CppHdrCode Statement Value where
listAdd :: HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState MethodState Statement
listAdd HdrState ValueState Value
_ HdrState ValueState Value
_ HdrState ValueState Value
_ = Doc -> HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
RenderStatement r stmt =>
Doc -> MS (r stmt)
mkStmt Doc
empty
listAppend :: HdrState ValueState Value
-> HdrState ValueState Value -> HdrState MethodState Statement
listAppend HdrState ValueState Value
_ HdrState ValueState Value
_ = Doc -> HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
RenderStatement r stmt =>
Doc -> MS (r stmt)
mkStmt Doc
empty
listSet :: HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState MethodState Statement
listSet HdrState ValueState Value
_ HdrState ValueState Value
_ HdrState ValueState Value
_ = Doc -> HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
RenderStatement r stmt =>
Doc -> MS (r stmt)
mkStmtNoEnd Doc
empty
instance Set CppHdrCode Value where
contains :: HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
contains HdrState ValueState Value
_ HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
setAdd :: HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
setAdd HdrState ValueState Value
_ HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
setRemove :: HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
setRemove HdrState ValueState Value
_ HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
setUnion :: HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
setUnion HdrState ValueState Value
_ HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void Doc
empty
instance InternalList CppHdrCode Block Variable Value where
listSlice' :: Maybe (HdrState ValueState Value)
-> Maybe (HdrState ValueState Value)
-> Maybe (HdrState ValueState Value)
-> HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState MethodState Doc
listSlice' Maybe (HdrState ValueState Value)
_ Maybe (HdrState ValueState Value)
_ Maybe (HdrState ValueState Value)
_ HdrState ValueState Variable
_ HdrState ValueState Value
_ = CppHdrCode Doc -> HdrState MethodState Doc
forall a s. a -> State s a
toState (CppHdrCode Doc -> HdrState MethodState Doc)
-> CppHdrCode Doc -> HdrState MethodState Doc
forall a b. (a -> b) -> a -> b
$ Doc -> CppHdrCode Doc
forall (r :: * -> *) a. Monad r => a -> r a
toCode Doc
empty
instance InternalGetSet CppHdrCode Variable Value TypeData where
getFunc :: HdrState ValueState Variable -> HdrState ValueState FuncData
getFunc HdrState ValueState Variable
_ = Doc
-> State ValueState (CppHdrCode TypeData)
-> HdrState ValueState FuncData
forall (r :: * -> *) typ.
RenderFunction r typ =>
Doc -> VS (r typ) -> VS (r FuncData)
funcFromData Doc
empty State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void
setFunc :: State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState ValueState FuncData
setFunc State ValueState (CppHdrCode TypeData)
_ HdrState ValueState Variable
_ HdrState ValueState Value
_ = Doc
-> State ValueState (CppHdrCode TypeData)
-> HdrState ValueState FuncData
forall (r :: * -> *) typ.
RenderFunction r typ =>
Doc -> VS (r typ) -> VS (r FuncData)
funcFromData Doc
empty State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void
instance InternalListFunc CppHdrCode Value TypeData where
listAccessFunc :: State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Value -> HdrState ValueState FuncData
listAccessFunc State ValueState (CppHdrCode TypeData)
_ HdrState ValueState Value
_ = Doc
-> State ValueState (CppHdrCode TypeData)
-> HdrState ValueState FuncData
forall (r :: * -> *) typ.
RenderFunction r typ =>
Doc -> VS (r typ) -> VS (r FuncData)
funcFromData Doc
empty State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void
instance BinderSym CppHdrCode BinderD TypeData where
binder :: String
-> State ValueState (CppHdrCode TypeData)
-> HdrState ValueState BinderD
binder String
nm State ValueState (CppHdrCode TypeData)
tp = (TypeData -> BinderD) -> CppHdrCode TypeData -> CppHdrCode BinderD
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
onCodeValue (String -> TypeData -> BinderD
bindFormD String
nm) (CppHdrCode TypeData -> CppHdrCode BinderD)
-> State ValueState (CppHdrCode TypeData)
-> HdrState ValueState BinderD
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> State ValueState (CppHdrCode TypeData)
tp
instance BinderElim CppHdrCode BinderD TypeData where
binderName :: CppHdrCode BinderD -> String
binderName = BinderD -> String
bindName (BinderD -> String)
-> (CppHdrCode BinderD -> BinderD) -> CppHdrCode BinderD -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppHdrCode BinderD -> BinderD
forall a. CppHdrCode a -> a
unCPPHC
binderType :: CppHdrCode BinderD -> CppHdrCode TypeData
binderType = (BinderD -> TypeData) -> CppHdrCode BinderD -> CppHdrCode TypeData
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
onCodeValue BinderD -> TypeData
bindType
instance InternalBinderElim CppHdrCode BinderD where
binderElim :: CppHdrCode BinderD -> Doc
binderElim = String -> Doc
text (String -> Doc)
-> (CppHdrCode BinderD -> String) -> CppHdrCode BinderD -> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. BinderD -> String
bindName (BinderD -> String)
-> (CppHdrCode BinderD -> BinderD) -> CppHdrCode BinderD -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppHdrCode BinderD -> BinderD
forall a. CppHdrCode a -> a
unCPPHC
instance RenderFunction CppHdrCode TypeData where
funcFromData :: Doc
-> State ValueState (CppHdrCode TypeData)
-> HdrState ValueState FuncData
funcFromData Doc
d = (CppHdrCode TypeData -> CppHdrCode FuncData)
-> State ValueState (CppHdrCode TypeData)
-> HdrState ValueState FuncData
forall a b s. (a -> b) -> State s a -> State s b
onStateValue ((TypeData -> FuncData)
-> CppHdrCode TypeData -> CppHdrCode FuncData
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
onCodeValue (TypeData -> Doc -> FuncData
`fd` Doc
d))
instance FunctionElim CppHdrCode TypeData where
functionType :: CppHdrCode FuncData -> CppHdrCode TypeData
functionType = (FuncData -> TypeData)
-> CppHdrCode FuncData -> CppHdrCode TypeData
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
onCodeValue FuncData -> TypeData
fType
function :: CppHdrCode FuncData -> Doc
function = FuncData -> Doc
funcDoc (FuncData -> Doc)
-> (CppHdrCode FuncData -> FuncData) -> CppHdrCode FuncData -> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppHdrCode FuncData -> FuncData
forall a. CppHdrCode a -> a
unCPPHC
instance InternalAssignStmt CppHdrCode Statement Variable Value where
multiAssign :: [HdrState ValueState Variable]
-> [HdrState ValueState Value] -> HdrState MethodState Statement
multiAssign [HdrState ValueState Variable]
_ [HdrState ValueState Value]
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
instance InternalIOStmt CppHdrCode Statement Value where
printSt :: Bool
-> Maybe (HdrState ValueState Value)
-> HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState MethodState Statement
printSt Bool
_ Maybe (HdrState ValueState Value)
_ HdrState ValueState Value
_ HdrState ValueState Value
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
instance InternalControlStmt CppHdrCode Statement Value where
multiReturn :: [HdrState ValueState Value] -> HdrState MethodState Statement
multiReturn [HdrState ValueState Value]
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
instance RenderStatement CppHdrCode Statement where
stmt :: HdrState MethodState Statement -> HdrState MethodState Statement
stmt = HdrState MethodState Statement -> HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
(RenderStatement r stmt, StatementElim r stmt) =>
MS (r stmt) -> MS (r stmt)
G.stmt
loopStmt :: HdrState MethodState Statement -> HdrState MethodState Statement
loopStmt HdrState MethodState Statement
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
stmtFromData :: Doc -> Terminator -> HdrState MethodState Statement
stmtFromData Doc
d Terminator
t = CppHdrCode Statement -> HdrState MethodState Statement
forall a s. a -> State s a
toState (CppHdrCode Statement -> HdrState MethodState Statement)
-> CppHdrCode Statement -> HdrState MethodState Statement
forall a b. (a -> b) -> a -> b
$ Statement -> CppHdrCode Statement
forall (r :: * -> *) a. Monad r => a -> r a
toCode (Doc
d, Terminator
t)
instance StatementElim CppHdrCode Statement where
statement :: CppHdrCode Statement -> Doc
statement = Statement -> Doc
forall a b. (a, b) -> a
fst (Statement -> Doc)
-> (CppHdrCode Statement -> Statement)
-> CppHdrCode Statement
-> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppHdrCode Statement -> Statement
forall a. CppHdrCode a -> a
unCPPHC
statementTerm :: CppHdrCode Statement -> Terminator
statementTerm = Statement -> Terminator
forall a b. (a, b) -> b
snd (Statement -> Terminator)
-> (CppHdrCode Statement -> Statement)
-> CppHdrCode Statement
-> Terminator
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppHdrCode Statement -> Statement
forall a. CppHdrCode a -> a
unCPPHC
instance EmptyStatement CppHdrCode Statement where
emptyStmt :: HdrState MethodState Statement
emptyStmt = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
RenderStatement r stmt =>
MS (r stmt)
G.emptyStmt
instance MultiStatement CppHdrCode Statement where
multi :: [HdrState MethodState Statement] -> HdrState MethodState Statement
multi [HdrState MethodState Statement]
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
instance ValueStatement CppHdrCode Statement Value where
valStmt :: HdrState ValueState Value -> HdrState MethodState Statement
valStmt HdrState ValueState Value
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
instance AssignStatement CppHdrCode Statement Variable Value where
assign :: HdrState ValueState Variable
-> HdrState ValueState Value -> HdrState MethodState Statement
assign HdrState ValueState Variable
_ HdrState ValueState Value
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
&-= :: HdrState ValueState Variable
-> HdrState ValueState Value -> HdrState MethodState Statement
(&-=) HdrState ValueState Variable
_ HdrState ValueState Value
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
&+= :: HdrState ValueState Variable
-> HdrState ValueState Value -> HdrState MethodState Statement
(&+=) HdrState ValueState Variable
_ HdrState ValueState Value
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
&++ :: HdrState ValueState Variable -> HdrState MethodState Statement
(&++) HdrState ValueState Variable
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
&-- :: HdrState ValueState Variable -> HdrState MethodState Statement
(&--) HdrState ValueState Variable
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
instance DeclStatement CppHdrCode Body Statement Variable ScopeData Value where
varDec :: HdrState ValueState Variable
-> CppHdrCode ScopeData -> HdrState MethodState Statement
varDec HdrState ValueState Variable
vr CppHdrCode ScopeData
scp = do
vr' <- LensLike'
(Zoomed (StateT ValueState Identity) (CppHdrCode Variable))
MethodState
ValueState
-> HdrState ValueState Variable
-> StateT MethodState Identity (CppHdrCode Variable)
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) (CppHdrCode Variable))
MethodState
ValueState
(ValueState -> Focusing Identity (CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS HdrState ValueState Variable
vr
let tp = (TypeData -> CodeType
cType (TypeData -> CodeType)
-> (CppHdrCode Variable -> TypeData)
-> CppHdrCode Variable
-> CodeType
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppHdrCode TypeData -> TypeData
forall a. CppHdrCode a -> a
unCPPHC (CppHdrCode TypeData -> TypeData)
-> (CppHdrCode Variable -> CppHdrCode TypeData)
-> CppHdrCode Variable
-> TypeData
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppHdrCode Variable -> CppHdrCode TypeData
forall {k} (r :: k -> *) (var :: k) (typ :: k).
VariableElim r var typ =>
r var -> r typ
variableType) CppHdrCode Variable
vr'
case tp of
(Array CodeType
_) -> String -> HdrState MethodState Statement
forall a. HasCallStack => String -> a
error String
"Can't use `varDec` for C++ arrays; use `arrayDec`"
CodeType
_ -> CppHdrCode AttachmentData
-> CppHdrCode AttachmentData
-> Doc
-> HdrState ValueState Variable
-> CppHdrCode ScopeData
-> HdrState MethodState Statement
forall (r :: * -> *) var attch stmt.
(InternalVarElim r var, PermElim r attch, RenderStatement r stmt,
ScopeElim r ScopeData, UnRepr r TypeData, TypeElim r TypeData,
VariableElim r var TypeData) =>
r attch
-> r attch -> Doc -> VS (r var) -> r ScopeData -> MS (r stmt)
C.varDec CppHdrCode AttachmentData
forall {k} (r :: k -> *) (attch :: k).
AttachmentSym r attch =>
r attch
classLevel CppHdrCode AttachmentData
forall {k} (r :: k -> *) (attch :: k).
AttachmentSym r attch =>
r attch
instanceLevel Doc
empty HdrState ValueState Variable
vr CppHdrCode ScopeData
scp
varDecDef :: HdrState ValueState Variable
-> CppHdrCode ScopeData
-> HdrState ValueState Value
-> HdrState MethodState Statement
varDecDef = Terminator
-> HdrState ValueState Variable
-> CppHdrCode ScopeData
-> HdrState ValueState Value
-> HdrState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(scope :: k) (val :: k).
(DeclStatement r bod stmt var scope val, RenderStatement r stmt,
StatementElim r stmt, ValueElim r val) =>
Terminator -> VS (r var) -> r scope -> VS (r val) -> MS (r stmt)
C.varDecDef Terminator
Semi
setDec :: HdrState ValueState Variable
-> CppHdrCode ScopeData -> HdrState MethodState Statement
setDec = HdrState ValueState Variable
-> CppHdrCode ScopeData -> HdrState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(scope :: k) (val :: k).
DeclStatement r bod stmt var scope val =>
VS (r var) -> r scope -> MS (r stmt)
varDec
setDecDef :: HdrState ValueState Variable
-> CppHdrCode ScopeData
-> HdrState ValueState Value
-> HdrState MethodState Statement
setDecDef = HdrState ValueState Variable
-> CppHdrCode ScopeData
-> HdrState ValueState Value
-> HdrState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(scope :: k) (val :: k).
DeclStatement r bod stmt var scope val =>
VS (r var) -> r scope -> VS (r val) -> MS (r stmt)
varDecDef
listDec :: Integer
-> HdrState ValueState Variable
-> CppHdrCode ScopeData
-> HdrState MethodState Statement
listDec Integer
_ HdrState ValueState Variable
_ CppHdrCode ScopeData
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
listDecDef :: HdrState ValueState Variable
-> CppHdrCode ScopeData
-> [HdrState ValueState Value]
-> HdrState MethodState Statement
listDecDef HdrState ValueState Variable
_ CppHdrCode ScopeData
_ [HdrState ValueState Value]
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
arrayDec :: Integer
-> HdrState ValueState Value
-> HdrState ValueState Variable
-> CppHdrCode ScopeData
-> HdrState MethodState Statement
arrayDec Integer
_ HdrState ValueState Value
_ HdrState ValueState Variable
_ CppHdrCode ScopeData
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
arrayDecDef :: HdrState ValueState Variable
-> CppHdrCode ScopeData
-> [HdrState ValueState Value]
-> HdrState MethodState Statement
arrayDecDef HdrState ValueState Variable
_ CppHdrCode ScopeData
_ [HdrState ValueState Value]
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
constDecDef :: HdrState ValueState Variable
-> CppHdrCode ScopeData
-> HdrState ValueState Value
-> HdrState MethodState Statement
constDecDef = HdrState ValueState Variable
-> CppHdrCode ScopeData
-> HdrState ValueState Value
-> HdrState MethodState Statement
forall (r :: * -> *) var stmt val.
(InternalVarElim r var, RenderStatement r stmt,
ScopeElim r ScopeData, UnRepr r TypeData, ValueElim r val,
VariableElim r var TypeData) =>
VS (r var) -> r ScopeData -> VS (r val) -> MS (r stmt)
CG.constDecDef
funcDecDef :: HdrState ValueState Variable
-> CppHdrCode ScopeData
-> [HdrState ValueState Variable]
-> HdrState MethodState Doc
-> HdrState MethodState Statement
funcDecDef HdrState ValueState Variable
_ CppHdrCode ScopeData
_ [HdrState ValueState Variable]
_ HdrState MethodState Doc
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
instance OODeclStatement CppHdrCode Statement Variable ScopeData Value where
objDecDef :: HdrState ValueState Variable
-> CppHdrCode ScopeData
-> HdrState ValueState Value
-> HdrState MethodState Statement
objDecDef HdrState ValueState Variable
_ CppHdrCode ScopeData
_ HdrState ValueState Value
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
objDecNew :: HdrState ValueState Variable
-> CppHdrCode ScopeData
-> [HdrState ValueState Value]
-> HdrState MethodState Statement
objDecNew HdrState ValueState Variable
_ CppHdrCode ScopeData
_ [HdrState ValueState Value]
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
extObjDecNew :: String
-> HdrState ValueState Variable
-> CppHdrCode ScopeData
-> [HdrState ValueState Value]
-> HdrState MethodState Statement
extObjDecNew String
_ HdrState ValueState Variable
_ CppHdrCode ScopeData
_ [HdrState ValueState Value]
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
instance PrintConsole CppHdrCode Statement Value where
print :: HdrState ValueState Value -> HdrState MethodState Statement
print HdrState ValueState Value
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
printLn :: HdrState ValueState Value -> HdrState MethodState Statement
printLn HdrState ValueState Value
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
printStr :: String -> HdrState MethodState Statement
printStr String
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
printStrLn :: String -> HdrState MethodState Statement
printStrLn String
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
instance ReadConsole CppHdrCode Statement Variable where
getInput :: HdrState ValueState Variable -> HdrState MethodState Statement
getInput HdrState ValueState Variable
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
discardInput :: HdrState MethodState Statement
discardInput = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
instance FileHandling CppHdrCode Statement Variable Value where
openFileR :: HdrState ValueState Variable
-> HdrState ValueState Value -> HdrState MethodState Statement
openFileR HdrState ValueState Variable
_ HdrState ValueState Value
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
openFileW :: HdrState ValueState Variable
-> HdrState ValueState Value -> HdrState MethodState Statement
openFileW HdrState ValueState Variable
_ HdrState ValueState Value
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
openFileA :: HdrState ValueState Variable
-> HdrState ValueState Value -> HdrState MethodState Statement
openFileA HdrState ValueState Variable
_ HdrState ValueState Value
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
closeFile :: HdrState ValueState Value -> HdrState MethodState Statement
closeFile HdrState ValueState Value
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
instance PrintFile CppHdrCode Statement Value where
printFile :: HdrState ValueState Value
-> HdrState ValueState Value -> HdrState MethodState Statement
printFile HdrState ValueState Value
_ HdrState ValueState Value
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
printFileLn :: HdrState ValueState Value
-> HdrState ValueState Value -> HdrState MethodState Statement
printFileLn HdrState ValueState Value
_ HdrState ValueState Value
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
printFileStr :: HdrState ValueState Value
-> String -> HdrState MethodState Statement
printFileStr HdrState ValueState Value
_ String
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
printFileStrLn :: HdrState ValueState Value
-> String -> HdrState MethodState Statement
printFileStrLn HdrState ValueState Value
_ String
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
instance ReadFile CppHdrCode Statement Variable Value where
getFileInput :: HdrState ValueState Value
-> HdrState ValueState Variable -> HdrState MethodState Statement
getFileInput HdrState ValueState Value
_ HdrState ValueState Variable
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
discardFileInput :: HdrState ValueState Value -> HdrState MethodState Statement
discardFileInput HdrState ValueState Value
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
getFileInputLine :: HdrState ValueState Value
-> HdrState ValueState Variable -> HdrState MethodState Statement
getFileInputLine HdrState ValueState Value
_ HdrState ValueState Variable
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
discardFileLine :: HdrState ValueState Value -> HdrState MethodState Statement
discardFileLine HdrState ValueState Value
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
getFileInputAll :: HdrState ValueState Value
-> HdrState ValueState Variable -> HdrState MethodState Statement
getFileInputAll HdrState ValueState Value
_ HdrState ValueState Variable
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
instance StringStatement CppHdrCode Statement Variable Value where
stringSplit :: Char
-> HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState MethodState Statement
stringSplit Char
_ HdrState ValueState Variable
_ HdrState ValueState Value
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
stringListVals :: [HdrState ValueState Variable]
-> HdrState ValueState Value -> HdrState MethodState Statement
stringListVals [HdrState ValueState Variable]
_ HdrState ValueState Value
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
stringListLists :: [HdrState ValueState Variable]
-> HdrState ValueState Value -> HdrState MethodState Statement
stringListLists [HdrState ValueState Variable]
_ HdrState ValueState Value
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
instance FuncAppStatement CppHdrCode Statement Variable Value where
inOutCall :: InOutCall CppHdrCode Statement Variable Value
inOutCall String
_ [HdrState ValueState Value]
_ [HdrState ValueState Variable]
_ [HdrState ValueState Variable]
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
extInOutCall :: String -> InOutCall CppHdrCode Statement Variable Value
extInOutCall String
_ String
_ [HdrState ValueState Value]
_ [HdrState ValueState Variable]
_ [HdrState ValueState Variable]
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
instance OOFuncAppStatement CppHdrCode Statement Variable Value where
selfInOutCall :: InOutCall CppHdrCode Statement Variable Value
selfInOutCall String
_ [HdrState ValueState Value]
_ [HdrState ValueState Variable]
_ [HdrState ValueState Variable]
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
instance CommentStatement CppHdrCode Statement where
comment :: String -> HdrState MethodState Statement
comment String
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
instance ControlStatement CppHdrCode Body Statement Variable Value where
break :: HdrState MethodState Statement
break = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
continue :: HdrState MethodState Statement
continue = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
returnStmt :: HdrState ValueState Value -> HdrState MethodState Statement
returnStmt HdrState ValueState Value
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
throw :: String -> HdrState MethodState Statement
throw String
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
ifCond :: [(HdrState ValueState Value, HdrState MethodState Doc)]
-> HdrState MethodState Doc -> HdrState MethodState Statement
ifCond [(HdrState ValueState Value, HdrState MethodState Doc)]
_ HdrState MethodState Doc
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
switch :: HdrState ValueState Value
-> [(HdrState ValueState Value, HdrState MethodState Doc)]
-> HdrState MethodState Doc
-> HdrState MethodState Statement
switch HdrState ValueState Value
_ [(HdrState ValueState Value, HdrState MethodState Doc)]
_ HdrState MethodState Doc
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
ifExists :: HdrState ValueState Value
-> HdrState MethodState Doc
-> HdrState MethodState Doc
-> HdrState MethodState Statement
ifExists HdrState ValueState Value
_ HdrState MethodState Doc
_ HdrState MethodState Doc
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
for :: HdrState MethodState Statement
-> HdrState ValueState Value
-> HdrState MethodState Statement
-> HdrState MethodState Doc
-> HdrState MethodState Statement
for HdrState MethodState Statement
_ HdrState ValueState Value
_ HdrState MethodState Statement
_ HdrState MethodState Doc
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
forRange :: HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState MethodState Doc
-> HdrState MethodState Statement
forRange HdrState ValueState Variable
_ HdrState ValueState Value
_ HdrState ValueState Value
_ HdrState ValueState Value
_ HdrState MethodState Doc
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
forEach :: HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState MethodState Doc
-> HdrState MethodState Statement
forEach HdrState ValueState Variable
_ HdrState ValueState Value
_ HdrState MethodState Doc
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
while :: HdrState ValueState Value
-> HdrState MethodState Doc -> HdrState MethodState Statement
while HdrState ValueState Value
_ HdrState MethodState Doc
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
tryCatch :: HdrState MethodState Doc
-> HdrState MethodState Doc -> HdrState MethodState Statement
tryCatch HdrState MethodState Doc
_ HdrState MethodState Doc
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
assert :: HdrState ValueState Value
-> HdrState ValueState Value -> HdrState MethodState Statement
assert HdrState ValueState Value
_ HdrState ValueState Value
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
instance ObserverPattern CppHdrCode Statement TypeData where
notifyObservers :: HdrState ValueState FuncData
-> State ValueState (CppHdrCode TypeData)
-> HdrState MethodState Statement
notifyObservers HdrState ValueState FuncData
_ State ValueState (CppHdrCode TypeData)
_ = HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
EmptyStatement r stmt =>
MS (r stmt)
emptyStmt
instance StrategyPattern CppHdrCode Body Block Variable Value where
runStrategy :: String
-> [(String, HdrState MethodState Doc)]
-> Maybe (HdrState ValueState Value)
-> Maybe (HdrState ValueState Variable)
-> HdrState MethodState Doc
runStrategy String
_ [(String, HdrState MethodState Doc)]
_ Maybe (HdrState ValueState Value)
_ Maybe (HdrState ValueState Variable)
_ = CppHdrCode Doc -> HdrState MethodState Doc
forall a s. a -> State s a
toState (CppHdrCode Doc -> HdrState MethodState Doc)
-> CppHdrCode Doc -> HdrState MethodState Doc
forall a b. (a -> b) -> a -> b
$ Doc -> CppHdrCode Doc
forall (r :: * -> *) a. Monad r => a -> r a
toCode Doc
empty
instance VisibilitySym CppHdrCode (Doc, VisibilityTag) where
private :: CppHdrCode (Doc, VisibilityTag)
private = (Doc, VisibilityTag) -> CppHdrCode (Doc, VisibilityTag)
forall (r :: * -> *) a. Monad r => a -> r a
toCode (Doc
R.private, VisibilityTag
Priv)
public :: CppHdrCode (Doc, VisibilityTag)
public = (Doc, VisibilityTag) -> CppHdrCode (Doc, VisibilityTag)
forall (r :: * -> *) a. Monad r => a -> r a
toCode (Doc
R.public, VisibilityTag
Pub)
instance RenderVisibility CppHdrCode (Doc, VisibilityTag) where
visibilityFromData :: VisibilityTag -> Doc -> CppHdrCode (Doc, VisibilityTag)
visibilityFromData VisibilityTag
s Doc
d = (Doc, VisibilityTag) -> CppHdrCode (Doc, VisibilityTag)
forall (r :: * -> *) a. Monad r => a -> r a
toCode (Doc
d, VisibilityTag
s)
instance VisibilityElim CppHdrCode (Doc, VisibilityTag) where
visibility :: CppHdrCode (Doc, VisibilityTag) -> Doc
visibility = (Doc, VisibilityTag) -> Doc
forall a b. (a, b) -> a
fst ((Doc, VisibilityTag) -> Doc)
-> (CppHdrCode (Doc, VisibilityTag) -> (Doc, VisibilityTag))
-> CppHdrCode (Doc, VisibilityTag)
-> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppHdrCode (Doc, VisibilityTag) -> (Doc, VisibilityTag)
forall a. CppHdrCode a -> a
unCPPHC
instance MethodTypeSym CppHdrCode TypeData where
mType :: State ValueState (CppHdrCode TypeData)
-> HdrState MethodState TypeData
mType = LensLike'
(Zoomed (StateT ValueState Identity) (CppHdrCode TypeData))
MethodState
ValueState
-> State ValueState (CppHdrCode TypeData)
-> HdrState MethodState TypeData
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) (CppHdrCode TypeData))
MethodState
ValueState
(ValueState -> Focusing Identity (CppHdrCode TypeData) ValueState)
-> MethodState
-> Focusing Identity (CppHdrCode TypeData) MethodState
Lens' MethodState ValueState
lensMStoVS
instance OOMethodTypeSym CppHdrCode TypeData where
construct :: String -> HdrState MethodState TypeData
construct = String -> HdrState MethodState TypeData
forall (r :: * -> *). Monad r => String -> MS (r TypeData)
G.construct
instance ParameterSym CppHdrCode ParamData Variable where
param :: HdrState ValueState Variable -> HdrState MethodState ParamData
param HdrState ValueState Variable
v' = do
v <- LensLike'
(Zoomed (StateT ValueState Identity) (CppHdrCode Variable))
MethodState
ValueState
-> HdrState ValueState Variable
-> StateT MethodState Identity (CppHdrCode Variable)
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) (CppHdrCode Variable))
MethodState
ValueState
(ValueState -> Focusing Identity (CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS HdrState ValueState Variable
v'
paramFromData v' (renderParam v)
pointerParam :: HdrState ValueState Variable -> HdrState MethodState ParamData
pointerParam HdrState ValueState Variable
v' = do
v <- LensLike'
(Zoomed (StateT ValueState Identity) (CppHdrCode Variable))
MethodState
ValueState
-> HdrState ValueState Variable
-> StateT MethodState Identity (CppHdrCode Variable)
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) (CppHdrCode Variable))
MethodState
ValueState
(ValueState -> Focusing Identity (CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS HdrState ValueState Variable
v'
paramFromData v' (cppPointerParamDoc v)
instance RenderParam CppHdrCode ParamData Variable where
paramFromData :: HdrState ValueState Variable
-> Doc -> HdrState MethodState ParamData
paramFromData HdrState ValueState Variable
v' Doc
d = do
v <- LensLike'
(Zoomed (StateT ValueState Identity) (CppHdrCode Variable))
MethodState
ValueState
-> HdrState ValueState Variable
-> StateT MethodState Identity (CppHdrCode Variable)
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) (CppHdrCode Variable))
MethodState
ValueState
(ValueState -> Focusing Identity (CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS HdrState ValueState Variable
v'
toState $ on2CodeValues pd v (toCode d)
instance ParamElim CppHdrCode ParamData TypeData where
parameterName :: CppHdrCode ParamData -> String
parameterName = CppHdrCode Variable -> String
forall {k} (r :: k -> *) (var :: k) (typ :: k).
VariableElim r var typ =>
r var -> String
variableName (CppHdrCode Variable -> String)
-> (CppHdrCode ParamData -> CppHdrCode Variable)
-> CppHdrCode ParamData
-> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ParamData -> Variable)
-> CppHdrCode ParamData -> CppHdrCode Variable
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
onCodeValue ParamData -> Variable
paramVar
parameterType :: CppHdrCode ParamData -> CppHdrCode TypeData
parameterType = CppHdrCode Variable -> CppHdrCode TypeData
forall {k} (r :: k -> *) (var :: k) (typ :: k).
VariableElim r var typ =>
r var -> r typ
variableType (CppHdrCode Variable -> CppHdrCode TypeData)
-> (CppHdrCode ParamData -> CppHdrCode Variable)
-> CppHdrCode ParamData
-> CppHdrCode TypeData
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ParamData -> Variable)
-> CppHdrCode ParamData -> CppHdrCode Variable
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
onCodeValue ParamData -> Variable
paramVar
parameter :: CppHdrCode ParamData -> Doc
parameter = ParamData -> Doc
paramDoc (ParamData -> Doc)
-> (CppHdrCode ParamData -> ParamData)
-> CppHdrCode ParamData
-> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppHdrCode ParamData -> ParamData
forall a. CppHdrCode a -> a
unCPPHC
instance MethodSym CppHdrCode MethodData (Doc, VisibilityTag) ParamData Body Variable TypeData where
docMain :: HdrState MethodState Doc -> HdrState MethodState MethodData
docMain = HdrState MethodState Doc -> HdrState MethodState MethodData
forall {k} (r :: k -> *) (mthd :: k) (vis :: k) (param :: k)
(bod :: k) (var :: k) (typ :: k).
MethodSym r mthd vis param bod var typ =>
MS (r bod) -> MS (r mthd)
mainFunction
function :: String
-> CppHdrCode (Doc, VisibilityTag)
-> State ValueState (CppHdrCode TypeData)
-> [HdrState MethodState ParamData]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData
function = String
-> CppHdrCode (Doc, VisibilityTag)
-> State ValueState (CppHdrCode TypeData)
-> [HdrState MethodState ParamData]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData
forall {k} (r :: k -> *) (attch :: k) (typ :: k) (mthd :: k)
(vis :: k) (param :: k) (bod :: k).
(AttachmentSym r attch, MethodTypeSym r typ,
OORenderMethod r mthd attch vis param bod typ) =>
String
-> r vis
-> VS (r typ)
-> [MS (r param)]
-> MS (r bod)
-> MS (r mthd)
G.function
mainFunction :: HdrState MethodState Doc -> HdrState MethodState MethodData
mainFunction HdrState MethodState Doc
_ = (MethodState -> MethodState)
-> CppHdrCode MethodData -> HdrState MethodState MethodData
forall s a. (s -> s) -> a -> State s a
modifyReturn (VisibilityTag -> MethodState -> MethodState
setVisibility VisibilityTag
Pub) (CppHdrCode MethodData -> HdrState MethodState MethodData)
-> CppHdrCode MethodData -> HdrState MethodState MethodData
forall a b. (a -> b) -> a -> b
$ MethodData -> CppHdrCode MethodData
forall (r :: * -> *) a. Monad r => a -> r a
toCode (MethodData -> CppHdrCode MethodData)
-> MethodData -> CppHdrCode MethodData
forall a b. (a -> b) -> a -> b
$ VisibilityTag -> Doc -> MethodData
mthd VisibilityTag
Pub Doc
empty
docFunc :: String
-> [String]
-> Maybe String
-> HdrState MethodState MethodData
-> HdrState MethodState MethodData
docFunc = String
-> [String]
-> Maybe String
-> HdrState MethodState MethodData
-> HdrState MethodState MethodData
forall (r :: * -> *) mthd.
(BlockCommentSym r, RenderMethod r mthd) =>
String -> [String] -> Maybe String -> MS (r mthd) -> MS (r mthd)
CP.doxFunc
inOutFunc :: String
-> CppHdrCode (Doc, VisibilityTag)
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData
inOutFunc String
n CppHdrCode (Doc, VisibilityTag)
s = (State ValueState (CppHdrCode TypeData)
-> [HdrState MethodState ParamData]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData)
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData
forall mthd.
(State ValueState (CppHdrCode TypeData)
-> [HdrState MethodState ParamData]
-> HdrState MethodState Doc
-> MS (CppHdrCode mthd))
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> HdrState MethodState Doc
-> MS (CppHdrCode mthd)
cpphInOut (String
-> CppHdrCode (Doc, VisibilityTag)
-> State ValueState (CppHdrCode TypeData)
-> [HdrState MethodState ParamData]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData
forall {k} (r :: k -> *) (mthd :: k) (vis :: k) (param :: k)
(bod :: k) (var :: k) (typ :: k).
MethodSym r mthd vis param bod var typ =>
String
-> r vis
-> VS (r typ)
-> [MS (r param)]
-> MS (r bod)
-> MS (r mthd)
function String
n CppHdrCode (Doc, VisibilityTag)
s)
docInOutFunc :: String
-> CppHdrCode (Doc, VisibilityTag)
-> DocInOutFunc CppHdrCode MethodData Doc Variable
docInOutFunc String
n CppHdrCode (Doc, VisibilityTag)
s = ([HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData)
-> DocInOutFunc CppHdrCode MethodData Doc Variable
forall (r :: * -> *) mthd var bod.
(BlockCommentSym r, RenderMethod r mthd) =>
([VS (r var)]
-> [VS (r var)] -> [VS (r var)] -> MS (r bod) -> MS (r mthd))
-> String
-> [(String, VS (r var))]
-> [(String, VS (r var))]
-> [(String, VS (r var))]
-> MS (r bod)
-> MS (r mthd)
CP.docInOutFunc (String
-> CppHdrCode (Doc, VisibilityTag)
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData
forall {k} (r :: k -> *) (mthd :: k) (vis :: k) (param :: k)
(bod :: k) (var :: k) (typ :: k).
MethodSym r mthd vis param bod var typ =>
String -> r vis -> InOutFunc r mthd bod var
inOutFunc String
n CppHdrCode (Doc, VisibilityTag)
s)
instance OOMethodSym CppHdrCode MethodData AttachmentData (Doc, VisibilityTag) ParamData Body Variable Value TypeData where
method :: String
-> CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode AttachmentData
-> State ValueState (CppHdrCode TypeData)
-> [HdrState MethodState ParamData]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData
method = String
-> CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode AttachmentData
-> State ValueState (CppHdrCode TypeData)
-> [HdrState MethodState ParamData]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData
forall {k} (r :: k -> *) (typ :: k) (mthd :: k) (attch :: k)
(vis :: k) (param :: k) (bod :: k).
(MethodTypeSym r typ,
OORenderMethod r mthd attch vis param bod typ) =>
String
-> r vis
-> r attch
-> VS (r typ)
-> [MS (r param)]
-> MS (r bod)
-> MS (r mthd)
G.method
getMethod :: HdrState ValueState Variable -> HdrState MethodState MethodData
getMethod HdrState ValueState Variable
v = LensLike'
(Zoomed (StateT ValueState Identity) (CppHdrCode Variable))
MethodState
ValueState
-> HdrState ValueState Variable
-> StateT MethodState Identity (CppHdrCode Variable)
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) (CppHdrCode Variable))
MethodState
ValueState
(ValueState -> Focusing Identity (CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS HdrState ValueState Variable
v StateT MethodState Identity (CppHdrCode Variable)
-> (CppHdrCode Variable -> HdrState MethodState MethodData)
-> HdrState MethodState MethodData
forall a b.
StateT MethodState Identity a
-> (a -> StateT MethodState Identity b)
-> StateT MethodState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (\CppHdrCode Variable
v' -> String
-> CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode AttachmentData
-> State ValueState (CppHdrCode TypeData)
-> [HdrState MethodState ParamData]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData
forall {k} (r :: k -> *) (mthd :: k) (attch :: k) (vis :: k)
(param :: k) (bod :: k) (var :: k) (val :: k) (typ :: k).
OOMethodSym r mthd attch vis param bod var val typ =>
String
-> r vis
-> r attch
-> VS (r typ)
-> [MS (r param)]
-> MS (r bod)
-> MS (r mthd)
method (String -> String
getterName (String -> String) -> String -> String
forall a b. (a -> b) -> a -> b
$ CppHdrCode Variable -> String
forall {k} (r :: k -> *) (var :: k) (typ :: k).
VariableElim r var typ =>
r var -> String
variableName
CppHdrCode Variable
v') CppHdrCode (Doc, VisibilityTag)
forall {k} (r :: k -> *) (vis :: k). VisibilitySym r vis => r vis
public CppHdrCode AttachmentData
forall {k} (r :: k -> *) (attch :: k).
AttachmentSym r attch =>
r attch
instanceLevel (CppHdrCode TypeData -> State ValueState (CppHdrCode TypeData)
forall a s. a -> State s a
toState (CppHdrCode TypeData -> State ValueState (CppHdrCode TypeData))
-> CppHdrCode TypeData -> State ValueState (CppHdrCode TypeData)
forall a b. (a -> b) -> a -> b
$ CppHdrCode Variable -> CppHdrCode TypeData
forall {k} (r :: k -> *) (var :: k) (typ :: k).
VariableElim r var typ =>
r var -> r typ
variableType CppHdrCode Variable
v') [] (CppHdrCode Doc -> HdrState MethodState Doc
forall a s. a -> State s a
toState (CppHdrCode Doc -> HdrState MethodState Doc)
-> CppHdrCode Doc -> HdrState MethodState Doc
forall a b. (a -> b) -> a -> b
$ Doc -> CppHdrCode Doc
forall (r :: * -> *) a. Monad r => a -> r a
toCode Doc
empty))
setMethod :: HdrState ValueState Variable -> HdrState MethodState MethodData
setMethod HdrState ValueState Variable
v = LensLike'
(Zoomed (StateT ValueState Identity) (CppHdrCode Variable))
MethodState
ValueState
-> HdrState ValueState Variable
-> StateT MethodState Identity (CppHdrCode Variable)
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) (CppHdrCode Variable))
MethodState
ValueState
(ValueState -> Focusing Identity (CppHdrCode Variable) ValueState)
-> MethodState
-> Focusing Identity (CppHdrCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS HdrState ValueState Variable
v StateT MethodState Identity (CppHdrCode Variable)
-> (CppHdrCode Variable -> HdrState MethodState MethodData)
-> HdrState MethodState MethodData
forall a b.
StateT MethodState Identity a
-> (a -> StateT MethodState Identity b)
-> StateT MethodState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (\CppHdrCode Variable
v' -> String
-> CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode AttachmentData
-> State ValueState (CppHdrCode TypeData)
-> [HdrState MethodState ParamData]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData
forall {k} (r :: k -> *) (mthd :: k) (attch :: k) (vis :: k)
(param :: k) (bod :: k) (var :: k) (val :: k) (typ :: k).
OOMethodSym r mthd attch vis param bod var val typ =>
String
-> r vis
-> r attch
-> VS (r typ)
-> [MS (r param)]
-> MS (r bod)
-> MS (r mthd)
method (String -> String
setterName (String -> String) -> String -> String
forall a b. (a -> b) -> a -> b
$ CppHdrCode Variable -> String
forall {k} (r :: k -> *) (var :: k) (typ :: k).
VariableElim r var typ =>
r var -> String
variableName
CppHdrCode Variable
v') CppHdrCode (Doc, VisibilityTag)
forall {k} (r :: k -> *) (vis :: k). VisibilitySym r vis => r vis
public CppHdrCode AttachmentData
forall {k} (r :: k -> *) (attch :: k).
AttachmentSym r attch =>
r attch
instanceLevel State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void [HdrState ValueState Variable -> HdrState MethodState ParamData
forall {k} (r :: k -> *) (param :: k) (var :: k).
ParameterSym r param var =>
VS (r var) -> MS (r param)
param HdrState ValueState Variable
v] (CppHdrCode Doc -> HdrState MethodState Doc
forall a s. a -> State s a
toState (CppHdrCode Doc -> HdrState MethodState Doc)
-> CppHdrCode Doc -> HdrState MethodState Doc
forall a b. (a -> b) -> a -> b
$ Doc -> CppHdrCode Doc
forall (r :: * -> *) a. Monad r => a -> r a
toCode Doc
empty))
constructor :: [HdrState MethodState ParamData]
-> [(HdrState ValueState Variable, HdrState ValueState Value)]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData
constructor [HdrState MethodState ParamData]
ps [(HdrState ValueState Variable, HdrState ValueState Value)]
is HdrState MethodState Doc
b = StateT MethodState Identity String
getClassName StateT MethodState Identity String
-> (String -> HdrState MethodState MethodData)
-> HdrState MethodState MethodData
forall a b.
StateT MethodState Identity a
-> (a -> StateT MethodState Identity b)
-> StateT MethodState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (\String
n -> String
-> [HdrState MethodState ParamData]
-> [(HdrState ValueState Variable, HdrState ValueState Value)]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData
forall (r :: * -> *) file mod cls stvr mthd attch vis param bod
block stmt var scope val binder typ.
OORenderSym
r
file
mod
cls
stvr
mthd
attch
vis
param
bod
block
stmt
var
scope
val
binder
typ =>
String
-> [MS (r param)]
-> Initializers r var val
-> MS (r bod)
-> MS (r mthd)
CP.constructor String
n [HdrState MethodState ParamData]
ps [(HdrState ValueState Variable, HdrState ValueState Value)]
is HdrState MethodState Doc
b)
inOutMethod :: String
-> CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode AttachmentData
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData
inOutMethod String
n CppHdrCode (Doc, VisibilityTag)
s CppHdrCode AttachmentData
p = (State ValueState (CppHdrCode TypeData)
-> [HdrState MethodState ParamData]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData)
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData
forall mthd.
(State ValueState (CppHdrCode TypeData)
-> [HdrState MethodState ParamData]
-> HdrState MethodState Doc
-> MS (CppHdrCode mthd))
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> HdrState MethodState Doc
-> MS (CppHdrCode mthd)
cpphInOut (String
-> CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode AttachmentData
-> State ValueState (CppHdrCode TypeData)
-> [HdrState MethodState ParamData]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData
forall {k} (r :: k -> *) (mthd :: k) (attch :: k) (vis :: k)
(param :: k) (bod :: k) (var :: k) (val :: k) (typ :: k).
OOMethodSym r mthd attch vis param bod var val typ =>
String
-> r vis
-> r attch
-> VS (r typ)
-> [MS (r param)]
-> MS (r bod)
-> MS (r mthd)
method String
n CppHdrCode (Doc, VisibilityTag)
s CppHdrCode AttachmentData
p)
docInOutMethod :: String
-> CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode AttachmentData
-> DocInOutFunc CppHdrCode MethodData Doc Variable
docInOutMethod String
n CppHdrCode (Doc, VisibilityTag)
s CppHdrCode AttachmentData
p = ([HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData)
-> DocInOutFunc CppHdrCode MethodData Doc Variable
forall (r :: * -> *) mthd var bod.
(BlockCommentSym r, RenderMethod r mthd) =>
([VS (r var)]
-> [VS (r var)] -> [VS (r var)] -> MS (r bod) -> MS (r mthd))
-> String
-> [(String, VS (r var))]
-> [(String, VS (r var))]
-> [(String, VS (r var))]
-> MS (r bod)
-> MS (r mthd)
CP.docInOutFunc (String
-> CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode AttachmentData
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData
forall {k} (r :: k -> *) (mthd :: k) (attch :: k) (vis :: k)
(param :: k) (bod :: k) (var :: k) (val :: k) (typ :: k).
OOMethodSym r mthd attch vis param bod var val typ =>
String -> r vis -> r attch -> InOutFunc r mthd bod var
inOutMethod String
n CppHdrCode (Doc, VisibilityTag)
s CppHdrCode AttachmentData
p)
instance RenderMethod CppHdrCode MethodData where
commentedFunc :: HdrState MethodState Doc
-> HdrState MethodState MethodData
-> HdrState MethodState MethodData
commentedFunc = FileType
-> HdrState MethodState Doc
-> HdrState MethodState MethodData
-> HdrState MethodState MethodData
forall (r :: * -> *).
(BlockCommentElim r, Monad r) =>
FileType -> MS (r Doc) -> MS (r MethodData) -> MS (r MethodData)
cppCommentedFunc FileType
Header
mthdFromData :: VisibilityTag -> Doc -> HdrState MethodState MethodData
mthdFromData VisibilityTag
s Doc
d = CppHdrCode MethodData -> HdrState MethodState MethodData
forall a s. a -> State s a
toState (CppHdrCode MethodData -> HdrState MethodState MethodData)
-> CppHdrCode MethodData -> HdrState MethodState MethodData
forall a b. (a -> b) -> a -> b
$ MethodData -> CppHdrCode MethodData
forall (r :: * -> *) a. Monad r => a -> r a
toCode (MethodData -> CppHdrCode MethodData)
-> MethodData -> CppHdrCode MethodData
forall a b. (a -> b) -> a -> b
$ VisibilityTag -> Doc -> MethodData
mthd VisibilityTag
s Doc
d
instance OORenderMethod CppHdrCode MethodData AttachmentData (Doc, VisibilityTag) ParamData Body TypeData where
intMethod :: Bool
-> String
-> CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode AttachmentData
-> HdrState MethodState TypeData
-> [HdrState MethodState ParamData]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData
intMethod Bool
_ String
n CppHdrCode (Doc, VisibilityTag)
s CppHdrCode AttachmentData
a HdrState MethodState TypeData
t [HdrState MethodState ParamData]
ps HdrState MethodState Doc
_ = do
(MethodState -> MethodState) -> StateT MethodState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (VisibilityTag -> MethodState -> MethodState
setVisibility ((Doc, VisibilityTag) -> VisibilityTag
forall a b. (a, b) -> b
snd ((Doc, VisibilityTag) -> VisibilityTag)
-> (Doc, VisibilityTag) -> VisibilityTag
forall a b. (a -> b) -> a -> b
$ CppHdrCode (Doc, VisibilityTag) -> (Doc, VisibilityTag)
forall a. CppHdrCode a -> a
unCPPHC CppHdrCode (Doc, VisibilityTag)
s))
tp <- HdrState MethodState TypeData
t
pms <- sequence ps
pure $ toCode $ mthd (snd $ unCPPHC s) $ cpphMethod n tp a pms
intFunc :: Bool
-> String
-> CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode AttachmentData
-> HdrState MethodState TypeData
-> [HdrState MethodState ParamData]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData
intFunc Bool
_ = String
-> CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode AttachmentData
-> HdrState MethodState TypeData
-> [HdrState MethodState ParamData]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData
forall attch.
String
-> CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode attch
-> HdrState MethodState TypeData
-> [HdrState MethodState ParamData]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData
cpphIntFunc
destructor :: forall stvr.
[CSStateVar CppHdrCode stvr] -> HdrState MethodState MethodData
destructor = String
-> [CSStateVar CppHdrCode stvr] -> HdrState MethodState MethodData
forall a. HasCallStack => String -> a
error (String
-> [CSStateVar CppHdrCode stvr] -> HdrState MethodState MethodData)
-> String
-> [CSStateVar CppHdrCode stvr]
-> HdrState MethodState MethodData
forall a b. (a -> b) -> a -> b
$ String -> String
CP.destructorError String
cppName
instance MethodElim CppHdrCode MethodData where
method :: CppHdrCode MethodData -> Doc
method = MethodData -> Doc
mthdDoc (MethodData -> Doc)
-> (CppHdrCode MethodData -> MethodData)
-> CppHdrCode MethodData
-> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppHdrCode MethodData -> MethodData
forall a. CppHdrCode a -> a
unCPPHC
instance StateVarSym CppHdrCode StateVarData AttachmentData (Doc, VisibilityTag) Variable Value where
stateVar :: CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode AttachmentData
-> HdrState ValueState Variable
-> HdrState ClassState StateVarData
stateVar CppHdrCode (Doc, VisibilityTag)
s CppHdrCode AttachmentData
p HdrState ValueState Variable
v = do
dec <- LensLike'
(Zoomed (StateT MethodState Identity) (CppHdrCode Statement))
ClassState
MethodState
-> HdrState MethodState Statement
-> StateT ClassState Identity (CppHdrCode Statement)
forall c.
LensLike'
(Zoomed (StateT MethodState Identity) c) ClassState MethodState
-> StateT MethodState Identity c -> StateT ClassState 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 MethodState Identity) (CppHdrCode Statement))
ClassState
MethodState
(MethodState
-> Focusing Identity (CppHdrCode Statement) MethodState)
-> ClassState
-> Focusing Identity (CppHdrCode Statement) ClassState
Lens' ClassState MethodState
lensCStoMS (HdrState MethodState Statement
-> StateT ClassState Identity (CppHdrCode Statement))
-> HdrState MethodState Statement
-> StateT ClassState Identity (CppHdrCode Statement)
forall a b. (a -> b) -> a -> b
$ HdrState MethodState Statement -> HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
RenderStatement r stmt =>
MS (r stmt) -> MS (r stmt)
stmt (HdrState MethodState Statement -> HdrState MethodState Statement)
-> HdrState MethodState Statement -> HdrState MethodState Statement
forall a b. (a -> b) -> a -> b
$ CppHdrCode AttachmentData
-> CppHdrCode AttachmentData
-> Doc
-> HdrState ValueState Variable
-> CppHdrCode ScopeData
-> HdrState MethodState Statement
forall (r :: * -> *) var attch stmt.
(InternalVarElim r var, PermElim r attch, RenderStatement r stmt,
ScopeElim r ScopeData, UnRepr r TypeData, TypeElim r TypeData,
VariableElim r var TypeData) =>
r attch
-> r attch -> Doc -> VS (r var) -> r ScopeData -> MS (r stmt)
C.varDec CppHdrCode AttachmentData
forall {k} (r :: k -> *) (attch :: k).
AttachmentSym r attch =>
r attch
classLevel CppHdrCode AttachmentData
forall {k} (r :: k -> *) (attch :: k).
AttachmentSym r attch =>
r attch
instanceLevel Doc
empty HdrState ValueState Variable
v CppHdrCode ScopeData
forall {k} (r :: k -> *) (scope :: k). ScopeSym r scope => r scope
local
pure $ on2CodeValues svd (onCodeValue snd s)
(toCode $ R.stateVar empty (RC.perm p) (RC.statement dec))
stateVarDef :: CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode AttachmentData
-> HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState ClassState StateVarData
stateVarDef CppHdrCode (Doc, VisibilityTag)
s CppHdrCode AttachmentData
p HdrState ValueState Variable
vr HdrState ValueState Value
vl = do
d <- Doc
-> CppHdrCode AttachmentData
-> HdrState ValueState Variable
-> HdrState ValueState Value
-> CS Doc
cpphStateVarDef Doc
empty CppHdrCode AttachmentData
p HdrState ValueState Variable
vr HdrState ValueState Value
vl
pure $ pure $ svd (snd $ unCPPHC s) d
constVar :: CppHdrCode (Doc, VisibilityTag)
-> HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState ClassState StateVarData
constVar CppHdrCode (Doc, VisibilityTag)
s HdrState ValueState Variable
vr HdrState ValueState Value
_ = do
vr' <- LensLike'
(Zoomed (StateT ValueState Identity) (CppHdrCode Variable))
ClassState
ValueState
-> HdrState ValueState Variable
-> StateT ClassState Identity (CppHdrCode Variable)
forall c.
LensLike'
(Zoomed (StateT ValueState Identity) c) ClassState ValueState
-> StateT ValueState Identity c -> StateT ClassState 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) (CppHdrCode Variable))
ClassState
ValueState
(ValueState -> Focusing Identity (CppHdrCode Variable) ValueState)
-> ClassState -> Focusing Identity (CppHdrCode Variable) ClassState
Lens' ClassState ValueState
lensCStoVS HdrState ValueState Variable
vr
let attch = Doc -> Doc -> Doc -> Variable -> Doc
R.constVar Doc
empty Doc
endStatement (AttachmentData -> Doc
attachmentDoc (CppHdrCode AttachmentData -> AttachmentData
forall a. CppHdrCode a -> a
unCPPHC CppHdrCode AttachmentData
forall {k} (r :: k -> *) (attch :: k).
AttachmentSym r attch =>
r attch
classLevel)) (CppHdrCode Variable -> Variable
forall a. CppHdrCode a -> a
unCPPHC CppHdrCode Variable
vr')
pure $ pure $ svd (snd $ unCPPHC s) attch
instance StateVarElim CppHdrCode StateVarData where
stateVar :: CppHdrCode StateVarData -> Doc
stateVar = StateVarData -> Doc
stVar (StateVarData -> Doc)
-> (CppHdrCode StateVarData -> StateVarData)
-> CppHdrCode StateVarData
-> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppHdrCode StateVarData -> StateVarData
forall a. CppHdrCode a -> a
unCPPHC
instance ClassSym CppHdrCode Class StateVarData MethodData where
buildClass :: Maybe String
-> [HdrState ClassState StateVarData]
-> [HdrState MethodState MethodData]
-> [HdrState MethodState MethodData]
-> HdrState ClassState Doc
buildClass = Maybe String
-> [HdrState ClassState StateVarData]
-> [HdrState MethodState MethodData]
-> [HdrState MethodState MethodData]
-> HdrState ClassState Doc
forall (r :: * -> *) cls stvr mthd vis.
(RenderClass r cls stvr mthd vis, VisibilitySym r vis) =>
Maybe String
-> [CSStateVar r stvr]
-> [MS (r mthd)]
-> [MS (r mthd)]
-> CS (r cls)
G.buildClass
extraClass :: String
-> Maybe String
-> [HdrState ClassState StateVarData]
-> [HdrState MethodState MethodData]
-> [HdrState MethodState MethodData]
-> HdrState ClassState Doc
extraClass = String
-> Maybe String
-> [HdrState ClassState StateVarData]
-> [HdrState MethodState MethodData]
-> [HdrState MethodState MethodData]
-> HdrState ClassState Doc
forall (r :: * -> *) cls stvr mthd vis.
(RenderClass r cls stvr mthd vis, VisibilitySym r vis) =>
String
-> Maybe String
-> [CSStateVar r stvr]
-> [MS (r mthd)]
-> [MS (r mthd)]
-> CS (r cls)
CP.extraClass
implementingClass :: String
-> [String]
-> [HdrState ClassState StateVarData]
-> [HdrState MethodState MethodData]
-> [HdrState MethodState MethodData]
-> HdrState ClassState Doc
implementingClass = String
-> [String]
-> [HdrState ClassState StateVarData]
-> [HdrState MethodState MethodData]
-> [HdrState MethodState MethodData]
-> HdrState ClassState Doc
forall (r :: * -> *) cls stvr mthd vis.
(RenderClass r cls stvr mthd vis, VisibilitySym r vis) =>
String
-> [String]
-> [CSStateVar r stvr]
-> [MS (r mthd)]
-> [MS (r mthd)]
-> CS (r cls)
G.implementingClass
docClass :: String -> HdrState ClassState Doc -> HdrState ClassState Doc
docClass = String -> HdrState ClassState Doc -> HdrState ClassState Doc
forall (r :: * -> *) cls stvr mthd vis.
(BlockCommentSym r, RenderClass r cls stvr mthd vis) =>
String -> CS (r cls) -> CS (r cls)
CP.doxClass
instance RenderClass CppHdrCode Class StateVarData MethodData (Doc, VisibilityTag) where
intClass :: String
-> CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode Doc
-> [HdrState ClassState StateVarData]
-> [HdrState MethodState MethodData]
-> [HdrState MethodState MethodData]
-> HdrState ClassState Doc
intClass String
n CppHdrCode (Doc, VisibilityTag)
_ CppHdrCode Doc
i [HdrState ClassState StateVarData]
vs [HdrState MethodState MethodData]
cstrs [HdrState MethodState MethodData]
mths = do
(ClassState -> ClassState) -> StateT ClassState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (String -> ClassState -> ClassState
setClassName String
n)
vars <- [HdrState ClassState StateVarData]
-> StateT ClassState Identity [CppHdrCode StateVarData]
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
forall (m :: * -> *) a. Monad m => [m a] -> m [a]
sequence [HdrState ClassState StateVarData]
vs
funcs <- sequence fs
pure $ cpphClass n i vars funcs public private
where fs :: [StateT ClassState Identity (CppHdrCode MethodData)]
fs = LensLike'
(Zoomed (StateT MethodState Identity) (CppHdrCode MethodData))
ClassState
MethodState
-> HdrState MethodState MethodData
-> StateT ClassState Identity (CppHdrCode MethodData)
forall c.
LensLike'
(Zoomed (StateT MethodState Identity) c) ClassState MethodState
-> StateT MethodState Identity c -> StateT ClassState 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 MethodState Identity) (CppHdrCode MethodData))
ClassState
MethodState
(MethodState
-> Focusing Identity (CppHdrCode MethodData) MethodState)
-> ClassState
-> Focusing Identity (CppHdrCode MethodData) ClassState
Lens' ClassState MethodState
lensCStoMS (HdrState MethodState MethodData
-> StateT ClassState Identity (CppHdrCode MethodData))
-> [HdrState MethodState MethodData]
-> [StateT ClassState Identity (CppHdrCode MethodData)]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [HdrState MethodState MethodData]
cstrs [HdrState MethodState MethodData]
-> [HdrState MethodState MethodData]
-> [HdrState MethodState MethodData]
forall a. Semigroup a => a -> a -> a
P.<> [HdrState MethodState MethodData]
mths
inherit :: Maybe String -> CppHdrCode Doc
inherit Maybe String
n = ((Doc, VisibilityTag) -> Doc)
-> CppHdrCode (Doc, VisibilityTag) -> CppHdrCode Doc
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
onCodeValue (Maybe String -> Doc -> Doc
cppInherit Maybe String
n (Doc -> Doc)
-> ((Doc, VisibilityTag) -> Doc) -> (Doc, VisibilityTag) -> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Doc, VisibilityTag) -> Doc
forall a b. (a, b) -> a
fst) CppHdrCode (Doc, VisibilityTag)
forall {k} (r :: k -> *) (vis :: k). VisibilitySym r vis => r vis
public
implements :: [String] -> CppHdrCode Doc
implements [String]
is = ((Doc, VisibilityTag) -> Doc)
-> CppHdrCode (Doc, VisibilityTag) -> CppHdrCode Doc
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
onCodeValue ((\Doc
p -> Doc
colon Doc -> Doc -> Doc
<+> [Doc] -> Doc
hcat ((Doc
p Doc -> Doc -> Doc
<+>) (Doc -> Doc) -> (String -> Doc) -> String -> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> Doc
text (String -> Doc) -> [String] -> [Doc]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [String]
is))
(Doc -> Doc)
-> ((Doc, VisibilityTag) -> Doc) -> (Doc, VisibilityTag) -> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Doc, VisibilityTag) -> Doc
forall a b. (a, b) -> a
fst) CppHdrCode (Doc, VisibilityTag)
forall {k} (r :: k -> *) (vis :: k). VisibilitySym r vis => r vis
public
commentedClass :: HdrState ClassState Doc
-> HdrState ClassState Doc -> HdrState ClassState Doc
commentedClass = HdrState ClassState Doc
-> HdrState ClassState Doc -> HdrState ClassState Doc
forall (r :: * -> *) cls.
(BlockCommentElim r, ClassElim r cls, Monad r) =>
CS (r Doc) -> CS (r cls) -> CS (r Doc)
G.commentedClass
instance ClassElim CppHdrCode Class where
class' :: CppHdrCode Doc -> Doc
class' = CppHdrCode Doc -> Doc
forall a. CppHdrCode a -> a
unCPPHC
instance ModuleSym CppHdrCode ModData Class MethodData where
buildModule :: String
-> [String]
-> [HdrState MethodState MethodData]
-> [HdrState ClassState Doc]
-> HdrState FileState ModData
buildModule String
n [String]
is = String
-> FS Doc
-> FS Doc
-> FS Doc
-> [HdrState MethodState MethodData]
-> [HdrState ClassState Doc]
-> HdrState FileState ModData
forall {k} (r :: k -> *) (cls :: k) (mthd :: k) (mod :: k).
(ClassElim r cls, MethodElim r mthd, RenderMod r mod) =>
String
-> FS Doc
-> FS Doc
-> FS Doc
-> [MS (r mthd)]
-> [CS (r cls)]
-> FS (r mod)
CP.buildModule String
n (do
ds <- FS [String]
getHeaderDefines
lis <- getHeaderLangImports
libis <- getHeaderLibImports
mis <- getHeaderModImports
us <- getHeaderUsing
pure $ vibcat [
vcat ((define <+>) . text <$> ds),
vcat (RC.import' . li <$> lis),
vcat (RC.import' . mi <$> (sort (is P.<> libis) P.<> mis)),
vcat (usingNameSpace std . Just <$> us)])
(Doc -> FS Doc
forall a. a -> StateT FileState Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Doc
empty) (Doc -> FS Doc
forall a. a -> StateT FileState Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Doc
empty)
where mi, li :: Label -> CppHdrCode Doc
mi :: String -> CppHdrCode Doc
mi = String -> CppHdrCode Doc
forall (r :: * -> *). ImportSym r => String -> r Doc
modImport
li :: String -> CppHdrCode Doc
li = String -> CppHdrCode Doc
forall (r :: * -> *). ImportSym r => String -> r Doc
langImport
instance RenderMod CppHdrCode ModData where
modFromData :: String -> FS Doc -> HdrState FileState ModData
modFromData String
n = String
-> (Doc -> CppHdrCode ModData)
-> FS Doc
-> HdrState FileState ModData
forall {k} (r :: k -> *) (mod :: k).
String -> (Doc -> r mod) -> FS Doc -> FS (r mod)
G.modFromData String
n (ModData -> CppHdrCode ModData
forall (r :: * -> *) a. Monad r => a -> r a
toCode (ModData -> CppHdrCode ModData)
-> (Doc -> ModData) -> Doc -> CppHdrCode ModData
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> Doc -> ModData
md String
n)
updateModuleDoc :: (Doc -> Doc) -> CppHdrCode ModData -> CppHdrCode ModData
updateModuleDoc Doc -> Doc
f = (ModData -> ModData) -> CppHdrCode ModData -> CppHdrCode ModData
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
onCodeValue ((Doc -> Doc) -> ModData -> ModData
updateMod Doc -> Doc
f)
instance ModuleElim CppHdrCode ModData where
module' :: CppHdrCode ModData -> Doc
module' = ModData -> Doc
modDoc (ModData -> Doc)
-> (CppHdrCode ModData -> ModData) -> CppHdrCode ModData -> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppHdrCode ModData -> ModData
forall a. CppHdrCode a -> a
unCPPHC
instance BlockCommentSym CppHdrCode where
blockComment :: [String] -> CppHdrCode Doc
blockComment [String]
lns = Doc -> CppHdrCode Doc
forall (r :: * -> *) a. Monad r => a -> r a
toCode (Doc -> CppHdrCode Doc) -> Doc -> CppHdrCode Doc
forall a b. (a -> b) -> a -> b
$ [String] -> Doc -> Doc -> Doc
R.blockCmt [String]
lns Doc
blockCmtStart Doc
blockCmtEnd
docComment :: forall a. State a [String] -> State a (CppHdrCode Doc)
docComment = ([String] -> CppHdrCode Doc)
-> State a [String] -> State a (CppHdrCode Doc)
forall a b s. (a -> b) -> State s a -> State s b
onStateValue (\[String]
lns -> Doc -> CppHdrCode Doc
forall (r :: * -> *) a. Monad r => a -> r a
toCode (Doc -> CppHdrCode Doc) -> Doc -> CppHdrCode Doc
forall a b. (a -> b) -> a -> b
$ [String] -> Doc -> Doc -> Doc
R.docCmt [String]
lns Doc
docCmtStart
Doc
blockCmtEnd)
instance BlockCommentElim CppHdrCode where
blockComment' :: CppHdrCode Doc -> Doc
blockComment' = CppHdrCode Doc -> Doc
forall a. CppHdrCode a -> a
unCPPHC
isDtor :: Label -> Bool
isDtor :: String -> Bool
isDtor (Char
'~':String
_) = Bool
True
isDtor String
_ = Bool
False
getParam
:: (ParameterSym r param var, TypeElim r typ, VariableElim r var typ)
=> VS (r var) -> MS (r param)
getParam :: forall {k} (r :: k -> *) (param :: k) (var :: k) (typ :: k).
(ParameterSym r param var, TypeElim r typ,
VariableElim r var typ) =>
VS (r var) -> MS (r param)
getParam VS (r var)
v = LensLike'
(Zoomed (StateT ValueState Identity) (r var))
MethodState
ValueState
-> VS (r var) -> StateT MethodState Identity (r var)
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) (r var))
MethodState
ValueState
(ValueState -> Focusing Identity (r var) ValueState)
-> MethodState -> Focusing Identity (r var) MethodState
Lens' MethodState ValueState
lensMStoVS VS (r var)
v StateT MethodState Identity (r var)
-> (r var -> StateT MethodState Identity (r param))
-> StateT MethodState Identity (r param)
forall a b.
StateT MethodState Identity a
-> (a -> StateT MethodState Identity b)
-> StateT MethodState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (\r var
v' -> CodeType -> VS (r var) -> StateT MethodState Identity (r param)
forall {k} {r :: k -> *} {param :: k} {var :: k}.
ParameterSym r param var =>
CodeType -> VS (r var) -> MS (r param)
getParamFunc ((r typ -> CodeType
forall {k} (r :: k -> *) (typ :: k).
TypeElim r typ =>
r typ -> CodeType
getCodeType (r typ -> CodeType) -> (r var -> r typ) -> r var -> CodeType
forall b c a. (b -> c) -> (a -> b) -> a -> c
.
r var -> r typ
forall {k} (r :: k -> *) (var :: k) (typ :: k).
VariableElim r var typ =>
r var -> r typ
variableType) r var
v') VS (r var)
v)
where getParamFunc :: CodeType -> VS (r var) -> MS (r param)
getParamFunc (List CodeType
_) = VS (r var) -> MS (r param)
forall {k} (r :: k -> *) (param :: k) (var :: k).
ParameterSym r param var =>
VS (r var) -> MS (r param)
pointerParam
getParamFunc (Object String
_) = VS (r var) -> MS (r param)
forall {k} (r :: k -> *) (param :: k) (var :: k).
ParameterSym r param var =>
VS (r var) -> MS (r param)
pointerParam
getParamFunc CodeType
_ = VS (r var) -> MS (r param)
forall {k} (r :: k -> *) (param :: k) (var :: k).
ParameterSym r param var =>
VS (r var) -> MS (r param)
param
data MethodData = MthD {MethodData -> VisibilityTag
getMthdScp :: VisibilityTag, MethodData -> Doc
mthdDoc :: Doc}
mthd :: VisibilityTag -> Doc -> MethodData
mthd :: VisibilityTag -> Doc -> MethodData
mthd = VisibilityTag -> Doc -> MethodData
MthD
addAlgorithmImport :: MS a -> MS a
addAlgorithmImport :: forall a. MS a -> MS a
addAlgorithmImport MS a
v = do
(MethodState -> MethodState) -> StateT MethodState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (String -> MethodState -> MethodState
addLangImport String
algorithm)
MS a
v
addAlgorithmImportVS :: VS a -> VS a
addAlgorithmImportVS :: forall a. VS a -> VS a
addAlgorithmImportVS VS a
v = do
(ValueState -> ValueState) -> StateT ValueState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (String -> ValueState -> ValueState
addLangImportVS String
algorithm)
VS a
v
addFStreamImport :: a -> VS a
addFStreamImport :: forall a. a -> StateT ValueState Identity a
addFStreamImport = (ValueState -> ValueState) -> a -> State ValueState a
forall s a. (s -> s) -> a -> State s a
modifyReturn (String -> ValueState -> ValueState
addLangImportVS String
fstream)
addIOStreamImport :: VS a -> VS a
addIOStreamImport :: forall a. VS a -> VS a
addIOStreamImport VS a
v = do
(ValueState -> ValueState) -> StateT ValueState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (String -> ValueState -> ValueState
addLangImportVS String
iostream)
VS a
v
addMathHImport :: VS a -> VS a
addMathHImport :: forall a. VS a -> VS a
addMathHImport VS a
v = do
(ValueState -> ValueState) -> StateT ValueState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (String -> ValueState -> ValueState
addLangImportVS String
mathh)
VS a
v
addLimitsImport :: MS a -> MS a
addLimitsImport :: forall a. MS a -> MS a
addLimitsImport MS a
v = do
(MethodState -> MethodState) -> StateT MethodState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (String -> MethodState -> MethodState
addLangImport String
limits)
MS a
v
addCAssertImport :: MS a -> MS a
addCAssertImport :: forall a. MS a -> MS a
addCAssertImport MS a
v = do
(MethodState -> MethodState) -> StateT MethodState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (String -> MethodState -> MethodState
addLangImport String
cassert)
MS a
v
iterator :: VS (CppSrcCode TypeData) -> VS (CppSrcCode TypeData)
iterator :: State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData)
iterator State ValueState (CppSrcCode TypeData)
t = do
(ValueState -> ValueState) -> StateT ValueState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (String -> ValueState -> ValueState
addLangImportVS String
cppIterator)
State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData)
cppIterType (State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData))
-> State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData)
forall a b. (a -> b) -> a -> b
$ State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k).
TypeSym r typ =>
VS (r typ) -> VS (r typ)
listType State ValueState (CppSrcCode TypeData)
t
iterBegin :: VS (CppSrcCode Value) -> VS (CppSrcCode Value)
iterBegin :: VS (CppSrcCode Value) -> VS (CppSrcCode Value)
iterBegin VS (CppSrcCode Value)
v = VS (CppSrcCode Value)
v VS (CppSrcCode Value)
-> SrcState ValueState FuncData -> VS (CppSrcCode Value)
forall (r :: * -> *) val typ.
OOFunctionSym r val typ =>
VS (r val) -> VS (r FuncData) -> VS (r val)
$. State ValueState (CppSrcCode TypeData)
-> SrcState ValueState FuncData
cppIterBeginFunc (State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k).
TypeSym r typ =>
VS (r typ) -> VS (r typ)
innerType (State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData))
-> State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData)
forall a b. (a -> b) -> a -> b
$ (CppSrcCode Value -> CppSrcCode TypeData)
-> VS (CppSrcCode Value) -> State ValueState (CppSrcCode TypeData)
forall a b s. (a -> b) -> State s a -> State s b
onStateValue CppSrcCode Value -> CppSrcCode TypeData
forall {k} (r :: k -> *) (val :: k) (typ :: k).
ValueSym r val typ =>
r val -> r typ
valueType VS (CppSrcCode Value)
v)
iterEnd :: VS (CppSrcCode Value) -> VS (CppSrcCode Value)
iterEnd :: VS (CppSrcCode Value) -> VS (CppSrcCode Value)
iterEnd VS (CppSrcCode Value)
v = VS (CppSrcCode Value)
v VS (CppSrcCode Value)
-> SrcState ValueState FuncData -> VS (CppSrcCode Value)
forall (r :: * -> *) val typ.
OOFunctionSym r val typ =>
VS (r val) -> VS (r FuncData) -> VS (r val)
$. State ValueState (CppSrcCode TypeData)
-> SrcState ValueState FuncData
cppIterEndFunc (State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k).
TypeSym r typ =>
VS (r typ) -> VS (r typ)
innerType (State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData))
-> State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData)
forall a b. (a -> b) -> a -> b
$ (CppSrcCode Value -> CppSrcCode TypeData)
-> VS (CppSrcCode Value) -> State ValueState (CppSrcCode TypeData)
forall a b s. (a -> b) -> State s a -> State s b
onStateValue CppSrcCode Value -> CppSrcCode TypeData
forall {k} (r :: k -> *) (val :: k) (typ :: k).
ValueSym r val typ =>
r val -> r typ
valueType VS (CppSrcCode Value)
v)
arrayDecBase :: VS (CppSrcCode Variable) -> CppSrcCode ScopeData -> MS Doc
arrayDecBase :: SrcState ValueState Variable -> CppSrcCode ScopeData -> MS Doc
arrayDecBase SrcState ValueState Variable
vr CppSrcCode ScopeData
scp = do
vr' <- LensLike'
(Zoomed (StateT ValueState Identity) (CppSrcCode Variable))
MethodState
ValueState
-> SrcState ValueState Variable
-> StateT MethodState Identity (CppSrcCode Variable)
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) (CppSrcCode Variable))
MethodState
ValueState
(ValueState -> Focusing Identity (CppSrcCode Variable) ValueState)
-> MethodState
-> Focusing Identity (CppSrcCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS SrcState ValueState Variable
vr
modify $ useVarName $ variableName vr'
modify $ setVarScope (variableName vr') (scopeData scp)
pure $ renderType (variableType vr') <+> RC.variable vr'
cppReferenceType :: (Monad r, TypeElim r TypeData, UnRepr r TypeData) =>
VS (r TypeData) -> VS (r TypeData)
cppReferenceType :: forall (r :: * -> *).
(Monad r, TypeElim r TypeData, UnRepr r TypeData) =>
VS (r TypeData) -> VS (r TypeData)
cppReferenceType VS (r TypeData)
t = do
t' <- VS (r TypeData)
t
typeFromData (Reference (getCodeType t')) (getTypeString t' P.<> cppDeref') (renderType t' <> cppDeref)
cppName, cppVersion :: String
cppName :: String
cppName = String
"C++"
cppVersion :: String
cppVersion = String
"gcc 10.1"
guard, inc, ifndef, define, defineSuffix, endif, using, namespace, cppPtr,
cppDeref, streamL, streamR, cppLambdaDec, catchAll, cppPi,
ptrAccess' :: Doc
guard :: Doc
guard = String -> Doc
text String
"#"
inc :: Doc
inc = Doc
guard Doc -> Doc -> Doc
<> String -> Doc
text String
"include"
ifndef :: Doc
ifndef = Doc
guard Doc -> Doc -> Doc
<> String -> Doc
text String
"ifndef"
define :: Doc
define = Doc
guard Doc -> Doc -> Doc
<> String -> Doc
text String
"define"
defineSuffix :: Doc
defineSuffix = String -> Doc
text String
"_h"
endif :: Doc
endif = Doc
guard Doc -> Doc -> Doc
<> String -> Doc
text String
"endif"
using :: Doc
using = String -> Doc
text String
"using"
namespace :: Doc
namespace = String -> Doc
text String
"namespace"
cppPtr :: Doc
cppPtr = String -> Doc
text String
"&"
cppDeref :: Doc
cppDeref = String -> Doc
text String
cppDeref'
streamL :: Doc
streamL = String -> Doc
text String
"<<"
streamR :: Doc
streamR = String -> Doc
text String
">>"
cppLambdaDec :: Doc
cppLambdaDec = String -> Doc
text String
"[]"
catchAll :: Doc
catchAll = String -> Doc
text String
"..."
cppPi :: Doc
cppPi = String -> Doc
text String
"M_PI"
ptrAccess' :: Doc
ptrAccess' = String -> Doc
text String
ptrAccess
nmSpc, ptrAccess, cppFor, std, algorithm, cppString, vector, sstream, stringstream,
fstream, iostream, limits, mathh, cassert, cppBool, cppInfile, cppOutfile,
cppIterator, cppOpen, stod, stof, cppIgnore, numLimits, streamsize, max,
endl, cin, cout, cppIndex, cppListAccess, cppListAdd, cppListRemove, cppListAppend,
cppIterBegin, cppIterEnd, cppR, cppW, cppA, cppGetLine, cppClose, cppClear,
cppStr, mathDefines, cppSet, cppIn, cppConst, cppDeref' :: String
nmSpc :: String
nmSpc = String
"::"
ptrAccess :: String
ptrAccess = String
"->"
cppFor :: String
cppFor = String
"for"
std :: String
std = String
"std"
algorithm :: String
algorithm = String
"algorithm"
cppString :: String
cppString = String
"string"
vector :: String
vector = String
"vector"
fstream :: String
fstream = String
"fstream"
iostream :: String
iostream = String
"iostream"
sstream :: String
sstream = String
"sstream"
stringstream :: String
stringstream = String -> String
stdAccess String
"stringstream"
limits :: String
limits = String
"limits"
mathh :: String
mathh = String
"math.h"
cassert :: String
cassert = String
"cassert"
cppBool :: String
cppBool = String
"bool"
cppInfile :: String
cppInfile = String
"ifstream"
cppOutfile :: String
cppOutfile = String
"ofstream"
cppIterator :: String
cppIterator = String
"iterator"
cppOpen :: String
cppOpen = String
"open"
stod :: String
stod = String -> String
stdAccess String
"stod"
stof :: String
stof = String -> String
stdAccess String
"stof"
cppIgnore :: String
cppIgnore = String
"ignore"
numLimits :: String
numLimits = String -> String
stdAccess String
"numeric_limits"
streamsize :: String
streamsize = String -> String
stdAccess String
"streamsize"
max :: String
max = String
"max"
endl :: String
endl = String -> String
stdAccess String
"endl"
cin :: String
cin = String -> String
stdAccess String
"cin"
cout :: String
cout = String -> String
stdAccess String
"cout"
cppIndex :: String
cppIndex= String
"find"
cppListAccess :: String
cppListAccess = String
"at"
cppListAdd :: String
cppListAdd = String
"insert"
cppListRemove :: String
cppListRemove = String
"erase"
cppListAppend :: String
cppListAppend = String
"push_back"
cppIterBegin :: String
cppIterBegin = String
"begin"
cppIterEnd :: String
cppIterEnd = String
"end"
cppR :: String
cppR = String -> String
stdAccess (String
fstream String -> String -> String
`nmSpcAccess` String
"in")
cppW :: String
cppW = String -> String
stdAccess (String
fstream String -> String -> String
`nmSpcAccess` String
"out")
cppA :: String
cppA = String -> String
stdAccess (String
fstream String -> String -> String
`nmSpcAccess` String
"app")
cppGetLine :: String
cppGetLine = String -> String
stdAccess String
"getline"
cppClose :: String
cppClose = String
"close"
cppClear :: String
cppClear = String
"clear"
cppStr :: String
cppStr = String
"str"
mathDefines :: String
mathDefines = String
"_USE_MATH_DEFINES"
cppSet :: String
cppSet = String
"set"
cppIn :: String
cppIn = String
":"
cppConst :: String
cppConst = String
"const"
cppDeref' :: String
cppDeref' = String
"*"
nmSpcAccess :: String -> String -> String
nmSpcAccess :: String -> String -> String
nmSpcAccess String
ns String
e = String
ns String -> String -> String
forall a. Semigroup a => a -> a -> a
P.<> String
nmSpc String -> String -> String
forall a. Semigroup a => a -> a -> a
P.<> String
e
nmSpcAccess' :: Doc -> Doc -> Doc
nmSpcAccess' :: Doc -> Doc -> Doc
nmSpcAccess' Doc
ns Doc
e = Doc
ns Doc -> Doc -> Doc
<> String -> Doc
text String
nmSpc Doc -> Doc -> Doc
<> Doc
e
stdAccess :: String -> String
stdAccess :: String -> String
stdAccess = String -> String -> String
nmSpcAccess String
std
stdAccess' :: Doc -> Doc
stdAccess' :: Doc -> Doc
stdAccess' = Doc -> Doc -> Doc
nmSpcAccess' (String -> Doc
text String
std)
mainDesc, argcDesc, argvDesc, mainReturnDesc :: String
mainDesc :: String
mainDesc = String
"Controls the flow of the program"
argcDesc :: String
argcDesc = String
"Number of command-line arguments"
argvDesc :: String
argvDesc = String
"List of command-line arguments"
mainReturnDesc :: String
mainReturnDesc = String
"exit code"
cppSqrtOp :: (Monad r) => VSOp r
cppSqrtOp :: forall (r :: * -> *). Monad r => VSOp r
cppSqrtOp = String -> VSOp r
forall (r :: * -> *). Monad r => String -> VSOp r
cppUnaryMath String
R.sqrt
cppAbsOp :: (Monad r) => VSOp r
cppAbsOp :: forall (r :: * -> *). Monad r => VSOp r
cppAbsOp = String -> VSOp r
forall (r :: * -> *). Monad r => String -> VSOp r
cppUnaryMath String
R.fabs
cppLogOp :: (Monad r) => VSOp r
cppLogOp :: forall (r :: * -> *). Monad r => VSOp r
cppLogOp = String -> VSOp r
forall (r :: * -> *). Monad r => String -> VSOp r
cppUnaryMath String
R.log10
cppLnOp :: (Monad r) => VSOp r
cppLnOp :: forall (r :: * -> *). Monad r => VSOp r
cppLnOp = String -> VSOp r
forall (r :: * -> *). Monad r => String -> VSOp r
cppUnaryMath String
R.log
cppExpOp :: (Monad r) => VSOp r
cppExpOp :: forall (r :: * -> *). Monad r => VSOp r
cppExpOp = String -> VSOp r
forall (r :: * -> *). Monad r => String -> VSOp r
cppUnaryMath String
R.exp
cppSinOp :: (Monad r) => VSOp r
cppSinOp :: forall (r :: * -> *). Monad r => VSOp r
cppSinOp = String -> VSOp r
forall (r :: * -> *). Monad r => String -> VSOp r
cppUnaryMath String
R.sin
cppCosOp :: (Monad r) => VSOp r
cppCosOp :: forall (r :: * -> *). Monad r => VSOp r
cppCosOp = String -> VSOp r
forall (r :: * -> *). Monad r => String -> VSOp r
cppUnaryMath String
R.cos
cppTanOp :: (Monad r) => VSOp r
cppTanOp :: forall (r :: * -> *). Monad r => VSOp r
cppTanOp = String -> VSOp r
forall (r :: * -> *). Monad r => String -> VSOp r
cppUnaryMath String
R.tan
cppAsinOp :: (Monad r) => VSOp r
cppAsinOp :: forall (r :: * -> *). Monad r => VSOp r
cppAsinOp = String -> VSOp r
forall (r :: * -> *). Monad r => String -> VSOp r
cppUnaryMath String
R.asin
cppAcosOp :: (Monad r) => VSOp r
cppAcosOp :: forall (r :: * -> *). Monad r => VSOp r
cppAcosOp = String -> VSOp r
forall (r :: * -> *). Monad r => String -> VSOp r
cppUnaryMath String
R.acos
cppAtanOp :: (Monad r) => VSOp r
cppAtanOp :: forall (r :: * -> *). Monad r => VSOp r
cppAtanOp = String -> VSOp r
forall (r :: * -> *). Monad r => String -> VSOp r
cppUnaryMath String
R.atan
cppFloorOp :: (Monad r) => VSOp r
cppFloorOp :: forall (r :: * -> *). Monad r => VSOp r
cppFloorOp = String -> VSOp r
forall (r :: * -> *). Monad r => String -> VSOp r
cppUnaryMath String
R.floor
cppCeilOp :: (Monad r) => VSOp r
cppCeilOp :: forall (r :: * -> *). Monad r => VSOp r
cppCeilOp = String -> VSOp r
forall (r :: * -> *). Monad r => String -> VSOp r
cppUnaryMath String
R.ceil
cppUnaryMath :: (Monad r) => String -> VSOp r
cppUnaryMath :: forall (r :: * -> *). Monad r => String -> VSOp r
cppUnaryMath = VS (r OpData) -> VS (r OpData)
forall a. VS a -> VS a
addMathHImport (VS (r OpData) -> VS (r OpData))
-> (String -> VS (r OpData)) -> String -> VS (r OpData)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> VS (r OpData)
forall (r :: * -> *). Monad r => String -> VSOp r
unOpPrec
cppPowerOp :: (Monad r) => VSOp r
cppPowerOp :: forall (r :: * -> *). Monad r => VSOp r
cppPowerOp = String -> VSOp r
forall (r :: * -> *). Monad r => String -> VSOp r
powerPrec String
R.pow
getLineFunc
:: VS (CppSrcCode Value) -> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
getLineFunc :: VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
getLineFunc VS (CppSrcCode Value)
f VS (CppSrcCode Value)
v = String
-> State ValueState (CppSrcCode TypeData)
-> [VS (CppSrcCode Value)]
-> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (binder :: k)
(typ :: k).
ValueExpression r var val binder typ =>
PosCall r val typ
funcApp String
cppGetLine State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
string [VS (CppSrcCode Value)
f, VS (CppSrcCode Value)
v]
getLine3ArgFunc :: VS (CppSrcCode Value) -> VS (CppSrcCode Value) -> Char ->
VS (CppSrcCode Value)
getLine3ArgFunc :: VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> Char -> VS (CppSrcCode Value)
getLine3ArgFunc VS (CppSrcCode Value)
s VS (CppSrcCode Value)
v Char
d = String
-> State ValueState (CppSrcCode TypeData)
-> [VS (CppSrcCode Value)]
-> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (binder :: k)
(typ :: k).
ValueExpression r var val binder typ =>
PosCall r val typ
funcApp String
cppGetLine State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
string [VS (CppSrcCode Value)
s, VS (CppSrcCode Value)
v, Char -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k) (typ :: k).
Literal r val typ =>
Char -> VS (r val)
litChar Char
d]
clearFunc :: VS (CppSrcCode FuncData)
clearFunc :: SrcState ValueState FuncData
clearFunc = String
-> State ValueState (CppSrcCode TypeData)
-> [VS (CppSrcCode Value)]
-> SrcState ValueState FuncData
forall (r :: * -> *) val typ.
OOFunctionSym r val typ =>
String -> VS (r typ) -> [VS (r val)] -> VS (r FuncData)
func String
cppClear State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void []
strFunc
:: VS (CppSrcCode Value) -> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
strFunc :: VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
strFunc VS (CppSrcCode Value)
v VS (CppSrcCode Value)
s = State ValueState (CppSrcCode TypeData)
-> VS (CppSrcCode Value)
-> String
-> [VS (CppSrcCode Value)]
-> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
InternalValueExp r var val typ =>
VS (r typ) -> VS (r val) -> String -> [VS (r val)] -> VS (r val)
objMethodCall State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
string VS (CppSrcCode Value)
v String
cppStr [VS (CppSrcCode Value)
s]
cppIndexFunc
:: VS (CppSrcCode Value) -> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
cppIndexFunc :: VS (CppSrcCode Value)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
cppIndexFunc VS (CppSrcCode Value)
l VS (CppSrcCode Value)
v = String
-> State ValueState (CppSrcCode TypeData)
-> [VS (CppSrcCode Value)]
-> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (binder :: k)
(typ :: k).
ValueExpression r var val binder typ =>
PosCall r val typ
funcApp String
cppIndex State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
int [VS (CppSrcCode Value) -> VS (CppSrcCode Value)
iterBegin VS (CppSrcCode Value)
l, VS (CppSrcCode Value) -> VS (CppSrcCode Value)
iterEnd VS (CppSrcCode Value)
l, VS (CppSrcCode Value)
v]
cppIterBeginFunc :: VS (CppSrcCode TypeData) -> VS (CppSrcCode FuncData)
cppIterBeginFunc :: State ValueState (CppSrcCode TypeData)
-> SrcState ValueState FuncData
cppIterBeginFunc State ValueState (CppSrcCode TypeData)
t = String
-> State ValueState (CppSrcCode TypeData)
-> [VS (CppSrcCode Value)]
-> SrcState ValueState FuncData
forall (r :: * -> *) val typ.
OOFunctionSym r val typ =>
String -> VS (r typ) -> [VS (r val)] -> VS (r FuncData)
func String
cppIterBegin (State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData)
iterator State ValueState (CppSrcCode TypeData)
t) []
cppIterEndFunc :: VS (CppSrcCode TypeData) -> VS (CppSrcCode FuncData)
cppIterEndFunc :: State ValueState (CppSrcCode TypeData)
-> SrcState ValueState FuncData
cppIterEndFunc State ValueState (CppSrcCode TypeData)
t = String
-> State ValueState (CppSrcCode TypeData)
-> [VS (CppSrcCode Value)]
-> SrcState ValueState FuncData
forall (r :: * -> *) val typ.
OOFunctionSym r val typ =>
String -> VS (r typ) -> [VS (r val)] -> VS (r FuncData)
func String
cppIterEnd (State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData)
iterator State ValueState (CppSrcCode TypeData)
t) []
cppListDecDef
::
( DeclStatement r bod stmt var scope val
, RenderStatement r stmt
, StatementElim r stmt
)
=> ([r Value] -> Doc)
-> VS (r var)
-> r scope
-> [VS (r Value)]
-> MS (r stmt)
cppListDecDef :: forall (r :: * -> *) bod stmt var scope val.
(DeclStatement r bod stmt var scope val, RenderStatement r stmt,
StatementElim r stmt) =>
([r Value] -> Doc)
-> VS (r var) -> r scope -> [VS (r Value)] -> MS (r stmt)
cppListDecDef [r Value] -> Doc
f VS (r var)
v r scope
scp [VS (r Value)]
vls = do
vdc <- VS (r var) -> r scope -> MS (r stmt)
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(scope :: k) (val :: k).
DeclStatement r bod stmt var scope val =>
VS (r var) -> r scope -> MS (r stmt)
varDec VS (r var)
v r scope
scp
vs <- zoom lensMStoVS $ sequence vls
mkStmt (RC.statement vdc <> f vs)
cpphtop :: ModData -> Doc
cpphtop :: ModData -> Doc
cpphtop ModData
m = [Doc] -> Doc
vcat [
Doc
ifndef Doc -> Doc -> Doc
<+> String -> Doc
text String
n Doc -> Doc -> Doc
<> Doc
defineSuffix,
Doc
define Doc -> Doc -> Doc
<+> String -> Doc
text String
n Doc -> Doc -> Doc
<> Doc
defineSuffix]
where n :: String
n = ModData -> String
name ModData
m
usingNameSpace :: Label -> Maybe Label -> Doc
usingNameSpace :: String -> Maybe String -> Doc
usingNameSpace String
n (Just String
m) = Doc
using Doc -> Doc -> Doc
<+> String -> Doc
text String
n Doc -> Doc -> Doc
<> Doc
colon Doc -> Doc -> Doc
<> Doc
colon Doc -> Doc -> Doc
<>
String -> Doc
text String
m Doc -> Doc -> Doc
<> Doc
endStatement
usingNameSpace String
n Maybe String
Nothing = Doc
using Doc -> Doc -> Doc
<+> Doc
namespace Doc -> Doc -> Doc
<+> String -> Doc
text String
n Doc -> Doc -> Doc
<> Doc
endStatement
cppInherit :: Maybe Label -> Doc -> Doc
cppInherit :: Maybe String -> Doc -> Doc
cppInherit Maybe String
n Doc
pub = Doc -> (String -> Doc) -> Maybe String -> Doc
forall b a. b -> (a -> b) -> Maybe a -> b
maybe Doc
empty ((Doc
colon Doc -> Doc -> Doc
<+> Doc
pub Doc -> Doc -> Doc
<+>) (Doc -> Doc) -> (String -> Doc) -> String -> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> Doc
text) Maybe String
n
cppBoolType :: (Monad r) => VS (r TypeData)
cppBoolType :: forall (r :: * -> *). Monad r => VS (r TypeData)
cppBoolType = CodeType -> String -> Doc -> VS (r TypeData)
forall (r :: * -> *).
Monad r =>
CodeType -> String -> Doc -> VS (r TypeData)
typeFromData CodeType
Boolean String
cppBool (String -> Doc
text String
cppBool)
cppInfileType :: (Monad r) => VS (r TypeData)
cppInfileType :: forall (r :: * -> *). Monad r => VS (r TypeData)
cppInfileType = do
t <- CodeType -> String -> Doc -> VS (r TypeData)
forall (r :: * -> *).
Monad r =>
CodeType -> String -> Doc -> VS (r TypeData)
typeFromData CodeType
InFile String
cppInfile (String -> Doc
text String
cppInfile)
addFStreamImport t
argvType :: (Monad r) => VS (r TypeData)
argvType :: forall (r :: * -> *). Monad r => VS (r TypeData)
argvType = CodeType -> String -> Doc -> VS (r TypeData)
forall (r :: * -> *).
Monad r =>
CodeType -> String -> Doc -> VS (r TypeData)
typeFromData (CodeType -> CodeType
Array CodeType
String) String
"const char**" (String -> Doc
text String
"const char**")
cppOutfileType :: (Monad r) => VS (r TypeData)
cppOutfileType :: forall (r :: * -> *). Monad r => VS (r TypeData)
cppOutfileType = do
t <- CodeType -> String -> Doc -> VS (r TypeData)
forall (r :: * -> *).
Monad r =>
CodeType -> String -> Doc -> VS (r TypeData)
typeFromData CodeType
OutFile String
cppOutfile (String -> Doc
text String
cppOutfile)
addFStreamImport t
cppIterType :: VS (CppSrcCode TypeData) -> VS (CppSrcCode TypeData)
cppIterType :: State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData)
cppIterType State ValueState (CppSrcCode TypeData)
t' = do
t <- State ValueState (CppSrcCode TypeData)
t'
typeFromData (getCodeType t)
(getTypeString t `nmSpcAccess` cppIterator) (stdAccess' (renderType t)
`nmSpcAccess'` text cppIterator)
cppClassVarAccess :: Doc -> Doc -> Doc
cppClassVarAccess :: Doc -> Doc -> Doc
cppClassVarAccess Doc
c Doc
v = Doc
c Doc -> Doc -> Doc
`nmSpcAccess'` Doc
v
cppFuncType
:: (Monad r, TypeElim r TypeData)
=> [VS (r TypeData)] -> VS (r TypeData) -> VS (r TypeData)
cppFuncType :: forall (r :: * -> *).
(Monad r, TypeElim r TypeData) =>
[VS (r TypeData)] -> VS (r TypeData) -> VS (r TypeData)
cppFuncType [VS (r TypeData)]
ps' VS (r TypeData)
r' = do
ps <- [VS (r TypeData)] -> StateT ValueState Identity [r TypeData]
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
forall (m :: * -> *) a. Monad m => [m a] -> m [a]
sequence [VS (r TypeData)]
ps'
r <- r'
typeFromData (Func (getCodeType <$> ps) (getCodeType r)) "auto" (text "auto")
cppLambda :: [CppSrcCode BinderD] -> CppSrcCode Value -> Doc
cppLambda :: [CppSrcCode BinderD] -> CppSrcCode Value -> Doc
cppLambda [CppSrcCode BinderD]
ps CppSrcCode Value
ex = Doc
cppLambdaDec Doc -> Doc -> Doc
<+> Doc -> Doc
parens (Doc -> [Doc] -> Doc
hicat Doc
listSep' ([Doc] -> Doc) -> [Doc] -> Doc
forall a b. (a -> b) -> a -> b
$ (Doc -> Doc -> Doc) -> [Doc] -> [Doc] -> [Doc]
forall a b c. (a -> b -> c) -> [a] -> [b] -> [c]
zipWith Doc -> Doc -> Doc
(<+>)
(CppSrcCode TypeData -> Doc
forall (r :: * -> *). UnRepr r TypeData => r TypeData -> Doc
renderType (CppSrcCode TypeData -> Doc)
-> (CppSrcCode BinderD -> CppSrcCode TypeData)
-> CppSrcCode BinderD
-> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppSrcCode BinderD -> CppSrcCode TypeData
forall {k} (r :: k -> *) (binder :: k) (typ :: k).
BinderElim r binder typ =>
r binder -> r typ
binderType (CppSrcCode BinderD -> Doc) -> [CppSrcCode BinderD] -> [Doc]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [CppSrcCode BinderD]
ps) (CppSrcCode BinderD -> Doc
forall {k} (r :: k -> *) (binder :: k).
InternalBinderElim r binder =>
r binder -> Doc
RC.binderElim (CppSrcCode BinderD -> Doc) -> [CppSrcCode BinderD] -> [Doc]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [CppSrcCode BinderD]
ps)) Doc -> Doc -> Doc
<+>
Doc
bodyStart Doc -> Doc -> Doc
<> Doc
returnLabel Doc -> Doc -> Doc
<+> CppSrcCode Value -> Doc
forall {k} (r :: k -> *) (val :: k).
ValueElim r val =>
r val -> Doc
RC.value CppSrcCode Value
ex Doc -> Doc -> Doc
<> Doc
endStatement Doc -> Doc -> Doc
<> Doc
bodyEnd
stodFunc :: VS (CppSrcCode Value) -> VS (CppSrcCode Value)
stodFunc :: VS (CppSrcCode Value) -> VS (CppSrcCode Value)
stodFunc VS (CppSrcCode Value)
v = String
-> State ValueState (CppSrcCode TypeData)
-> [VS (CppSrcCode Value)]
-> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (binder :: k)
(typ :: k).
ValueExpression r var val binder typ =>
PosCall r val typ
funcApp String
stod State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
double [VS (CppSrcCode Value)
v]
stofFunc :: VS (CppSrcCode Value) -> VS (CppSrcCode Value)
stofFunc :: VS (CppSrcCode Value) -> VS (CppSrcCode Value)
stofFunc VS (CppSrcCode Value)
v = String
-> State ValueState (CppSrcCode TypeData)
-> [VS (CppSrcCode Value)]
-> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (binder :: k)
(typ :: k).
ValueExpression r var val binder typ =>
PosCall r val typ
funcApp String
stof State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
float [VS (CppSrcCode Value)
v]
ignoreFunc :: Char -> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
ignoreFunc :: Char -> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
ignoreFunc Char
sep VS (CppSrcCode Value)
inFn = State ValueState (CppSrcCode TypeData)
-> VS (CppSrcCode Value)
-> String
-> [VS (CppSrcCode Value)]
-> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
InternalValueExp r var val typ =>
VS (r typ) -> VS (r val) -> String -> [VS (r val)] -> VS (r val)
objMethodCall State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void VS (CppSrcCode Value)
inFn String
cppIgnore [VS (CppSrcCode Value)
maxFunc, Char -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (val :: k) (typ :: k).
Literal r val typ =>
Char -> VS (r val)
litChar Char
sep]
maxFunc :: VS (CppSrcCode Value)
maxFunc :: VS (CppSrcCode Value)
maxFunc = String
-> State ValueState (CppSrcCode TypeData)
-> [VS (CppSrcCode Value)]
-> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (binder :: k)
(typ :: k).
ValueExpression r var val binder typ =>
PosCall r val typ
funcApp ((String
numLimits String -> String -> String
`containing` String
streamsize) String -> String -> String
`nmSpcAccess` String
max) State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
int []
cppCast
:: VS (CppSrcCode TypeData) -> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
cppCast :: State ValueState (CppSrcCode TypeData)
-> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
cppCast = StateT ValueState Identity (VS (CppSrcCode Value))
-> VS (CppSrcCode Value)
forall (m :: * -> *) a. Monad m => m (m a) -> m a
join (StateT ValueState Identity (VS (CppSrcCode Value))
-> VS (CppSrcCode Value))
-> (State ValueState (CppSrcCode TypeData)
-> VS (CppSrcCode Value)
-> StateT ValueState Identity (VS (CppSrcCode Value)))
-> State ValueState (CppSrcCode TypeData)
-> VS (CppSrcCode Value)
-> VS (CppSrcCode Value)
forall c d a b. (c -> d) -> (a -> b -> c) -> a -> b -> d
.: (CppSrcCode TypeData -> CppSrcCode Value -> VS (CppSrcCode Value))
-> State ValueState (CppSrcCode TypeData)
-> VS (CppSrcCode Value)
-> StateT ValueState Identity (VS (CppSrcCode Value))
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues (\CppSrcCode TypeData
t CppSrcCode Value
v -> CodeType
-> CodeType
-> CppSrcCode TypeData
-> CppSrcCode Value
-> VS (CppSrcCode Value)
cppCast' (CppSrcCode TypeData -> CodeType
forall {k} (r :: k -> *) (typ :: k).
TypeElim r typ =>
r typ -> CodeType
getCodeType CppSrcCode TypeData
t) (CppSrcCode TypeData -> CodeType
forall {k} (r :: k -> *) (typ :: k).
TypeElim r typ =>
r typ -> CodeType
getCodeType (CppSrcCode TypeData -> CodeType)
-> CppSrcCode TypeData -> CodeType
forall a b. (a -> b) -> a -> b
$
CppSrcCode Value -> CppSrcCode TypeData
forall {k} (r :: k -> *) (val :: k) (typ :: k).
ValueSym r val typ =>
r val -> r typ
valueType CppSrcCode Value
v) CppSrcCode TypeData
t CppSrcCode Value
v)
where cppCast' :: CodeType
-> CodeType
-> CppSrcCode TypeData
-> CppSrcCode Value
-> VS (CppSrcCode Value)
cppCast' CodeType
Double CodeType
String CppSrcCode TypeData
_ CppSrcCode Value
v = VS (CppSrcCode Value) -> VS (CppSrcCode Value)
stodFunc (CppSrcCode Value -> VS (CppSrcCode Value)
forall a s. a -> State s a
toState CppSrcCode Value
v)
cppCast' CodeType
Float CodeType
String CppSrcCode TypeData
_ CppSrcCode Value
v = VS (CppSrcCode Value) -> VS (CppSrcCode Value)
stofFunc (CppSrcCode Value -> VS (CppSrcCode Value)
forall a s. a -> State s a
toState CppSrcCode Value
v)
cppCast' CodeType
_ CodeType
_ CppSrcCode TypeData
t CppSrcCode Value
v = State ValueState (CppSrcCode TypeData)
-> Doc -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal (CppSrcCode TypeData -> State ValueState (CppSrcCode TypeData)
forall a s. a -> State s a
toState CppSrcCode TypeData
t) (Doc -> Doc -> Doc
R.castObj
(Doc -> Doc
R.cast (CppSrcCode TypeData -> Doc
forall (r :: * -> *). UnRepr r TypeData => r TypeData -> Doc
renderType CppSrcCode TypeData
t)) (CppSrcCode Value -> Doc
forall {k} (r :: k -> *) (val :: k).
ValueElim r val =>
r val -> Doc
RC.value CppSrcCode Value
v))
cppListDecDoc :: (ValueElim r val) => r val -> Doc
cppListDecDoc :: forall {k} (r :: k -> *) (val :: k).
ValueElim r val =>
r val -> Doc
cppListDecDoc r val
n = Doc -> Doc
parens (r val -> Doc
forall {k} (r :: k -> *) (val :: k).
ValueElim r val =>
r val -> Doc
RC.value r val
n)
cppListDecDefDoc :: (ValueElim r val) => [r val] -> Doc
cppListDecDefDoc :: forall {k} (r :: k -> *) (val :: k).
ValueElim r val =>
[r val] -> Doc
cppListDecDefDoc [r val]
vs = Doc -> Doc
braces ([r val] -> Doc
forall {k} (r :: k -> *) (val :: k).
ValueElim r val =>
[r val] -> Doc
valueList [r val]
vs)
cppFuncDecDef
:: VS (CppSrcCode Variable)
-> CppSrcCode ScopeData
-> [VS (CppSrcCode Variable)]
-> MS (CppSrcCode Body)
-> MS (CppSrcCode Statement)
cppFuncDecDef :: SrcState ValueState Variable
-> CppSrcCode ScopeData
-> [SrcState ValueState Variable]
-> SrcState MethodState Doc
-> SrcState MethodState Statement
cppFuncDecDef SrcState ValueState Variable
v CppSrcCode ScopeData
scp [SrcState ValueState Variable]
ps SrcState MethodState Doc
bod = do
vr <- LensLike'
(Zoomed (StateT ValueState Identity) (CppSrcCode Variable))
MethodState
ValueState
-> SrcState ValueState Variable
-> StateT MethodState Identity (CppSrcCode Variable)
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) (CppSrcCode Variable))
MethodState
ValueState
(ValueState -> Focusing Identity (CppSrcCode Variable) ValueState)
-> MethodState
-> Focusing Identity (CppSrcCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS SrcState ValueState Variable
v
modify $ useVarName $ variableName vr
modify $ setVarScope (variableName vr) (scopeData scp)
pms <- mapM (zoom lensMStoVS) ps
b <- bod
mkStmt $ renderType (variableType vr) <+> RC.variable vr <+> equals <+>
cppLambdaDec <+> parens (hicat listSep' $ zipWith (<+>) (renderType .
variableType <$> pms) (RC.variable <$> pms)) <+> bodyStart $$
indent (RC.body b) $$ bodyEnd
cppPrint
:: (RenderStatement r stmt, ValueElim r val)
=> Bool -> VS (r val) -> VS (r val) -> MS (r stmt)
cppPrint :: forall {k} (r :: k -> *) (stmt :: k) (val :: k).
(RenderStatement r stmt, ValueElim r val) =>
Bool -> VS (r val) -> VS (r val) -> MS (r stmt)
cppPrint Bool
newLn VS (r val)
pf VS (r val)
vl = do
e <- LensLike'
(Zoomed (StateT ValueState Identity) Doc) MethodState ValueState
-> StateT ValueState Identity Doc -> MS Doc
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) Doc) MethodState ValueState
(ValueState -> Focusing Identity Doc ValueState)
-> MethodState -> Focusing Identity Doc MethodState
Lens' MethodState ValueState
lensMStoVS StateT ValueState Identity Doc
end
printFn <- zoom lensMStoVS pf
v <- zoom lensMStoVS vl
mkStmt $ RC.value printFn <+> streamL <+> pars v (RC.value v) <+> e
where pars :: r val -> Doc -> Doc
pars r val
v = if (Int -> Bool) -> Maybe Int -> Bool
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
any (Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
< Int
9) (r val -> Maybe Int
forall {k} (r :: k -> *) (val :: k).
ValueElim r val =>
r val -> Maybe Int
valuePrec r val
v) then Doc -> Doc
parens else Doc -> Doc
forall a. a -> a
id
end :: StateT ValueState Identity Doc
end = if Bool
newLn then StateT ValueState Identity Doc -> StateT ValueState Identity Doc
forall a. VS a -> VS a
addIOStreamImport (Doc -> StateT ValueState Identity Doc
forall a. a -> StateT ValueState Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Doc -> StateT ValueState Identity Doc)
-> Doc -> StateT ValueState Identity Doc
forall a b. (a -> b) -> a -> b
$ Doc
streamL Doc -> Doc -> Doc
<+> String -> Doc
text String
endl)
else Doc -> StateT ValueState Identity Doc
forall a. a -> StateT ValueState Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Doc
empty
cppThrowDoc :: (ValueElim r val) => r val -> Doc
cppThrowDoc :: forall {k} (r :: k -> *) (val :: k).
ValueElim r val =>
r val -> Doc
cppThrowDoc r val
errMsg = Doc
throwLabel Doc -> Doc -> Doc
<> Doc -> Doc
parens (r val -> Doc
forall {k} (r :: k -> *) (val :: k).
ValueElim r val =>
r val -> Doc
RC.value r val
errMsg)
cppTryCatch :: (BodyElim r bod) => r bod -> r bod -> Doc
cppTryCatch :: forall {k} (r :: k -> *) (bod :: k).
BodyElim r bod =>
r bod -> r bod -> Doc
cppTryCatch r bod
tb r bod
cb = [Doc] -> Doc
vcat [
Doc
tryLabel Doc -> Doc -> Doc
<+> Doc
lbrace,
Doc -> Doc
indent (Doc -> Doc) -> Doc -> Doc
forall a b. (a -> b) -> a -> b
$ r bod -> Doc
forall {k} (r :: k -> *) (bod :: k). BodyElim r bod => r bod -> Doc
RC.body r bod
tb,
Doc
rbrace Doc -> Doc -> Doc
<+> Doc
catchLabel Doc -> Doc -> Doc
<+> Doc -> Doc
parens Doc
catchAll Doc -> Doc -> Doc
<+> Doc
lbrace,
Doc -> Doc
indent (Doc -> Doc) -> Doc -> Doc
forall a b. (a -> b) -> a -> b
$ r bod -> Doc
forall {k} (r :: k -> *) (bod :: k). BodyElim r bod => r bod -> Doc
RC.body r bod
cb,
Doc
rbrace]
cppAssert :: (ValueElim r val) => r val -> r val -> Doc
cppAssert :: forall {k} (r :: k -> *) (val :: k).
ValueElim r val =>
r val -> r val -> Doc
cppAssert r val
condition r val
errorMessage = [Doc] -> Doc
vcat [
String -> Doc
text String
"assert(" Doc -> Doc -> Doc
<> r val -> Doc
forall {k} (r :: k -> *) (val :: k).
ValueElim r val =>
r val -> Doc
RC.value r val
condition Doc -> Doc -> Doc
<+> String -> Doc
text String
"&&" Doc -> Doc -> Doc
<+> r val -> Doc
forall {k} (r :: k -> *) (val :: k).
ValueElim r val =>
r val -> Doc
RC.value r val
errorMessage Doc -> Doc -> Doc
<> String -> Doc
text String
")" Doc -> Doc -> Doc
<> Doc
semi
]
cppDiscardInput
:: Char -> VS (CppSrcCode Value) -> MS (CppSrcCode Statement)
cppDiscardInput :: Char -> VS (CppSrcCode Value) -> SrcState MethodState Statement
cppDiscardInput Char
sep VS (CppSrcCode Value)
inFn = VS (CppSrcCode Value) -> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (val :: k).
ValueStatement r stmt val =>
VS (r val) -> MS (r stmt)
valStmt (VS (CppSrcCode Value) -> SrcState MethodState Statement)
-> VS (CppSrcCode Value) -> SrcState MethodState Statement
forall a b. (a -> b) -> a -> b
$ Char -> VS (CppSrcCode Value) -> VS (CppSrcCode Value)
ignoreFunc Char
sep VS (CppSrcCode Value)
inFn
cppInput
:: VS (CppSrcCode Variable)
-> VS (CppSrcCode Value)
-> MS (CppSrcCode Statement)
cppInput :: SrcState ValueState Variable
-> VS (CppSrcCode Value) -> SrcState MethodState Statement
cppInput SrcState ValueState Variable
vr VS (CppSrcCode Value)
i = SrcState MethodState Statement -> SrcState MethodState Statement
forall a. MS a -> MS a
addAlgorithmImport (SrcState MethodState Statement -> SrcState MethodState Statement)
-> SrcState MethodState Statement -> SrcState MethodState Statement
forall a b. (a -> b) -> a -> b
$ SrcState MethodState Statement -> SrcState MethodState Statement
forall a. MS a -> MS a
addLimitsImport (SrcState MethodState Statement -> SrcState MethodState Statement)
-> SrcState MethodState Statement -> SrcState MethodState Statement
forall a b. (a -> b) -> a -> b
$ do
v <- LensLike'
(Zoomed (StateT ValueState Identity) (CppSrcCode Variable))
MethodState
ValueState
-> SrcState ValueState Variable
-> StateT MethodState Identity (CppSrcCode Variable)
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) (CppSrcCode Variable))
MethodState
ValueState
(ValueState -> Focusing Identity (CppSrcCode Variable) ValueState)
-> MethodState
-> Focusing Identity (CppSrcCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS SrcState ValueState Variable
vr
inFn <- zoom lensMStoVS i
multi [mkStmt (RC.value inFn <+> streamR <+> RC.variable v),
valStmt $ ignoreFunc '\n' i]
cppOpenFile
:: Label
-> VS (CppSrcCode Variable)
-> VS (CppSrcCode Value)
-> MS (CppSrcCode Statement)
cppOpenFile :: String
-> SrcState ValueState Variable
-> VS (CppSrcCode Value)
-> SrcState MethodState Statement
cppOpenFile String
mode SrcState ValueState Variable
f VS (CppSrcCode Value)
n = VS (CppSrcCode Value) -> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (val :: k).
ValueStatement r stmt val =>
VS (r val) -> MS (r stmt)
valStmt (VS (CppSrcCode Value) -> SrcState MethodState Statement)
-> VS (CppSrcCode Value) -> SrcState MethodState Statement
forall a b. (a -> b) -> a -> b
$ State ValueState (CppSrcCode TypeData)
-> VS (CppSrcCode Value)
-> String
-> [VS (CppSrcCode Value)]
-> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
InternalValueExp r var val typ =>
VS (r typ) -> VS (r val) -> String -> [VS (r val)] -> VS (r val)
objMethodCall State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void (SrcState ValueState Variable -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k).
VariableValue r var val =>
VS (r var) -> VS (r val)
valueOf SrcState ValueState Variable
f) String
cppOpen [VS (CppSrcCode Value)
n,
State ValueState (CppSrcCode TypeData)
-> Doc -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
RenderValue r var val typ =>
VS (r typ) -> Doc -> VS (r val)
mkStateVal State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void (Doc -> VS (CppSrcCode Value)) -> Doc -> VS (CppSrcCode Value)
forall a b. (a -> b) -> a -> b
$ String -> Doc
text String
mode]
cppPointerParamDoc
:: (InternalVarElim r var, UnRepr r TypeData, VariableElim r var TypeData)
=> r var -> Doc
cppPointerParamDoc :: forall (r :: * -> *) var.
(InternalVarElim r var, UnRepr r TypeData,
VariableElim r var TypeData) =>
r var -> Doc
cppPointerParamDoc r var
v = r TypeData -> Doc
forall (r :: * -> *). UnRepr r TypeData => r TypeData -> Doc
renderType (r var -> r TypeData
forall {k} (r :: k -> *) (var :: k) (typ :: k).
VariableElim r var typ =>
r var -> r typ
variableType r var
v) Doc -> Doc -> Doc
<+> Doc
cppPtr Doc -> Doc -> Doc
<> r var -> Doc
forall {k} (r :: k -> *) (var :: k).
InternalVarElim r var =>
r var -> Doc
RC.variable r var
v
cppsMethod :: [Doc] -> Label -> Label -> CppSrcCode TypeData
-> [CppSrcCode ParamData] -> CppSrcCode Body -> Doc
cppsMethod :: [Doc]
-> String
-> String
-> CppSrcCode TypeData
-> [CppSrcCode ParamData]
-> CppSrcCode Doc
-> Doc
cppsMethod [Doc]
is String
n String
c CppSrcCode TypeData
t [CppSrcCode ParamData]
ps CppSrcCode Doc
b = Doc -> Doc -> Doc
emptyIfEmpty (CppSrcCode Doc -> Doc
forall {k} (r :: k -> *) (bod :: k). BodyElim r bod => r bod -> Doc
RC.body CppSrcCode Doc
b Doc -> Doc -> Doc
<> Doc
initList) (Doc -> Doc) -> Doc -> Doc
forall a b. (a -> b) -> a -> b
$
[Doc] -> Doc
vcat [Doc
ttype Doc -> Doc -> Doc
<+> String -> Doc
text (String
c String -> String -> String
`nmSpcAccess` String
n) Doc -> Doc -> Doc
<> Doc -> Doc
parens ([CppSrcCode ParamData] -> Doc
forall {k} (r :: k -> *) (param :: k) (typ :: k).
ParamElim r param typ =>
[r param] -> Doc
parameterList
[CppSrcCode ParamData]
ps) Doc -> Doc -> Doc
<+> Doc -> Doc -> Doc
emptyIfEmpty Doc
initList (Doc
colon Doc -> Doc -> Doc
<+> Doc
initList) Doc -> Doc -> Doc
<+> Doc
bodyStart,
Doc -> Doc
indent (CppSrcCode Doc -> Doc
forall {k} (r :: k -> *) (bod :: k). BodyElim r bod => r bod -> Doc
RC.body CppSrcCode Doc
b),
Doc
bodyEnd]
where ttype :: Doc
ttype | String -> Bool
isDtor String
n = Doc
empty
| Bool
otherwise = CppSrcCode TypeData -> Doc
forall (r :: * -> *). UnRepr r TypeData => r TypeData -> Doc
renderType CppSrcCode TypeData
t
initList :: Doc
initList = Doc -> [Doc] -> Doc
hicat Doc
listSep' [Doc]
is
cppConstructor
:: [MS (CppSrcCode ParamData)]
-> NamedArgs CppSrcCode Variable Value
-> MS (CppSrcCode Body)
-> MS (CppSrcCode MethodData)
cppConstructor :: [SrcState MethodState ParamData]
-> [(SrcState ValueState Variable, VS (CppSrcCode Value))]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData
cppConstructor [SrcState MethodState ParamData]
ps [(SrcState ValueState Variable, VS (CppSrcCode Value))]
is SrcState MethodState Doc
b = StateT MethodState Identity String
getClassName StateT MethodState Identity String
-> (String -> SrcState MethodState MethodData)
-> SrcState MethodState MethodData
forall a b.
StateT MethodState Identity a
-> (a -> StateT MethodState Identity b)
-> StateT MethodState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (\String
n -> StateT MethodState Identity (SrcState MethodState MethodData)
-> SrcState MethodState MethodData
forall (m :: * -> *) a. Monad m => m (m a) -> m a
join (StateT MethodState Identity (SrcState MethodState MethodData)
-> SrcState MethodState MethodData)
-> StateT MethodState Identity (SrcState MethodState MethodData)
-> SrcState MethodState MethodData
forall a b. (a -> b) -> a -> b
$ (\CppSrcCode TypeData
tp [CppSrcCode ParamData]
pms [CppSrcCode Variable]
ivars [CppSrcCode Value]
ivals
CppSrcCode Doc
bod -> if [(SrcState ValueState Variable, VS (CppSrcCode Value))] -> Bool
forall a. [a] -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null [(SrcState ValueState Variable, VS (CppSrcCode Value))]
is then String
-> [SrcState MethodState ParamData]
-> [(SrcState ValueState Variable, VS (CppSrcCode Value))]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData
forall (r :: * -> *) file mod cls stvr mthd attch vis param bod
block stmt var scope val binder typ.
OORenderSym
r
file
mod
cls
stvr
mthd
attch
vis
param
bod
block
stmt
var
scope
val
binder
typ =>
String
-> [MS (r param)]
-> Initializers r var val
-> MS (r bod)
-> MS (r mthd)
CP.constructor String
n [SrcState MethodState ParamData]
ps [(SrcState ValueState Variable, VS (CppSrcCode Value))]
is SrcState MethodState Doc
b else (MethodState -> MethodState) -> StateT MethodState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (VisibilityTag -> MethodState -> MethodState
setVisibility VisibilityTag
Pub) StateT MethodState Identity ()
-> SrcState MethodState MethodData
-> SrcState MethodState MethodData
forall a b.
StateT MethodState Identity a
-> StateT MethodState Identity b -> StateT MethodState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>>
CppSrcCode MethodData -> SrcState MethodState MethodData
forall a s. a -> State s a
toState (MethodData -> CppSrcCode MethodData
forall (r :: * -> *) a. Monad r => a -> r a
toCode (MethodData -> CppSrcCode MethodData)
-> MethodData -> CppSrcCode MethodData
forall a b. (a -> b) -> a -> b
$ VisibilityTag -> Doc -> MethodData
mthd VisibilityTag
Pub ([Doc]
-> String
-> String
-> CppSrcCode TypeData
-> [CppSrcCode ParamData]
-> CppSrcCode Doc
-> Doc
cppsMethod ((CppSrcCode Variable -> CppSrcCode Value -> Doc)
-> [CppSrcCode Variable] -> [CppSrcCode Value] -> [Doc]
forall a b c. (a -> b -> c) -> [a] -> [b] -> [c]
zipWith (\CppSrcCode Variable
ivar CppSrcCode Value
ival -> CppSrcCode Variable -> Doc
forall {k} (r :: k -> *) (var :: k).
InternalVarElim r var =>
r var -> Doc
RC.variable
CppSrcCode Variable
ivar Doc -> Doc -> Doc
<> Doc -> Doc
parens (CppSrcCode Value -> Doc
forall {k} (r :: k -> *) (val :: k).
ValueElim r val =>
r val -> Doc
RC.value CppSrcCode Value
ival)) [CppSrcCode Variable]
ivars [CppSrcCode Value]
ivals) String
n String
n CppSrcCode TypeData
tp [CppSrcCode ParamData]
pms CppSrcCode Doc
bod))) (CppSrcCode TypeData
-> [CppSrcCode ParamData]
-> [CppSrcCode Variable]
-> [CppSrcCode Value]
-> CppSrcCode Doc
-> SrcState MethodState MethodData)
-> SrcState MethodState TypeData
-> StateT
MethodState
Identity
([CppSrcCode ParamData]
-> [CppSrcCode Variable]
-> [CppSrcCode Value]
-> CppSrcCode Doc
-> SrcState MethodState MethodData)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> String -> SrcState MethodState TypeData
forall {k} (r :: k -> *) (typ :: k).
OOMethodTypeSym r typ =>
String -> MS (r typ)
construct
String
n StateT
MethodState
Identity
([CppSrcCode ParamData]
-> [CppSrcCode Variable]
-> [CppSrcCode Value]
-> CppSrcCode Doc
-> SrcState MethodState MethodData)
-> StateT MethodState Identity [CppSrcCode ParamData]
-> StateT
MethodState
Identity
([CppSrcCode Variable]
-> [CppSrcCode Value]
-> CppSrcCode Doc
-> SrcState MethodState MethodData)
forall a b.
StateT MethodState Identity (a -> b)
-> StateT MethodState Identity a -> StateT MethodState Identity b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> [SrcState MethodState ParamData]
-> StateT MethodState Identity [CppSrcCode ParamData]
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
forall (m :: * -> *) a. Monad m => [m a] -> m [a]
sequence [SrcState MethodState ParamData]
ps StateT
MethodState
Identity
([CppSrcCode Variable]
-> [CppSrcCode Value]
-> CppSrcCode Doc
-> SrcState MethodState MethodData)
-> StateT MethodState Identity [CppSrcCode Variable]
-> StateT
MethodState
Identity
([CppSrcCode Value]
-> CppSrcCode Doc -> SrcState MethodState MethodData)
forall a b.
StateT MethodState Identity (a -> b)
-> StateT MethodState Identity a -> StateT MethodState Identity b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ((SrcState ValueState Variable, VS (CppSrcCode Value))
-> StateT MethodState Identity (CppSrcCode Variable))
-> [(SrcState ValueState Variable, VS (CppSrcCode Value))]
-> StateT MethodState Identity [CppSrcCode Variable]
forall (t :: * -> *) (m :: * -> *) a b.
(Traversable t, Monad m) =>
(a -> m b) -> t a -> m (t b)
forall (m :: * -> *) a b. Monad m => (a -> m b) -> [a] -> m [b]
mapM (LensLike'
(Zoomed (StateT ValueState Identity) (CppSrcCode Variable))
MethodState
ValueState
-> SrcState ValueState Variable
-> StateT MethodState Identity (CppSrcCode Variable)
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) (CppSrcCode Variable))
MethodState
ValueState
(ValueState -> Focusing Identity (CppSrcCode Variable) ValueState)
-> MethodState
-> Focusing Identity (CppSrcCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS (SrcState ValueState Variable
-> StateT MethodState Identity (CppSrcCode Variable))
-> ((SrcState ValueState Variable, VS (CppSrcCode Value))
-> SrcState ValueState Variable)
-> (SrcState ValueState Variable, VS (CppSrcCode Value))
-> StateT MethodState Identity (CppSrcCode Variable)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (SrcState ValueState Variable, VS (CppSrcCode Value))
-> SrcState ValueState Variable
forall a b. (a, b) -> a
fst) [(SrcState ValueState Variable, VS (CppSrcCode Value))]
is StateT
MethodState
Identity
([CppSrcCode Value]
-> CppSrcCode Doc -> SrcState MethodState MethodData)
-> StateT MethodState Identity [CppSrcCode Value]
-> StateT
MethodState
Identity
(CppSrcCode Doc -> SrcState MethodState MethodData)
forall a b.
StateT MethodState Identity (a -> b)
-> StateT MethodState Identity a -> StateT MethodState Identity b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ((SrcState ValueState Variable, VS (CppSrcCode Value))
-> StateT MethodState Identity (CppSrcCode Value))
-> [(SrcState ValueState Variable, VS (CppSrcCode Value))]
-> StateT MethodState Identity [CppSrcCode Value]
forall (t :: * -> *) (m :: * -> *) a b.
(Traversable t, Monad m) =>
(a -> m b) -> t a -> m (t b)
forall (m :: * -> *) a b. Monad m => (a -> m b) -> [a] -> m [b]
mapM (LensLike'
(Zoomed (StateT ValueState Identity) (CppSrcCode Value))
MethodState
ValueState
-> VS (CppSrcCode Value)
-> StateT MethodState Identity (CppSrcCode Value)
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) (CppSrcCode Value))
MethodState
ValueState
(ValueState -> Focusing Identity (CppSrcCode Value) ValueState)
-> MethodState -> Focusing Identity (CppSrcCode Value) MethodState
Lens' MethodState ValueState
lensMStoVS (VS (CppSrcCode Value)
-> StateT MethodState Identity (CppSrcCode Value))
-> ((SrcState ValueState Variable, VS (CppSrcCode Value))
-> VS (CppSrcCode Value))
-> (SrcState ValueState Variable, VS (CppSrcCode Value))
-> StateT MethodState Identity (CppSrcCode Value)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (SrcState ValueState Variable, VS (CppSrcCode Value))
-> VS (CppSrcCode Value)
forall a b. (a, b) -> b
snd) [(SrcState ValueState Variable, VS (CppSrcCode Value))]
is StateT
MethodState
Identity
(CppSrcCode Doc -> SrcState MethodState MethodData)
-> SrcState MethodState Doc
-> StateT MethodState Identity (SrcState MethodState MethodData)
forall a b.
StateT MethodState Identity (a -> b)
-> StateT MethodState Identity a -> StateT MethodState Identity b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> SrcState MethodState Doc
b)
cppsFunction :: Label -> CppSrcCode TypeData ->
[CppSrcCode ParamData] -> CppSrcCode Body -> Doc
cppsFunction :: String
-> CppSrcCode TypeData
-> [CppSrcCode ParamData]
-> CppSrcCode Doc
-> Doc
cppsFunction String
n CppSrcCode TypeData
t [CppSrcCode ParamData]
ps CppSrcCode Doc
b = [Doc] -> Doc
vcat [
CppSrcCode TypeData -> Doc
forall (r :: * -> *). UnRepr r TypeData => r TypeData -> Doc
renderType CppSrcCode TypeData
t Doc -> Doc -> Doc
<+> String -> Doc
text String
n Doc -> Doc -> Doc
<> Doc -> Doc
parens ([CppSrcCode ParamData] -> Doc
forall {k} (r :: k -> *) (param :: k) (typ :: k).
ParamElim r param typ =>
[r param] -> Doc
parameterList [CppSrcCode ParamData]
ps) Doc -> Doc -> Doc
<+> Doc
bodyStart,
Doc -> Doc
indent (CppSrcCode Doc -> Doc
forall {k} (r :: k -> *) (bod :: k). BodyElim r bod => r bod -> Doc
RC.body CppSrcCode Doc
b),
Doc
bodyEnd]
cppsIntFunc
:: (CppSrcCode TypeData -> [CppSrcCode ParamData] -> CppSrcCode Body -> Doc)
-> CppSrcCode (Doc, VisibilityTag)
-> MS (CppSrcCode TypeData)
-> [MS (CppSrcCode ParamData)]
-> MS (CppSrcCode Body)
-> MS (CppSrcCode MethodData)
cppsIntFunc :: (CppSrcCode TypeData
-> [CppSrcCode ParamData] -> CppSrcCode Doc -> Doc)
-> CppSrcCode (Doc, VisibilityTag)
-> SrcState MethodState TypeData
-> [SrcState MethodState ParamData]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData
cppsIntFunc CppSrcCode TypeData
-> [CppSrcCode ParamData] -> CppSrcCode Doc -> Doc
f CppSrcCode (Doc, VisibilityTag)
s SrcState MethodState TypeData
t [SrcState MethodState ParamData]
ps SrcState MethodState Doc
b = do
(MethodState -> MethodState) -> StateT MethodState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (VisibilityTag -> MethodState -> MethodState
setVisibility ((Doc, VisibilityTag) -> VisibilityTag
forall a b. (a, b) -> b
snd ((Doc, VisibilityTag) -> VisibilityTag)
-> (Doc, VisibilityTag) -> VisibilityTag
forall a b. (a -> b) -> a -> b
$ CppSrcCode (Doc, VisibilityTag) -> (Doc, VisibilityTag)
forall a. CppSrcCode a -> a
unCPPSC CppSrcCode (Doc, VisibilityTag)
s))
tp <- SrcState MethodState TypeData
t
pms <- sequence ps
toCode . mthd (snd $ unCPPSC s) . f tp pms <$> b
cpphIntFunc
:: Label
-> CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode attch
-> MS (CppHdrCode TypeData)
-> [MS (CppHdrCode ParamData)]
-> MS (CppHdrCode Body)
-> MS (CppHdrCode MethodData)
cpphIntFunc :: forall attch.
String
-> CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode attch
-> HdrState MethodState TypeData
-> [HdrState MethodState ParamData]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData
cpphIntFunc String
n CppHdrCode (Doc, VisibilityTag)
s CppHdrCode attch
_ HdrState MethodState TypeData
t [HdrState MethodState ParamData]
ps HdrState MethodState Doc
_ = do
(MethodState -> MethodState) -> StateT MethodState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (VisibilityTag -> MethodState -> MethodState
setVisibility ((Doc, VisibilityTag) -> VisibilityTag
forall a b. (a, b) -> b
snd ((Doc, VisibilityTag) -> VisibilityTag)
-> (Doc, VisibilityTag) -> VisibilityTag
forall a b. (a -> b) -> a -> b
$ CppHdrCode (Doc, VisibilityTag) -> (Doc, VisibilityTag)
forall a. CppHdrCode a -> a
unCPPHC CppHdrCode (Doc, VisibilityTag)
s))
tp <- HdrState MethodState TypeData
t
pms <- sequence ps
pure $ toCode $ mthd (snd $ unCPPHC s) $ cpphFunc n tp pms
cpphFunc
:: (ParamElim r param typ)
=> Label -> CppHdrCode TypeData -> [r param] -> Doc
cpphFunc :: forall {k} (r :: k -> *) (param :: k) (typ :: k).
ParamElim r param typ =>
String -> CppHdrCode TypeData -> [r param] -> Doc
cpphFunc String
n CppHdrCode TypeData
t [r param]
ps = (if String -> Bool
isDtor String
n then Doc
empty else CppHdrCode TypeData -> Doc
forall (r :: * -> *). UnRepr r TypeData => r TypeData -> Doc
renderType CppHdrCode TypeData
t) Doc -> Doc -> Doc
<+>
String -> Doc
text String
n Doc -> Doc -> Doc
<> Doc -> Doc
parens ([r param] -> Doc
forall {k} (r :: k -> *) (param :: k) (typ :: k).
ParamElim r param typ =>
[r param] -> Doc
parameterList [r param]
ps) Doc -> Doc -> Doc
<> Doc
endStatement
cpphMethod :: Label -> CppHdrCode TypeData ->
CppHdrCode AttachmentData -> [CppHdrCode ParamData] -> Doc
cpphMethod :: String
-> CppHdrCode TypeData
-> CppHdrCode AttachmentData
-> [CppHdrCode ParamData]
-> Doc
cpphMethod String
n CppHdrCode TypeData
t CppHdrCode AttachmentData
a [CppHdrCode ParamData]
ps = let attchDoc :: Doc
attchDoc = CppHdrCode AttachmentData -> Doc
forall {k} (r :: k -> *) (attch :: k).
PermElim r attch =>
r attch -> Doc
RC.perm CppHdrCode AttachmentData
a
in Doc
attchDoc Doc -> Doc -> Doc
<+> (if String -> Bool
isDtor String
n then Doc
empty else CppHdrCode TypeData -> Doc
forall (r :: * -> *). UnRepr r TypeData => r TypeData -> Doc
renderType CppHdrCode TypeData
t) Doc -> Doc -> Doc
<+> String -> Doc
text String
n
Doc -> Doc -> Doc
<> Doc -> Doc
parens ([CppHdrCode ParamData] -> Doc
forall {k} (r :: k -> *) (param :: k) (typ :: k).
ParamElim r param typ =>
[r param] -> Doc
parameterList [CppHdrCode ParamData]
ps) Doc -> Doc -> Doc
<> Doc
endStatement
cppCommentedFunc
:: (BlockCommentElim r, Monad r)
=> FileType -> MS (r Doc) -> MS (r MethodData) -> MS (r MethodData)
FileType
ft MS (r Doc)
cmt MS (r MethodData)
fn = do
f <- MS (r MethodData)
fn
mn <- getCurrMainFunc
scp <- getVisibility
cmnt <- cmt
let cf = r MethodData -> MS (r MethodData)
forall a. a -> StateT MethodState Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ((MethodData -> MethodData) -> r MethodData -> r MethodData
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
onCodeValue (VisibilityTag -> Doc -> MethodData
mthd VisibilityTag
scp (Doc -> MethodData)
-> (MethodData -> Doc) -> MethodData -> MethodData
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Doc -> Doc -> Doc
R.commentedItem
(r Doc -> Doc
forall (r :: * -> *). BlockCommentElim r => r Doc -> Doc
RC.blockComment' r Doc
cmnt) (Doc -> Doc) -> (MethodData -> Doc) -> MethodData -> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. MethodData -> Doc
mthdDoc) r MethodData
f)
ret FileType
Source = if Bool
mn then MS (r MethodData)
cf else r MethodData -> MS (r MethodData)
forall a. a -> StateT MethodState Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure r MethodData
f
ret FileType
Header = if Bool
mn then r MethodData -> MS (r MethodData)
forall a. a -> StateT MethodState Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure r MethodData
f else MS (r MethodData)
cf
ret FileType
Combined = String -> MS (r MethodData)
forall a. HasCallStack => String -> a
error String
"Combined passed to cppCommentedFunc"
ret ft
cppsStateVarDef
:: Doc
-> CppSrcCode (Doc, VisibilityTag)
-> CppSrcCode AttachmentData
-> VS (CppSrcCode Variable)
-> VS (CppSrcCode Value)
-> CSStateVar CppSrcCode StateVarData
cppsStateVarDef :: Doc
-> CppSrcCode (Doc, VisibilityTag)
-> CppSrcCode AttachmentData
-> SrcState ValueState Variable
-> VS (CppSrcCode Value)
-> SrcState ClassState StateVarData
cppsStateVarDef Doc
cns CppSrcCode (Doc, VisibilityTag)
s CppSrcCode AttachmentData
p SrcState ValueState Variable
vr' VS (CppSrcCode Value)
vl' = do
vr <- LensLike'
(Zoomed (StateT ValueState Identity) (CppSrcCode Variable))
ClassState
ValueState
-> SrcState ValueState Variable
-> StateT ClassState Identity (CppSrcCode Variable)
forall c.
LensLike'
(Zoomed (StateT ValueState Identity) c) ClassState ValueState
-> StateT ValueState Identity c -> StateT ClassState 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) (CppSrcCode Variable))
ClassState
ValueState
(ValueState -> Focusing Identity (CppSrcCode Variable) ValueState)
-> ClassState -> Focusing Identity (CppSrcCode Variable) ClassState
Lens' ClassState ValueState
lensCStoVS SrcState ValueState Variable
vr'
vl <- zoom lensCStoVS vl'
n <- zoom lensCStoMS getClassName
pure $ on2CodeValues svd (onCodeValue snd s)
(toCode $ onAttachment (binding p) (cns <+> renderType (variableType vr) <+>
text n `nmSpcAccess'` RC.variable vr <+> equals <+> RC.value vl <>
endStatement) empty)
cppForEach
:: Doc
-> Doc
-> Doc
-> Doc
-> VS (CppSrcCode Variable)
-> VS (CppSrcCode Value)
-> MS (CppSrcCode Body)
-> MS (CppSrcCode Statement)
cppForEach :: Doc
-> Doc
-> Doc
-> Doc
-> SrcState ValueState Variable
-> VS (CppSrcCode Value)
-> SrcState MethodState Doc
-> SrcState MethodState Statement
cppForEach Doc
bStart Doc
bEnd Doc
forEachLabel Doc
inLbl SrcState ValueState Variable
e' VS (CppSrcCode Value)
v' SrcState MethodState Doc
b' = do
e <- LensLike'
(Zoomed (StateT ValueState Identity) (CppSrcCode Variable))
MethodState
ValueState
-> SrcState ValueState Variable
-> StateT MethodState Identity (CppSrcCode Variable)
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) (CppSrcCode Variable))
MethodState
ValueState
(ValueState -> Focusing Identity (CppSrcCode Variable) ValueState)
-> MethodState
-> Focusing Identity (CppSrcCode Variable) MethodState
Lens' MethodState ValueState
lensMStoVS SrcState ValueState Variable
e'
v <- zoom lensMStoVS v'
b <- b'
mkStmtNoEnd $ vcat [
forEachLabel <+> parens ((text cppConst <+> renderType (variableType e) <+> text "&") <> RC.variable e <+>
inLbl <+> RC.value v) <+> bStart,
indent $ RC.body b,
bEnd]
cppLitSet
:: (RenderValue r var val typ, ValueElim r val)
=> (VS (r typ) -> VS (r typ)) -> VS (r typ) -> [VS (r val)] -> VS (r val)
cppLitSet :: forall {k} (r :: k -> *) (var :: k) (val :: k) (typ :: k).
(RenderValue r var val typ, ValueElim r val) =>
(VS (r typ) -> VS (r typ))
-> VS (r typ) -> [VS (r val)] -> VS (r val)
cppLitSet VS (r typ) -> VS (r typ)
f VS (r typ)
t' [VS (r val)]
es' = do
es <- [VS (r val)] -> StateT ValueState Identity [r val]
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
forall (m :: * -> *) a. Monad m => [m a] -> m [a]
sequence [VS (r val)]
es'
lt <- f t'
mkVal lt ( braces (valueList es))
cpphStateVarDef
:: Doc
-> CppHdrCode AttachmentData
-> VS (CppHdrCode Variable)
-> VS (CppHdrCode Value) -> CS Doc
cpphStateVarDef :: Doc
-> CppHdrCode AttachmentData
-> HdrState ValueState Variable
-> HdrState ValueState Value
-> CS Doc
cpphStateVarDef Doc
s CppHdrCode AttachmentData
p HdrState ValueState Variable
vr HdrState ValueState Value
vl = (CppHdrCode Statement -> Doc)
-> StateT ClassState Identity (CppHdrCode Statement) -> CS Doc
forall a b s. (a -> b) -> State s a -> State s b
onStateValue (Doc -> Doc -> Doc -> Doc
R.stateVar Doc
s (CppHdrCode AttachmentData -> Doc
forall {k} (r :: k -> *) (attch :: k).
PermElim r attch =>
r attch -> Doc
RC.perm CppHdrCode AttachmentData
p) (Doc -> Doc)
-> (CppHdrCode Statement -> Doc) -> CppHdrCode Statement -> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
.
CppHdrCode Statement -> Doc
forall {k} (r :: k -> *) (stmt :: k).
StatementElim r stmt =>
r stmt -> Doc
RC.statement) (LensLike'
(Zoomed (StateT MethodState Identity) (CppHdrCode Statement))
ClassState
MethodState
-> HdrState MethodState Statement
-> StateT ClassState Identity (CppHdrCode Statement)
forall c.
LensLike'
(Zoomed (StateT MethodState Identity) c) ClassState MethodState
-> StateT MethodState Identity c -> StateT ClassState 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 MethodState Identity) (CppHdrCode Statement))
ClassState
MethodState
(MethodState
-> Focusing Identity (CppHdrCode Statement) MethodState)
-> ClassState
-> Focusing Identity (CppHdrCode Statement) ClassState
Lens' ClassState MethodState
lensCStoMS (HdrState MethodState Statement
-> StateT ClassState Identity (CppHdrCode Statement))
-> HdrState MethodState Statement
-> StateT ClassState Identity (CppHdrCode Statement)
forall a b. (a -> b) -> a -> b
$ HdrState MethodState Statement -> HdrState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k).
RenderStatement r stmt =>
MS (r stmt) -> MS (r stmt)
stmt (HdrState MethodState Statement -> HdrState MethodState Statement)
-> HdrState MethodState Statement -> HdrState MethodState Statement
forall a b. (a -> b) -> a -> b
$ AttachmentTag
-> HdrState MethodState Statement
-> HdrState MethodState Statement
-> HdrState MethodState Statement
forall a. AttachmentTag -> a -> a -> a
onAttachment (CppHdrCode AttachmentData -> AttachmentTag
forall {k} (r :: k -> *) (attch :: k).
PermElim r attch =>
r attch -> AttachmentTag
binding CppHdrCode AttachmentData
p)
(HdrState ValueState Variable
-> CppHdrCode ScopeData -> HdrState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(scope :: k) (val :: k).
DeclStatement r bod stmt var scope val =>
VS (r var) -> r scope -> MS (r stmt)
varDec HdrState ValueState Variable
vr CppHdrCode ScopeData
forall {k} (r :: k -> *) (scope :: k). ScopeSym r scope => r scope
local) (HdrState ValueState Variable
-> CppHdrCode ScopeData
-> HdrState ValueState Value
-> HdrState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(scope :: k) (val :: k).
DeclStatement r bod stmt var scope val =>
VS (r var) -> r scope -> VS (r val) -> MS (r stmt)
varDecDef HdrState ValueState Variable
vr CppHdrCode ScopeData
forall {k} (r :: k -> *) (scope :: k). ScopeSym r scope => r scope
local HdrState ValueState Value
vl))
cpphVarsFuncsList :: VisibilityTag -> [CppHdrCode StateVarData] ->
[CppHdrCode MethodData] -> Doc
cpphVarsFuncsList :: VisibilityTag
-> [CppHdrCode StateVarData] -> [CppHdrCode MethodData] -> Doc
cpphVarsFuncsList VisibilityTag
st [CppHdrCode StateVarData]
vs [CppHdrCode MethodData]
fs =
let visVs :: [Doc]
visVs = [CppHdrCode StateVarData -> Doc
forall {k} (r :: k -> *) (stvr :: k).
StateVarElim r stvr =>
r stvr -> Doc
RC.stateVar CppHdrCode StateVarData
v | CppHdrCode StateVarData
v <- [CppHdrCode StateVarData]
vs, StateVarData -> VisibilityTag
getStVarScp (CppHdrCode StateVarData -> StateVarData
forall a. CppHdrCode a -> a
unCPPHC CppHdrCode StateVarData
v) VisibilityTag -> VisibilityTag -> Bool
forall a. Eq a => a -> a -> Bool
== VisibilityTag
st]
visFs :: [Doc]
visFs = [CppHdrCode MethodData -> Doc
forall {k} (r :: k -> *) (mthd :: k).
MethodElim r mthd =>
r mthd -> Doc
RC.method CppHdrCode MethodData
f | CppHdrCode MethodData
f <- [CppHdrCode MethodData]
fs, MethodData -> VisibilityTag
getMthdScp (CppHdrCode MethodData -> MethodData
forall a. CppHdrCode a -> a
unCPPHC CppHdrCode MethodData
f) VisibilityTag -> VisibilityTag -> Bool
forall a. Eq a => a -> a -> Bool
== VisibilityTag
st]
in [Doc] -> Doc
vcat ([Doc] -> Doc) -> [Doc] -> Doc
forall a b. (a -> b) -> a -> b
$ [Doc]
visVs [Doc] -> [Doc] -> [Doc]
forall a. Semigroup a => a -> a -> a
P.<> ((if [Doc] -> Bool
forall a. [a] -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null [Doc]
visVs then Doc
empty else Doc
blank) Doc -> [Doc] -> [Doc]
forall a. a -> [a] -> [a]
: [Doc]
visFs)
cppsClass :: [CppSrcCode StateVarData] ->
[CppSrcCode MethodData] -> CppSrcCode Class
cppsClass :: [CppSrcCode StateVarData]
-> [CppSrcCode MethodData] -> CppSrcCode Doc
cppsClass [CppSrcCode StateVarData]
vs [CppSrcCode MethodData]
fs = Doc -> CppSrcCode Doc
forall (r :: * -> *) a. Monad r => a -> r a
toCode (Doc -> CppSrcCode Doc) -> Doc -> CppSrcCode Doc
forall a b. (a -> b) -> a -> b
$ [Doc] -> Doc
vibcat ([Doc] -> Doc) -> [Doc] -> Doc
forall a b. (a -> b) -> a -> b
$ [Doc] -> Doc
vcat [Doc]
vars Doc -> [Doc] -> [Doc]
forall a. a -> [a] -> [a]
: [Doc]
funcs
where vars :: [Doc]
vars = CppSrcCode StateVarData -> Doc
forall {k} (r :: k -> *) (stvr :: k).
StateVarElim r stvr =>
r stvr -> Doc
RC.stateVar (CppSrcCode StateVarData -> Doc)
-> [CppSrcCode StateVarData] -> [Doc]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [CppSrcCode StateVarData]
vs
funcs :: [Doc]
funcs = CppSrcCode MethodData -> Doc
forall {k} (r :: k -> *) (mthd :: k).
MethodElim r mthd =>
r mthd -> Doc
RC.method (CppSrcCode MethodData -> Doc) -> [CppSrcCode MethodData] -> [Doc]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [CppSrcCode MethodData]
fs
cpphClass :: Label -> CppHdrCode ParentSpec ->
[CppHdrCode StateVarData] -> [CppHdrCode MethodData] ->
CppHdrCode (Doc, VisibilityTag) -> CppHdrCode (Doc, VisibilityTag) ->
CppHdrCode Class
cpphClass :: String
-> CppHdrCode Doc
-> [CppHdrCode StateVarData]
-> [CppHdrCode MethodData]
-> CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode Doc
cpphClass String
n CppHdrCode Doc
ps [CppHdrCode StateVarData]
vars [CppHdrCode MethodData]
funcs CppHdrCode (Doc, VisibilityTag)
pub CppHdrCode (Doc, VisibilityTag)
priv = let
pubs :: Doc
pubs = VisibilityTag
-> [CppHdrCode StateVarData] -> [CppHdrCode MethodData] -> Doc
cpphVarsFuncsList VisibilityTag
Pub [CppHdrCode StateVarData]
vars [CppHdrCode MethodData]
funcs
privs :: Doc
privs = VisibilityTag
-> [CppHdrCode StateVarData] -> [CppHdrCode MethodData] -> Doc
cpphVarsFuncsList VisibilityTag
Priv [CppHdrCode StateVarData]
vars [CppHdrCode MethodData]
funcs
ifEmptyPubs :: Doc -> Doc
ifEmptyPubs = Doc -> Doc -> Doc
emptyIfEmpty Doc
pubs
ifEmptyPrivs :: Doc -> Doc
ifEmptyPrivs = Doc -> Doc -> Doc
emptyIfEmpty Doc
privs
indLi :: [Doc]
indLi = [Doc -> Doc
ifEmptyPubs (CppHdrCode (Doc, VisibilityTag) -> Doc
forall {k} (r :: k -> *) (vis :: k).
VisibilityElim r vis =>
r vis -> Doc
RC.visibility CppHdrCode (Doc, VisibilityTag)
pub Doc -> Doc -> Doc
<> Doc
colon), Doc -> Doc
ifEmptyPubs (Doc -> Doc
indent Doc
pubs),
Doc -> Doc
ifEmptyPubs (Doc -> Doc
ifEmptyPrivs Doc
blank),
Doc -> Doc
ifEmptyPrivs (CppHdrCode (Doc, VisibilityTag) -> Doc
forall {k} (r :: k -> *) (vis :: k).
VisibilityElim r vis =>
r vis -> Doc
RC.visibility CppHdrCode (Doc, VisibilityTag)
priv Doc -> Doc -> Doc
<> Doc
colon), Doc -> Doc
ifEmptyPrivs (Doc -> Doc
indent Doc
privs)]
in (Doc -> Doc) -> CppHdrCode Doc -> CppHdrCode Doc
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
onCodeValue (\Doc
p -> [Doc] -> Doc
vcat [
Doc
classDec Doc -> Doc -> Doc
<+> String -> Doc
text String
n Doc -> Doc -> Doc
<+> Doc
p Doc -> Doc -> Doc
<+> Doc
bodyStart,
[Doc] -> Doc
indentList [Doc]
indLi,
Doc
bodyEnd Doc -> Doc -> Doc
<> Doc
endStatement]) CppHdrCode Doc
ps
cppInOutCall
:: (Label -> VS (CppSrcCode TypeData) -> [VS (CppSrcCode Value)] -> VS (CppSrcCode Value))
-> Label
-> [VS (CppSrcCode Value)]
-> [VS (CppSrcCode Variable)]
-> [VS (CppSrcCode Variable)]
-> MS (CppSrcCode Statement)
cppInOutCall :: (String
-> State ValueState (CppSrcCode TypeData)
-> [VS (CppSrcCode Value)]
-> VS (CppSrcCode Value))
-> InOutCall CppSrcCode Statement Variable Value
cppInOutCall String
-> State ValueState (CppSrcCode TypeData)
-> [VS (CppSrcCode Value)]
-> VS (CppSrcCode Value)
f String
n [VS (CppSrcCode Value)]
ins [SrcState ValueState Variable
out] [] = SrcState ValueState Variable
-> VS (CppSrcCode Value) -> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (var :: k) (val :: k).
AssignStatement r stmt var val =>
VS (r var) -> VS (r val) -> MS (r stmt)
assign SrcState ValueState Variable
out (VS (CppSrcCode Value) -> SrcState MethodState Statement)
-> VS (CppSrcCode Value) -> SrcState MethodState Statement
forall a b. (a -> b) -> a -> b
$ String
-> State ValueState (CppSrcCode TypeData)
-> [VS (CppSrcCode Value)]
-> VS (CppSrcCode Value)
f String
n ((CppSrcCode Variable -> CppSrcCode TypeData)
-> SrcState ValueState Variable
-> State ValueState (CppSrcCode TypeData)
forall a b s. (a -> b) -> State s a -> State s b
onStateValue CppSrcCode Variable -> CppSrcCode TypeData
forall {k} (r :: k -> *) (var :: k) (typ :: k).
VariableElim r var typ =>
r var -> r typ
variableType SrcState ValueState Variable
out)
[VS (CppSrcCode Value)]
ins
cppInOutCall String
-> State ValueState (CppSrcCode TypeData)
-> [VS (CppSrcCode Value)]
-> VS (CppSrcCode Value)
f String
n [VS (CppSrcCode Value)]
ins [] [SrcState ValueState Variable
out] = SrcState ValueState Variable
-> VS (CppSrcCode Value) -> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (var :: k) (val :: k).
AssignStatement r stmt var val =>
VS (r var) -> VS (r val) -> MS (r stmt)
assign SrcState ValueState Variable
out (VS (CppSrcCode Value) -> SrcState MethodState Statement)
-> VS (CppSrcCode Value) -> SrcState MethodState Statement
forall a b. (a -> b) -> a -> b
$ String
-> State ValueState (CppSrcCode TypeData)
-> [VS (CppSrcCode Value)]
-> VS (CppSrcCode Value)
f String
n ((CppSrcCode Variable -> CppSrcCode TypeData)
-> SrcState ValueState Variable
-> State ValueState (CppSrcCode TypeData)
forall a b s. (a -> b) -> State s a -> State s b
onStateValue CppSrcCode Variable -> CppSrcCode TypeData
forall {k} (r :: k -> *) (var :: k) (typ :: k).
VariableElim r var typ =>
r var -> r typ
variableType SrcState ValueState Variable
out)
(SrcState ValueState Variable -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k).
VariableValue r var val =>
VS (r var) -> VS (r val)
valueOf SrcState ValueState Variable
out VS (CppSrcCode Value)
-> [VS (CppSrcCode Value)] -> [VS (CppSrcCode Value)]
forall a. a -> [a] -> [a]
: [VS (CppSrcCode Value)]
ins)
cppInOutCall String
-> State ValueState (CppSrcCode TypeData)
-> [VS (CppSrcCode Value)]
-> VS (CppSrcCode Value)
f String
n [VS (CppSrcCode Value)]
ins [SrcState ValueState Variable]
outs [SrcState ValueState Variable]
both = VS (CppSrcCode Value) -> SrcState MethodState Statement
forall {k} (r :: k -> *) (stmt :: k) (val :: k).
ValueStatement r stmt val =>
VS (r val) -> MS (r stmt)
valStmt (VS (CppSrcCode Value) -> SrcState MethodState Statement)
-> VS (CppSrcCode Value) -> SrcState MethodState Statement
forall a b. (a -> b) -> a -> b
$ String
-> State ValueState (CppSrcCode TypeData)
-> [VS (CppSrcCode Value)]
-> VS (CppSrcCode Value)
f String
n State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void ((SrcState ValueState Variable -> VS (CppSrcCode Value))
-> [SrcState ValueState Variable] -> [VS (CppSrcCode Value)]
forall a b. (a -> b) -> [a] -> [b]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap SrcState ValueState Variable -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k).
VariableValue r var val =>
VS (r var) -> VS (r val)
valueOf [SrcState ValueState Variable]
both [VS (CppSrcCode Value)]
-> [VS (CppSrcCode Value)] -> [VS (CppSrcCode Value)]
forall a. Semigroup a => a -> a -> a
P.<> [VS (CppSrcCode Value)]
ins
[VS (CppSrcCode Value)]
-> [VS (CppSrcCode Value)] -> [VS (CppSrcCode Value)]
forall a. Semigroup a => a -> a -> a
P.<> (SrcState ValueState Variable -> VS (CppSrcCode Value))
-> [SrcState ValueState Variable] -> [VS (CppSrcCode Value)]
forall a b. (a -> b) -> [a] -> [b]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap SrcState ValueState Variable -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k).
VariableValue r var val =>
VS (r var) -> VS (r val)
valueOf [SrcState ValueState Variable]
outs)
cppsInOut
:: (VS (CppSrcCode TypeData) -> [MS (CppSrcCode ParamData)] -> MS (CppSrcCode Body) -> MS (CppSrcCode mthd))
-> [VS (CppSrcCode Variable)]
-> [VS (CppSrcCode Variable)]
-> [VS (CppSrcCode Variable)]
-> MS (CppSrcCode Body)
-> MS (CppSrcCode mthd)
cppsInOut :: forall mthd.
(State ValueState (CppSrcCode TypeData)
-> [SrcState MethodState ParamData]
-> SrcState MethodState Doc
-> MS (CppSrcCode mthd))
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> SrcState MethodState Doc
-> MS (CppSrcCode mthd)
cppsInOut State ValueState (CppSrcCode TypeData)
-> [SrcState MethodState ParamData]
-> SrcState MethodState Doc
-> MS (CppSrcCode mthd)
f [SrcState ValueState Variable]
ins [SrcState ValueState Variable
v] [] SrcState MethodState Doc
b = State ValueState (CppSrcCode TypeData)
-> [SrcState MethodState ParamData]
-> SrcState MethodState Doc
-> MS (CppSrcCode mthd)
f ((CppSrcCode Variable -> CppSrcCode TypeData)
-> SrcState ValueState Variable
-> State ValueState (CppSrcCode TypeData)
forall a b s. (a -> b) -> State s a -> State s b
onStateValue CppSrcCode Variable -> CppSrcCode TypeData
forall {k} (r :: k -> *) (var :: k) (typ :: k).
VariableElim r var typ =>
r var -> r typ
variableType SrcState ValueState Variable
v)
([SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> [SrcState MethodState ParamData]
forall {k} (r :: k -> *) (param :: k) (var :: k) (typ :: k).
(ParameterSym r param var, TypeElim r typ,
VariableElim r var typ) =>
[VS (r var)] -> [VS (r var)] -> [VS (r var)] -> [MS (r param)]
cppInOutParams [SrcState ValueState Variable]
ins [SrcState ValueState Variable
v] []) ((CppSrcCode Statement
-> CppSrcCode Doc -> CppSrcCode Statement -> CppSrcCode Doc)
-> SrcState MethodState Statement
-> SrcState MethodState Doc
-> SrcState MethodState Statement
-> SrcState MethodState Doc
forall a b c d s.
(a -> b -> c -> d)
-> State s a -> State s b -> State s c -> State s d
on3StateValues ((Statement -> Doc -> Statement -> Doc)
-> CppSrcCode Statement
-> CppSrcCode Doc
-> CppSrcCode Statement
-> CppSrcCode Doc
forall (r :: * -> *) a b c d.
Applicative r =>
(a -> b -> c -> d) -> r a -> r b -> r c -> r d
on3CodeValues Statement -> Doc -> Statement -> Doc
surroundBody)
(SrcState ValueState Variable
-> CppSrcCode ScopeData -> SrcState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(scope :: k) (val :: k).
DeclStatement r bod stmt var scope val =>
VS (r var) -> r scope -> MS (r stmt)
varDec SrcState ValueState Variable
v CppSrcCode ScopeData
forall {k} (r :: k -> *) (scope :: k). ScopeSym r scope => r scope
local) SrcState MethodState Doc
b (VS (CppSrcCode Value) -> SrcState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(val :: k).
ControlStatement r bod stmt var val =>
VS (r val) -> MS (r stmt)
returnStmt (VS (CppSrcCode Value) -> SrcState MethodState Statement)
-> VS (CppSrcCode Value) -> SrcState MethodState Statement
forall a b. (a -> b) -> a -> b
$ SrcState ValueState Variable -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k).
VariableValue r var val =>
VS (r var) -> VS (r val)
valueOf SrcState ValueState Variable
v))
cppsInOut State ValueState (CppSrcCode TypeData)
-> [SrcState MethodState ParamData]
-> SrcState MethodState Doc
-> MS (CppSrcCode mthd)
f [SrcState ValueState Variable]
ins [] [SrcState ValueState Variable
v] SrcState MethodState Doc
b = State ValueState (CppSrcCode TypeData)
-> [SrcState MethodState ParamData]
-> SrcState MethodState Doc
-> MS (CppSrcCode mthd)
f ((CppSrcCode Variable -> CppSrcCode TypeData)
-> SrcState ValueState Variable
-> State ValueState (CppSrcCode TypeData)
forall a b s. (a -> b) -> State s a -> State s b
onStateValue CppSrcCode Variable -> CppSrcCode TypeData
forall {k} (r :: k -> *) (var :: k) (typ :: k).
VariableElim r var typ =>
r var -> r typ
variableType SrcState ValueState Variable
v)
([SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> [SrcState MethodState ParamData]
forall {k} (r :: k -> *) (param :: k) (var :: k) (typ :: k).
(ParameterSym r param var, TypeElim r typ,
VariableElim r var typ) =>
[VS (r var)] -> [VS (r var)] -> [VS (r var)] -> [MS (r param)]
cppInOutParams [SrcState ValueState Variable]
ins [] [SrcState ValueState Variable
v]) ((CppSrcCode Doc -> CppSrcCode Statement -> CppSrcCode Doc)
-> SrcState MethodState Doc
-> SrcState MethodState Statement
-> SrcState MethodState Doc
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues ((Doc -> Statement -> Doc)
-> CppSrcCode Doc -> CppSrcCode Statement -> CppSrcCode Doc
forall (r :: * -> *) a b c.
Applicative r =>
(a -> b -> c) -> r a -> r b -> r c
on2CodeValues Doc -> Statement -> Doc
appendToBody) SrcState MethodState Doc
b
(VS (CppSrcCode Value) -> SrcState MethodState Statement
forall {k} (r :: k -> *) (bod :: k) (stmt :: k) (var :: k)
(val :: k).
ControlStatement r bod stmt var val =>
VS (r val) -> MS (r stmt)
returnStmt (VS (CppSrcCode Value) -> SrcState MethodState Statement)
-> VS (CppSrcCode Value) -> SrcState MethodState Statement
forall a b. (a -> b) -> a -> b
$ SrcState ValueState Variable -> VS (CppSrcCode Value)
forall {k} (r :: k -> *) (var :: k) (val :: k).
VariableValue r var val =>
VS (r var) -> VS (r val)
valueOf SrcState ValueState Variable
v))
cppsInOut State ValueState (CppSrcCode TypeData)
-> [SrcState MethodState ParamData]
-> SrcState MethodState Doc
-> MS (CppSrcCode mthd)
f [SrcState ValueState Variable]
ins [SrcState ValueState Variable]
outs [SrcState ValueState Variable]
both SrcState MethodState Doc
b = State ValueState (CppSrcCode TypeData)
-> [SrcState MethodState ParamData]
-> SrcState MethodState Doc
-> MS (CppSrcCode mthd)
f State ValueState (CppSrcCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void ([SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> [SrcState MethodState ParamData]
forall {k} (r :: k -> *) (param :: k) (var :: k) (typ :: k).
(ParameterSym r param var, TypeElim r typ,
VariableElim r var typ) =>
[VS (r var)] -> [VS (r var)] -> [VS (r var)] -> [MS (r param)]
cppInOutParams [SrcState ValueState Variable]
ins [SrcState ValueState Variable]
outs [SrcState ValueState Variable]
both) SrcState MethodState Doc
b
cpphInOut
:: (VS (CppHdrCode TypeData) -> [MS (CppHdrCode ParamData)] -> MS (CppHdrCode Body) -> MS (CppHdrCode mthd))
-> [VS (CppHdrCode Variable)]
-> [VS (CppHdrCode Variable)]
-> [VS (CppHdrCode Variable)]
-> MS (CppHdrCode Body)
-> MS (CppHdrCode mthd)
cpphInOut :: forall mthd.
(State ValueState (CppHdrCode TypeData)
-> [HdrState MethodState ParamData]
-> HdrState MethodState Doc
-> MS (CppHdrCode mthd))
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> HdrState MethodState Doc
-> MS (CppHdrCode mthd)
cpphInOut State ValueState (CppHdrCode TypeData)
-> [HdrState MethodState ParamData]
-> HdrState MethodState Doc
-> MS (CppHdrCode mthd)
f [HdrState ValueState Variable]
ins [HdrState ValueState Variable
v] [] HdrState MethodState Doc
b = State ValueState (CppHdrCode TypeData)
-> [HdrState MethodState ParamData]
-> HdrState MethodState Doc
-> MS (CppHdrCode mthd)
f ((CppHdrCode Variable -> CppHdrCode TypeData)
-> HdrState ValueState Variable
-> State ValueState (CppHdrCode TypeData)
forall a b s. (a -> b) -> State s a -> State s b
onStateValue CppHdrCode Variable -> CppHdrCode TypeData
forall {k} (r :: k -> *) (var :: k) (typ :: k).
VariableElim r var typ =>
r var -> r typ
variableType HdrState ValueState Variable
v)
([HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> [HdrState MethodState ParamData]
forall {k} (r :: k -> *) (param :: k) (var :: k) (typ :: k).
(ParameterSym r param var, TypeElim r typ,
VariableElim r var typ) =>
[VS (r var)] -> [VS (r var)] -> [VS (r var)] -> [MS (r param)]
cppInOutParams [HdrState ValueState Variable]
ins [HdrState ValueState Variable
v] []) HdrState MethodState Doc
b
cpphInOut State ValueState (CppHdrCode TypeData)
-> [HdrState MethodState ParamData]
-> HdrState MethodState Doc
-> MS (CppHdrCode mthd)
f [HdrState ValueState Variable]
ins [] [HdrState ValueState Variable
v] HdrState MethodState Doc
b = State ValueState (CppHdrCode TypeData)
-> [HdrState MethodState ParamData]
-> HdrState MethodState Doc
-> MS (CppHdrCode mthd)
f ((CppHdrCode Variable -> CppHdrCode TypeData)
-> HdrState ValueState Variable
-> State ValueState (CppHdrCode TypeData)
forall a b s. (a -> b) -> State s a -> State s b
onStateValue CppHdrCode Variable -> CppHdrCode TypeData
forall {k} (r :: k -> *) (var :: k) (typ :: k).
VariableElim r var typ =>
r var -> r typ
variableType HdrState ValueState Variable
v)
([HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> [HdrState MethodState ParamData]
forall {k} (r :: k -> *) (param :: k) (var :: k) (typ :: k).
(ParameterSym r param var, TypeElim r typ,
VariableElim r var typ) =>
[VS (r var)] -> [VS (r var)] -> [VS (r var)] -> [MS (r param)]
cppInOutParams [HdrState ValueState Variable]
ins [] [HdrState ValueState Variable
v]) HdrState MethodState Doc
b
cpphInOut State ValueState (CppHdrCode TypeData)
-> [HdrState MethodState ParamData]
-> HdrState MethodState Doc
-> MS (CppHdrCode mthd)
f [HdrState ValueState Variable]
ins [HdrState ValueState Variable]
outs [HdrState ValueState Variable]
both HdrState MethodState Doc
b = State ValueState (CppHdrCode TypeData)
-> [HdrState MethodState ParamData]
-> HdrState MethodState Doc
-> MS (CppHdrCode mthd)
f State ValueState (CppHdrCode TypeData)
forall {k} (r :: k -> *) (typ :: k). TypeSym r typ => VS (r typ)
void ([HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> [HdrState MethodState ParamData]
forall {k} (r :: k -> *) (param :: k) (var :: k) (typ :: k).
(ParameterSym r param var, TypeElim r typ,
VariableElim r var typ) =>
[VS (r var)] -> [VS (r var)] -> [VS (r var)] -> [MS (r param)]
cppInOutParams [HdrState ValueState Variable]
ins [HdrState ValueState Variable]
outs [HdrState ValueState Variable]
both) HdrState MethodState Doc
b
cppInOutParams
:: (ParameterSym r param var, TypeElim r typ, VariableElim r var typ)
=> [VS (r var)]
-> [VS (r var)]
-> [VS (r var)]
-> [MS (r param)]
cppInOutParams :: forall {k} (r :: k -> *) (param :: k) (var :: k) (typ :: k).
(ParameterSym r param var, TypeElim r typ,
VariableElim r var typ) =>
[VS (r var)] -> [VS (r var)] -> [VS (r var)] -> [MS (r param)]
cppInOutParams [VS (r var)]
ins [VS (r var)
_] [] = VS (r var) -> MS (r param)
forall {k} (r :: k -> *) (param :: k) (var :: k) (typ :: k).
(ParameterSym r param var, TypeElim r typ,
VariableElim r var typ) =>
VS (r var) -> MS (r param)
getParam (VS (r var) -> MS (r param)) -> [VS (r var)] -> [MS (r param)]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [VS (r var)]
ins
cppInOutParams [VS (r var)]
ins [] [VS (r var)
v] = VS (r var) -> MS (r param)
forall {k} (r :: k -> *) (param :: k) (var :: k) (typ :: k).
(ParameterSym r param var, TypeElim r typ,
VariableElim r var typ) =>
VS (r var) -> MS (r param)
getParam (VS (r var) -> MS (r param)) -> [VS (r var)] -> [MS (r param)]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> VS (r var)
v VS (r var) -> [VS (r var)] -> [VS (r var)]
forall a. a -> [a] -> [a]
: [VS (r var)]
ins
cppInOutParams [VS (r var)]
ins [VS (r var)]
outs [VS (r var)]
both = (VS (r var) -> MS (r param)) -> [VS (r var)] -> [MS (r param)]
forall a b. (a -> b) -> [a] -> [b]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap VS (r var) -> MS (r param)
forall {k} (r :: k -> *) (param :: k) (var :: k).
ParameterSym r param var =>
VS (r var) -> MS (r param)
pointerParam [VS (r var)]
both [MS (r param)] -> [MS (r param)] -> [MS (r param)]
forall a. Semigroup a => a -> a -> a
P.<> (VS (r var) -> MS (r param)) -> [VS (r var)] -> [MS (r param)]
forall a b. (a -> b) -> [a] -> [b]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap VS (r var) -> MS (r param)
forall {k} (r :: k -> *) (param :: k) (var :: k) (typ :: k).
(ParameterSym r param var, TypeElim r typ,
VariableElim r var typ) =>
VS (r var) -> MS (r param)
getParam [VS (r var)]
ins [MS (r param)] -> [MS (r param)] -> [MS (r param)]
forall a. Semigroup a => a -> a -> a
P.<>
(VS (r var) -> MS (r param)) -> [VS (r var)] -> [MS (r param)]
forall a b. (a -> b) -> [a] -> [b]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap VS (r var) -> MS (r param)
forall {k} (r :: k -> *) (param :: k) (var :: k).
ParameterSym r param var =>
VS (r var) -> MS (r param)
pointerParam [VS (r var)]
outs