{-# LANGUAGE TypeFamilies, Rank2Types #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE PostfixOperators #-}
{-# LANGUAGE InstanceSigs #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE FlexibleContexts #-}
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(..), SharedProg, SharedStatement,
Label, Body, Variable, SVariable, Value, SValue, 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(..), Set(..), InternalList(..),
StatementSym(..), AssignStatement(..), DeclStatement(..), IOStatement(..),
StringStatement(..), FunctionSym, FuncAppStatement(..), BinderSym(..),
CommentStatement(..), ControlStatement(..), ScopeSym(..), ParameterSym(..),
MethodSym(..), convScope, BinderElim (..), (&=))
import Drasil.GOOL.InterfaceGOOL (CSStateVar, OOProg, OOStatement, Class,
ProgramSym(..), FileSym(..), ModuleSym(..), ClassSym(..), OOTypeSym(..),
OOVariableSym(..), SelfSym(..), AttachmentSym(..), StateVarSym(..), OOValueSym,
OOVariableValue, 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, MSMthdType, 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)
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 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 :: ClassName
cppHdrExt = ClassName
"hpp"
cppSrcExt :: ClassName
cppSrcExt = ClassName
"cpp"
data CppCode x y a = CPPC {forall (x :: * -> *) (y :: * -> *) a. CppCode x y a -> x a
src :: x a, forall (x :: * -> *) (y :: * -> *) a. CppCode x y a -> y a
hdr :: y a}
instance Pair CppCode where
pfst :: forall (x :: * -> *) (y :: * -> *) a. CppCode x y a -> x a
pfst (CPPC x a
xa y a
_) = x a
xa
psnd :: forall (x :: * -> *) (y :: * -> *) a. CppCode x y a -> y a
psnd (CPPC x b
_ y b
yb) = y b
yb
pair :: forall (x :: * -> *) a (y :: * -> *). x a -> y a -> CppCode x y a
pair = x a -> y a -> CppCode x y a
forall (x :: * -> *) (y :: * -> *) a. 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) => SharedProg (p CppSrcCode CppHdrCode)
(Doc, VisibilityTag) (Doc, Terminator) MethodData
instance (Pair p) => SharedStatement (p CppSrcCode CppHdrCode) (Doc, Terminator)
instance (Pair p) => OOStatement (p CppSrcCode CppHdrCode) (Doc, Terminator)
instance (Pair p) => OOProg (p CppSrcCode CppHdrCode)
(Doc, VisibilityTag) (Doc, Terminator) MethodData StateVarData AttachmentData ProgData
instance (Pair p) => ProgramSym (p CppSrcCode CppHdrCode)
(Doc, VisibilityTag) (Doc, Terminator) MethodData StateVarData AttachmentData ProgData where
prog :: ClassName
-> ClassName
-> [FS (p CppSrcCode CppHdrCode File)]
-> GSProgram (p CppSrcCode CppHdrCode) ProgData
prog ClassName
n ClassName
st [FS (p CppSrcCode CppHdrCode File)]
mods = do
[p CppSrcCode CppHdrCode File]
m <- (FS (p CppSrcCode CppHdrCode File)
-> StateT GOOLState Identity (p CppSrcCode CppHdrCode File))
-> [FS (p CppSrcCode CppHdrCode File)]
-> StateT GOOLState Identity [p CppSrcCode CppHdrCode File]
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 File))
GOOLState
FileState
-> FS (p CppSrcCode CppHdrCode File)
-> StateT GOOLState Identity (p CppSrcCode CppHdrCode File)
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 File))
GOOLState
FileState
(FileState
-> Focusing Identity (p CppSrcCode CppHdrCode File) FileState)
-> GOOLState
-> Focusing Identity (p CppSrcCode CppHdrCode File) GOOLState
Lens' GOOLState FileState
lensGStoFS) [FS (p CppSrcCode CppHdrCode File)]
mods
let fm :: [CppSrcCode File]
fm = (p CppSrcCode CppHdrCode File -> CppSrcCode File)
-> [p CppSrcCode CppHdrCode File] -> [CppSrcCode File]
forall a b. (a -> b) -> [a] -> [b]
map p CppSrcCode CppHdrCode File -> CppSrcCode File
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst [p CppSrcCode CppHdrCode File]
m
sm :: [CppSrcCode File]
sm = (p CppSrcCode CppHdrCode File -> CppSrcCode File)
-> [p CppSrcCode CppHdrCode File] -> [CppSrcCode File]
forall a b. (a -> b) -> [a] -> [b]
map (CppHdrCode File -> CppSrcCode File
forall a. CppHdrCode a -> CppSrcCode a
hdrToSrc (CppHdrCode File -> CppSrcCode File)
-> (p CppSrcCode CppHdrCode File -> CppHdrCode File)
-> p CppSrcCode CppHdrCode File
-> CppSrcCode File
forall b c a. (b -> c) -> (a -> b) -> a -> c
. p CppSrcCode CppHdrCode File -> CppHdrCode File
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd) [p CppSrcCode CppHdrCode File]
m
CppSrcCode ProgData
p1 <- ClassName
-> ClassName
-> [FS (CppSrcCode File)]
-> GSProgram CppSrcCode ProgData
forall (r :: * -> *) vis smt md svr att prg.
ProgramSym r vis smt md svr att prg =>
ClassName -> ClassName -> [FS (r File)] -> GSProgram r prg
prog ClassName
n ClassName
st ([FS (CppSrcCode File)] -> GSProgram CppSrcCode ProgData)
-> [FS (CppSrcCode File)] -> GSProgram CppSrcCode ProgData
forall a b. (a -> b) -> a -> b
$ (CppSrcCode File -> FS (CppSrcCode File))
-> [CppSrcCode File] -> [FS (CppSrcCode File)]
forall a b. (a -> b) -> [a] -> [b]
map CppSrcCode File -> FS (CppSrcCode File)
forall a. a -> StateT FileState Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure [CppSrcCode File]
sm [FS (CppSrcCode File)]
-> [FS (CppSrcCode File)] -> [FS (CppSrcCode File)]
forall a. [a] -> [a] -> [a]
++ (CppSrcCode File -> FS (CppSrcCode File))
-> [CppSrcCode File] -> [FS (CppSrcCode File)]
forall a b. (a -> b) -> [a] -> [b]
map CppSrcCode File -> FS (CppSrcCode File)
forall a. a -> StateT FileState Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure [CppSrcCode File]
fm
(GOOLState -> GOOLState) -> StateT GOOLState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify GOOLState -> GOOLState
revFiles
p CppSrcCode CppHdrCode ProgData
-> GSProgram (p CppSrcCode CppHdrCode) ProgData
forall a. a -> StateT GOOLState Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (p CppSrcCode CppHdrCode ProgData
-> GSProgram (p CppSrcCode CppHdrCode) ProgData)
-> p CppSrcCode CppHdrCode ProgData
-> GSProgram (p CppSrcCode CppHdrCode) ProgData
forall a b. (a -> b) -> a -> b
$ CppSrcCode ProgData
-> CppHdrCode ProgData -> p CppSrcCode CppHdrCode ProgData
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair CppSrcCode ProgData
p1 (ProgData -> CppHdrCode ProgData
forall (r :: * -> *) a. Monad r => a -> r a
toCode ProgData
emptyProg)
instance (Pair p) => CommonRenderSym (p CppSrcCode CppHdrCode)
(Doc, VisibilityTag) (Doc, Terminator) MethodData
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 (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode contents
c
instance (Pair p) => FileSym (p CppSrcCode CppHdrCode)
(Doc, VisibilityTag) (Doc, Terminator) MethodData StateVarData AttachmentData where
fileDoc :: FS (p CppSrcCode CppHdrCode Module)
-> FS (p CppSrcCode CppHdrCode File)
fileDoc = (SrcState FileState Module -> FS (CppSrcCode File))
-> (HdrState FileState Module -> HdrState FileState File)
-> FS (p CppSrcCode CppHdrCode Module)
-> FS (p CppSrcCode CppHdrCode File)
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 Module -> FS (CppSrcCode File)
forall (r :: * -> *) vis smt md svr att.
FileSym r vis smt md svr att =>
FS (r Module) -> FS (r File)
fileDoc HdrState FileState Module -> HdrState FileState File
forall (r :: * -> *) vis smt md svr att.
FileSym r vis smt md svr att =>
FS (r Module) -> FS (r File)
fileDoc
docMod :: ClassName
-> ClassName
-> [ClassName]
-> ClassName
-> FS (p CppSrcCode CppHdrCode File)
-> FS (p CppSrcCode CppHdrCode File)
docMod ClassName
d ClassName
wm [ClassName]
a ClassName
dt = (FS (CppSrcCode File) -> FS (CppSrcCode File))
-> (HdrState FileState File -> HdrState FileState File)
-> FS (p CppSrcCode CppHdrCode File)
-> FS (p CppSrcCode CppHdrCode File)
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 (ClassName
-> ClassName
-> [ClassName]
-> ClassName
-> FS (CppSrcCode File)
-> FS (CppSrcCode File)
forall (r :: * -> *) vis smt md svr att.
FileSym r vis smt md svr att =>
ClassName
-> ClassName
-> [ClassName]
-> ClassName
-> FS (r File)
-> FS (r File)
docMod ClassName
d ClassName
wm [ClassName]
a ClassName
dt) (ClassName
-> ClassName
-> [ClassName]
-> ClassName
-> HdrState FileState File
-> HdrState FileState File
forall (r :: * -> *) vis smt md svr att.
FileSym r vis smt md svr att =>
ClassName
-> ClassName
-> [ClassName]
-> ClassName
-> FS (r File)
-> FS (r File)
docMod ClassName
d ClassName
wm [ClassName]
a ClassName
dt)
instance (Pair p) => RenderFile (p CppSrcCode CppHdrCode) where
top :: p CppSrcCode CppHdrCode Module -> p CppSrcCode CppHdrCode Doc
top p CppSrcCode CppHdrCode Module
m = CppSrcCode Doc -> CppHdrCode Doc -> p CppSrcCode CppHdrCode Doc
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair (CppSrcCode Module -> CppSrcCode Doc
forall (r :: * -> *). RenderFile r => r Module -> r Doc
top (CppSrcCode Module -> CppSrcCode Doc)
-> CppSrcCode Module -> CppSrcCode Doc
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode Module -> CppSrcCode Module
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode Module
m) (CppHdrCode Module -> CppHdrCode Doc
forall (r :: * -> *). RenderFile r => r Module -> r Doc
top (CppHdrCode Module -> CppHdrCode Doc)
-> CppHdrCode Module -> CppHdrCode Doc
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode Module -> CppHdrCode Module
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd p CppSrcCode CppHdrCode Module
m)
bottom :: p CppSrcCode CppHdrCode Doc
bottom = CppSrcCode Doc -> CppHdrCode Doc -> p CppSrcCode CppHdrCode Doc
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair CppSrcCode Doc
forall (r :: * -> *). RenderFile r => r Doc
bottom CppHdrCode Doc
forall (r :: * -> *). RenderFile r => r Doc
bottom
commentedMod :: FS (p CppSrcCode CppHdrCode File)
-> FS (p CppSrcCode CppHdrCode Doc)
-> FS (p CppSrcCode CppHdrCode File)
commentedMod = (FS (CppSrcCode File)
-> SrcState FileState Doc -> FS (CppSrcCode File))
-> (HdrState FileState File
-> HdrState FileState Doc -> HdrState FileState File)
-> FS (p CppSrcCode CppHdrCode File)
-> FS (p CppSrcCode CppHdrCode Doc)
-> FS (p CppSrcCode CppHdrCode File)
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 File)
-> SrcState FileState Doc -> FS (CppSrcCode File)
forall (r :: * -> *).
RenderFile r =>
FS (r File) -> FS (r Doc) -> FS (r File)
commentedMod HdrState FileState File
-> HdrState FileState Doc -> HdrState FileState File
forall (r :: * -> *).
RenderFile r =>
FS (r File) -> FS (r Doc) -> FS (r File)
commentedMod
fileFromData :: ClassName
-> FS (p CppSrcCode CppHdrCode Module)
-> FS (p CppSrcCode CppHdrCode File)
fileFromData ClassName
fp = (SrcState FileState Module -> FS (CppSrcCode File))
-> (HdrState FileState Module -> HdrState FileState File)
-> FS (p CppSrcCode CppHdrCode Module)
-> FS (p CppSrcCode CppHdrCode File)
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 (ClassName -> SrcState FileState Module -> FS (CppSrcCode File)
forall (r :: * -> *).
RenderFile r =>
ClassName -> FS (r Module) -> FS (r File)
fileFromData ClassName
fp) (ClassName -> HdrState FileState Module -> HdrState FileState File
forall (r :: * -> *).
RenderFile r =>
ClassName -> FS (r Module) -> FS (r File)
fileFromData ClassName
fp)
instance (Pair p) => ImportSym (p CppSrcCode CppHdrCode) where
langImport :: ClassName -> p CppSrcCode CppHdrCode Doc
langImport ClassName
n = CppSrcCode Doc -> CppHdrCode Doc -> p CppSrcCode CppHdrCode Doc
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair (ClassName -> CppSrcCode Doc
forall (r :: * -> *). ImportSym r => ClassName -> r Doc
langImport ClassName
n) (ClassName -> CppHdrCode Doc
forall (r :: * -> *). ImportSym r => ClassName -> r Doc
langImport ClassName
n)
modImport :: ClassName -> p CppSrcCode CppHdrCode Doc
modImport ClassName
n = CppSrcCode Doc -> CppHdrCode Doc -> p CppSrcCode CppHdrCode Doc
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair (ClassName -> CppSrcCode Doc
forall (r :: * -> *). ImportSym r => ClassName -> r Doc
modImport ClassName
n) (ClassName -> CppHdrCode Doc
forall (r :: * -> *). ImportSym r => ClassName -> r Doc
modImport ClassName
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair CppSrcCode AttachmentData
forall (r :: * -> *) att. AttachmentSym r att => r att
classLevel CppHdrCode AttachmentData
forall (r :: * -> *) att. AttachmentSym r att => r att
classLevel
instanceLevel :: p CppSrcCode CppHdrCode AttachmentData
instanceLevel = CppSrcCode AttachmentData
-> CppHdrCode AttachmentData
-> p CppSrcCode CppHdrCode AttachmentData
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair CppSrcCode AttachmentData
forall (r :: * -> *) att. AttachmentSym r att => r att
instanceLevel CppHdrCode AttachmentData
forall (r :: * -> *) att. AttachmentSym r att => r att
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 (r :: * -> *) att. PermElim r att => r att -> Doc
RC.perm (CppSrcCode AttachmentData -> Doc)
-> CppSrcCode AttachmentData -> Doc
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode AttachmentData -> CppSrcCode AttachmentData
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
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 (r :: * -> *) att. PermElim r att => r att -> AttachmentTag
binding (CppSrcCode AttachmentData -> AttachmentTag)
-> CppSrcCode AttachmentData -> AttachmentTag
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode AttachmentData -> CppSrcCode AttachmentData
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode AttachmentData
p
instance (Pair p) => BodySym (p CppSrcCode CppHdrCode) (Doc, Terminator) 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 (r :: * -> *) smt.
BodySym r smt =>
[MS (r Doc)] -> MS (r Doc)
body [HdrState MethodState Doc] -> HdrState MethodState Doc
forall (r :: * -> *) smt.
BodySym r smt =>
[MS (r Doc)] -> MS (r Doc)
body
addComments :: ClassName
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode Doc)
addComments ClassName
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 (ClassName -> SrcState MethodState Doc -> SrcState MethodState Doc
forall (r :: * -> *) smt.
BodySym r smt =>
ClassName -> MS (r Doc) -> MS (r Doc)
addComments ClassName
s) (ClassName -> HdrState MethodState Doc -> HdrState MethodState Doc
forall (r :: * -> *) smt.
BodySym r smt =>
ClassName -> MS (r Doc) -> MS (r Doc)
addComments ClassName
s)
instance (Pair p) => RenderBody (p CppSrcCode CppHdrCode) 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 (r :: * -> *). RenderBody r => [MS (r Doc)] -> MS (r Doc)
multiBody [HdrState MethodState Doc] -> HdrState MethodState Doc
forall (r :: * -> *). RenderBody r => [MS (r Doc)] -> MS (r Doc)
multiBody
instance (Pair p) => BodyElim (p CppSrcCode CppHdrCode) where
body :: p CppSrcCode CppHdrCode Doc -> Doc
body p CppSrcCode CppHdrCode Doc
b = CppSrcCode Doc -> Doc
forall (r :: * -> *). BodyElim r => r Doc -> Doc
RC.body (CppSrcCode Doc -> Doc) -> CppSrcCode Doc -> Doc
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode Doc -> CppSrcCode Doc
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode Doc
b
instance (Pair p) => BlockSym (p CppSrcCode CppHdrCode) (Doc, Terminator) where
block :: [MS (p CppSrcCode CppHdrCode (Doc, Terminator))]
-> MS (p CppSrcCode CppHdrCode Doc)
block = ([SrcState MethodState (Doc, Terminator)]
-> SrcState MethodState Doc)
-> ([HdrState MethodState (Doc, Terminator)]
-> HdrState MethodState Doc)
-> [MS (p CppSrcCode CppHdrCode (Doc, Terminator))]
-> 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, Terminator)]
-> SrcState MethodState Doc
forall (r :: * -> *) smt.
BlockSym r smt =>
[MS (r smt)] -> MS (r Doc)
block [HdrState MethodState (Doc, Terminator)]
-> HdrState MethodState Doc
forall (r :: * -> *) smt.
BlockSym r smt =>
[MS (r smt)] -> MS (r Doc)
block
instance (Pair p) => RenderBlock (p CppSrcCode CppHdrCode) 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 (r :: * -> *). RenderBlock r => [MS (r Doc)] -> MS (r Doc)
multiBlock [HdrState MethodState Doc] -> HdrState MethodState Doc
forall (r :: * -> *). RenderBlock r => [MS (r Doc)] -> MS (r Doc)
multiBlock
instance (Pair p) => BlockElim (p CppSrcCode CppHdrCode) where
block :: p CppSrcCode CppHdrCode Doc -> Doc
block p CppSrcCode CppHdrCode Doc
b = CppSrcCode Doc -> Doc
forall (r :: * -> *). BlockElim r => r Doc -> Doc
RC.block (CppSrcCode Doc -> Doc) -> CppSrcCode Doc -> Doc
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode Doc -> CppSrcCode Doc
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode Doc
b
instance (Pair p) => TypeSym (p CppSrcCode CppHdrCode) 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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
bool State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
int State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
float State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
double State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
char State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
string State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
infile State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
outfile State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
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 (r :: * -> *).
TypeSym r =>
VS (r TypeData) -> VS (r TypeData)
referenceType State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData)
forall (r :: * -> *).
TypeSym r =>
VS (r TypeData) -> VS (r TypeData)
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 (r :: * -> *).
TypeSym r =>
VS (r TypeData) -> VS (r TypeData)
listType State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData)
forall (r :: * -> *).
TypeSym r =>
VS (r TypeData) -> VS (r TypeData)
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 (r :: * -> *).
TypeSym r =>
VS (r TypeData) -> VS (r TypeData)
setType State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData)
forall (r :: * -> *).
TypeSym r =>
VS (r TypeData) -> VS (r TypeData)
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 (r :: * -> *).
TypeSym r =>
VS (r TypeData) -> VS (r TypeData)
arrayType State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData)
forall (r :: * -> *).
TypeSym r =>
VS (r TypeData) -> VS (r TypeData)
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 (r :: * -> *).
TypeSym r =>
VS (r TypeData) -> VS (r TypeData)
innerType State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData)
forall (r :: * -> *).
TypeSym r =>
VS (r TypeData) -> VS (r TypeData)
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 (r :: * -> *).
TypeSym r =>
[VS (r TypeData)] -> VS (r TypeData) -> VS (r TypeData)
funcType [State ValueState (CppHdrCode TypeData)]
-> State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData)
forall (r :: * -> *).
TypeSym r =>
[VS (r TypeData)] -> VS (r TypeData) -> VS (r TypeData)
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void
instance (Pair p) => TypeElim (p CppSrcCode CppHdrCode) where
getCodeType :: p CppSrcCode CppHdrCode TypeData -> CodeType
getCodeType p CppSrcCode CppHdrCode TypeData
tp = CppSrcCode TypeData -> CodeType
forall (r :: * -> *). TypeElim r => r TypeData -> CodeType
getCodeType (CppSrcCode TypeData -> CodeType)
-> CppSrcCode TypeData -> CodeType
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode TypeData -> CppSrcCode TypeData
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode TypeData
tp
instance (Pair p) => OOTypeSym (p CppSrcCode CppHdrCode) where
obj :: ClassName -> VS (p CppSrcCode CppHdrCode TypeData)
obj ClassName
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair (ClassName -> State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). OOTypeSym r => ClassName -> VS (r TypeData)
obj ClassName
t) (ClassName -> State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). OOTypeSym r => ClassName -> VS (r TypeData)
obj ClassName
t)
instance (Pair p) => RenderType (p CppSrcCode CppHdrCode) 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 (r :: * -> *).
RenderType r =>
[VS (r TypeData)] -> VS (r TypeData)
multiType [State ValueState (CppHdrCode TypeData)]
-> State ValueState (CppHdrCode TypeData)
forall (r :: * -> *).
RenderType r =>
[VS (r TypeData)] -> VS (r TypeData)
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
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 (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
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 (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
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 (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
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 (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode OpData
o
instance (Pair p) => ScopeSym (p CppSrcCode CppHdrCode) where
global :: p CppSrcCode CppHdrCode ScopeData
global = CppSrcCode ScopeData
-> CppHdrCode ScopeData -> p CppSrcCode CppHdrCode ScopeData
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair CppSrcCode ScopeData
forall (r :: * -> *). ScopeSym r => r ScopeData
global CppHdrCode ScopeData
forall (r :: * -> *). ScopeSym r => r ScopeData
global
mainFn :: p CppSrcCode CppHdrCode ScopeData
mainFn = CppSrcCode ScopeData
-> CppHdrCode ScopeData -> p CppSrcCode CppHdrCode ScopeData
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair CppSrcCode ScopeData
forall (r :: * -> *). ScopeSym r => r ScopeData
mainFn CppHdrCode ScopeData
forall (r :: * -> *). ScopeSym r => r ScopeData
mainFn
local :: p CppSrcCode CppHdrCode ScopeData
local = CppSrcCode ScopeData
-> CppHdrCode ScopeData -> p CppSrcCode CppHdrCode ScopeData
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair CppSrcCode ScopeData
forall (r :: * -> *). ScopeSym r => r ScopeData
local CppHdrCode ScopeData
forall (r :: * -> *). ScopeSym r => r ScopeData
local
instance (Pair p) => ScopeElim (p CppSrcCode CppHdrCode) 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 (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst
instance (Pair p) => VariableSym (p CppSrcCode CppHdrCode) where
var :: ClassName
-> VS (p CppSrcCode CppHdrCode TypeData)
-> SVariable (p CppSrcCode CppHdrCode)
var ClassName
n = (State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable)
-> (State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Variable)
-> VS (p CppSrcCode CppHdrCode TypeData)
-> SVariable (p CppSrcCode CppHdrCode)
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 (ClassName
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable
forall (r :: * -> *).
VariableSym r =>
ClassName -> VS (r TypeData) -> SVariable r
var ClassName
n) (ClassName
-> State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Variable
forall (r :: * -> *).
VariableSym r =>
ClassName -> VS (r TypeData) -> SVariable r
var ClassName
n)
constant :: ClassName
-> VS (p CppSrcCode CppHdrCode TypeData)
-> SVariable (p CppSrcCode CppHdrCode)
constant ClassName
n = (State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable)
-> (State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Variable)
-> VS (p CppSrcCode CppHdrCode TypeData)
-> SVariable (p CppSrcCode CppHdrCode)
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 (ClassName
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable
forall (r :: * -> *).
VariableSym r =>
ClassName -> VS (r TypeData) -> SVariable r
constant ClassName
n) (ClassName
-> State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Variable
forall (r :: * -> *).
VariableSym r =>
ClassName -> VS (r TypeData) -> SVariable r
constant ClassName
n)
extVar :: ClassName
-> ClassName
-> VS (p CppSrcCode CppHdrCode TypeData)
-> SVariable (p CppSrcCode CppHdrCode)
extVar ClassName
l ClassName
n = (State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable)
-> (State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Variable)
-> VS (p CppSrcCode CppHdrCode TypeData)
-> SVariable (p CppSrcCode CppHdrCode)
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 (ClassName
-> ClassName
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable
forall (r :: * -> *).
VariableSym r =>
ClassName -> ClassName -> VS (r TypeData) -> SVariable r
extVar ClassName
l ClassName
n) (ClassName
-> ClassName
-> State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Variable
forall (r :: * -> *).
VariableSym r =>
ClassName -> ClassName -> VS (r TypeData) -> SVariable r
extVar ClassName
l ClassName
n)
instance (Pair p) => OOVariableSym (p CppSrcCode CppHdrCode) where
classVar :: ClassName
-> VS (p CppSrcCode CppHdrCode TypeData)
-> SVariable (p CppSrcCode CppHdrCode)
classVar ClassName
n = (State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable)
-> (State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Variable)
-> VS (p CppSrcCode CppHdrCode TypeData)
-> SVariable (p CppSrcCode CppHdrCode)
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 (ClassName
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable
forall (r :: * -> *).
OOVariableSym r =>
ClassName -> VS (r TypeData) -> SVariable r
classVar ClassName
n) (ClassName
-> State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Variable
forall (r :: * -> *).
OOVariableSym r =>
ClassName -> VS (r TypeData) -> SVariable r
classVar ClassName
n)
classConst :: ClassName
-> VS (p CppSrcCode CppHdrCode TypeData)
-> SVariable (p CppSrcCode CppHdrCode)
classConst ClassName
n = (State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable)
-> (State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Variable)
-> VS (p CppSrcCode CppHdrCode TypeData)
-> SVariable (p CppSrcCode CppHdrCode)
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 (ClassName
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable
forall (r :: * -> *).
OOVariableSym r =>
ClassName -> VS (r TypeData) -> SVariable r
classConst ClassName
n) (ClassName
-> State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Variable
forall (r :: * -> *).
OOVariableSym r =>
ClassName -> VS (r TypeData) -> SVariable r
classConst ClassName
n)
classVarAccess :: VS (p CppSrcCode CppHdrCode TypeData)
-> SVariable (p CppSrcCode CppHdrCode)
-> SVariable (p CppSrcCode CppHdrCode)
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)
-> SVariable (p CppSrcCode CppHdrCode)
-> SVariable (p CppSrcCode CppHdrCode)
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 (r :: * -> *).
OOVariableSym r =>
VS (r TypeData) -> SVariable r -> SVariable r
classVarAccess State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Variable -> HdrState ValueState Variable
forall (r :: * -> *).
OOVariableSym r =>
VS (r TypeData) -> SVariable r -> SVariable r
classVarAccess
extClassVarAccess :: VS (p CppSrcCode CppHdrCode TypeData)
-> SVariable (p CppSrcCode CppHdrCode)
-> SVariable (p CppSrcCode CppHdrCode)
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)
-> SVariable (p CppSrcCode CppHdrCode)
-> SVariable (p CppSrcCode CppHdrCode)
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 (r :: * -> *).
OOVariableSym r =>
VS (r TypeData) -> SVariable r -> SVariable r
extClassVarAccess State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Variable -> HdrState ValueState Variable
forall (r :: * -> *).
OOVariableSym r =>
VS (r TypeData) -> SVariable r -> SVariable r
extClassVarAccess
instanceVarAccess :: SValue (p CppSrcCode CppHdrCode)
-> SVariable (p CppSrcCode CppHdrCode)
-> SVariable (p CppSrcCode CppHdrCode)
instanceVarAccess = (SrcState ValueState Value
-> SrcState ValueState Variable -> SrcState ValueState Variable)
-> (HdrState ValueState Value
-> HdrState ValueState Variable -> HdrState ValueState Variable)
-> SValue (p CppSrcCode CppHdrCode)
-> SVariable (p CppSrcCode CppHdrCode)
-> SVariable (p CppSrcCode CppHdrCode)
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 Value
-> SrcState ValueState Variable -> SrcState ValueState Variable
forall (r :: * -> *).
OOVariableSym r =>
SValue r -> SVariable r -> SVariable r
instanceVarAccess HdrState ValueState Value
-> HdrState ValueState Variable -> HdrState ValueState Variable
forall (r :: * -> *).
OOVariableSym r =>
SValue r -> SVariable r -> SVariable r
instanceVarAccess
instance (Pair p) => SelfSym (p CppSrcCode CppHdrCode) where
self :: SVariable (p CppSrcCode CppHdrCode)
self = (CppSrcCode Variable
-> CppHdrCode Variable -> p CppSrcCode CppHdrCode Variable)
-> SrcState ValueState Variable
-> HdrState ValueState Variable
-> SVariable (p CppSrcCode CppHdrCode)
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair SrcState ValueState Variable
forall (r :: * -> *). SelfSym r => SVariable r
self HdrState ValueState Variable
forall (r :: * -> *). SelfSym r => SVariable r
self
instance (Pair p) => VariableElim (p CppSrcCode CppHdrCode) where
variableName :: p CppSrcCode CppHdrCode Variable -> ClassName
variableName p CppSrcCode CppHdrCode Variable
v = CppSrcCode Variable -> ClassName
forall (r :: * -> *). VariableElim r => r Variable -> ClassName
variableName (CppSrcCode Variable -> ClassName)
-> CppSrcCode Variable -> ClassName
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode Variable -> CppSrcCode Variable
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair (CppSrcCode Variable -> CppSrcCode TypeData
forall (r :: * -> *). VariableElim r => r Variable -> r TypeData
variableType (CppSrcCode Variable -> CppSrcCode TypeData)
-> CppSrcCode Variable -> CppSrcCode TypeData
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode Variable -> CppSrcCode Variable
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode Variable
v) (CppHdrCode Variable -> CppHdrCode TypeData
forall (r :: * -> *). VariableElim r => r Variable -> r TypeData
variableType (CppHdrCode Variable -> CppHdrCode TypeData)
-> CppHdrCode Variable -> CppHdrCode TypeData
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode Variable -> CppHdrCode Variable
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd p CppSrcCode CppHdrCode Variable
v)
instance (Pair p) => InternalVarElim (p CppSrcCode CppHdrCode) where
variableBind :: p CppSrcCode CppHdrCode Variable -> AttachmentTag
variableBind p CppSrcCode CppHdrCode Variable
v = CppSrcCode Variable -> AttachmentTag
forall (r :: * -> *).
InternalVarElim r =>
r Variable -> AttachmentTag
variableBind (CppSrcCode Variable -> AttachmentTag)
-> CppSrcCode Variable -> AttachmentTag
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode Variable -> CppSrcCode Variable
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
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 (r :: * -> *). InternalVarElim r => r Variable -> Doc
RC.variable (CppSrcCode Variable -> Doc) -> CppSrcCode Variable -> Doc
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode Variable -> CppSrcCode Variable
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode Variable
v
instance (Pair p) => RenderVariable (p CppSrcCode CppHdrCode) where
varFromData :: AttachmentTag
-> ClassName
-> VS (p CppSrcCode CppHdrCode TypeData)
-> Doc
-> SVariable (p CppSrcCode CppHdrCode)
varFromData AttachmentTag
b ClassName
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)
-> SVariable (p CppSrcCode CppHdrCode)
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
-> ClassName
-> State ValueState (CppSrcCode TypeData)
-> Doc
-> SrcState ValueState Variable
forall (r :: * -> *).
RenderVariable r =>
AttachmentTag -> ClassName -> VS (r TypeData) -> Doc -> SVariable r
varFromData AttachmentTag
b ClassName
n State ValueState (CppSrcCode TypeData)
t Doc
d)
(\State ValueState (CppHdrCode TypeData)
t -> AttachmentTag
-> ClassName
-> State ValueState (CppHdrCode TypeData)
-> Doc
-> HdrState ValueState Variable
forall (r :: * -> *).
RenderVariable r =>
AttachmentTag -> ClassName -> VS (r TypeData) -> Doc -> SVariable r
varFromData AttachmentTag
b ClassName
n State ValueState (CppHdrCode TypeData)
t Doc
d) VS (p CppSrcCode CppHdrCode TypeData)
t'
instance (Pair p) => ValueSym (p CppSrcCode CppHdrCode) 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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair (CppSrcCode Value -> CppSrcCode TypeData
forall (r :: * -> *). ValueSym r => r Value -> r TypeData
valueType (CppSrcCode Value -> CppSrcCode TypeData)
-> CppSrcCode Value -> CppSrcCode TypeData
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode Value -> CppSrcCode Value
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode Value
v) (CppHdrCode Value -> CppHdrCode TypeData
forall (r :: * -> *). ValueSym r => r Value -> r TypeData
valueType (CppHdrCode Value -> CppHdrCode TypeData)
-> CppHdrCode Value -> CppHdrCode TypeData
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode Value -> CppHdrCode Value
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd p CppSrcCode CppHdrCode Value
v)
instance (Pair p) => OOValueSym (p CppSrcCode CppHdrCode)
instance (Pair p) => Argument (p CppSrcCode CppHdrCode) where
pointerArg :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
pointerArg = (SrcState ValueState Value -> SrcState ValueState Value)
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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 Value -> SrcState ValueState Value
forall (r :: * -> *). Argument r => SValue r -> SValue r
pointerArg HdrState ValueState Value -> HdrState ValueState Value
forall (r :: * -> *). Argument r => SValue r -> SValue r
pointerArg
instance (Pair p) => Literal (p CppSrcCode CppHdrCode) where
litTrue :: SValue (p CppSrcCode CppHdrCode)
litTrue = (CppSrcCode Value
-> CppHdrCode Value -> p CppSrcCode CppHdrCode Value)
-> SrcState ValueState Value
-> HdrState ValueState Value
-> SValue (p CppSrcCode CppHdrCode)
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair SrcState ValueState Value
forall (r :: * -> *). Literal r => SValue r
litTrue HdrState ValueState Value
forall (r :: * -> *). Literal r => SValue r
litTrue
litFalse :: SValue (p CppSrcCode CppHdrCode)
litFalse = (CppSrcCode Value
-> CppHdrCode Value -> p CppSrcCode CppHdrCode Value)
-> SrcState ValueState Value
-> HdrState ValueState Value
-> SValue (p CppSrcCode CppHdrCode)
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair SrcState ValueState Value
forall (r :: * -> *). Literal r => SValue r
litFalse HdrState ValueState Value
forall (r :: * -> *). Literal r => SValue r
litFalse
litChar :: Char -> SValue (p CppSrcCode CppHdrCode)
litChar Char
c = (CppSrcCode Value
-> CppHdrCode Value -> p CppSrcCode CppHdrCode Value)
-> SrcState ValueState Value
-> HdrState ValueState Value
-> SValue (p CppSrcCode CppHdrCode)
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair (Char -> SrcState ValueState Value
forall (r :: * -> *). Literal r => Char -> SValue r
litChar Char
c) (Char -> HdrState ValueState Value
forall (r :: * -> *). Literal r => Char -> SValue r
litChar Char
c)
litDouble :: Double -> SValue (p CppSrcCode CppHdrCode)
litDouble Double
v = (CppSrcCode Value
-> CppHdrCode Value -> p CppSrcCode CppHdrCode Value)
-> SrcState ValueState Value
-> HdrState ValueState Value
-> SValue (p CppSrcCode CppHdrCode)
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair (Double -> SrcState ValueState Value
forall (r :: * -> *). Literal r => Double -> SValue r
litDouble Double
v) (Double -> HdrState ValueState Value
forall (r :: * -> *). Literal r => Double -> SValue r
litDouble Double
v)
litFloat :: Float -> SValue (p CppSrcCode CppHdrCode)
litFloat Float
v = (CppSrcCode Value
-> CppHdrCode Value -> p CppSrcCode CppHdrCode Value)
-> SrcState ValueState Value
-> HdrState ValueState Value
-> SValue (p CppSrcCode CppHdrCode)
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair (Float -> SrcState ValueState Value
forall (r :: * -> *). Literal r => Float -> SValue r
litFloat Float
v) (Float -> HdrState ValueState Value
forall (r :: * -> *). Literal r => Float -> SValue r
litFloat Float
v)
litInt :: Integer -> SValue (p CppSrcCode CppHdrCode)
litInt Integer
v =(CppSrcCode Value
-> CppHdrCode Value -> p CppSrcCode CppHdrCode Value)
-> SrcState ValueState Value
-> HdrState ValueState Value
-> SValue (p CppSrcCode CppHdrCode)
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair (Integer -> SrcState ValueState Value
forall (r :: * -> *). Literal r => Integer -> SValue r
litInt Integer
v) (Integer -> HdrState ValueState Value
forall (r :: * -> *). Literal r => Integer -> SValue r
litInt Integer
v)
litString :: ClassName -> SValue (p CppSrcCode CppHdrCode)
litString ClassName
s = (CppSrcCode Value
-> CppHdrCode Value -> p CppSrcCode CppHdrCode Value)
-> SrcState ValueState Value
-> HdrState ValueState Value
-> SValue (p CppSrcCode CppHdrCode)
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair (ClassName -> SrcState ValueState Value
forall (r :: * -> *). Literal r => ClassName -> SValue r
litString ClassName
s) (ClassName -> HdrState ValueState Value
forall (r :: * -> *). Literal r => ClassName -> SValue r
litString ClassName
s)
litArray :: VS (p CppSrcCode CppHdrCode TypeData)
-> [SValue (p CppSrcCode CppHdrCode)]
-> SValue (p CppSrcCode CppHdrCode)
litArray = (State ValueState (CppSrcCode TypeData)
-> [SrcState ValueState Value] -> SrcState ValueState Value)
-> (State ValueState (CppHdrCode TypeData)
-> [HdrState ValueState Value] -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode TypeData)
-> [SValue (p CppSrcCode CppHdrCode)]
-> SValue (p CppSrcCode CppHdrCode)
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)
-> [SrcState ValueState Value] -> SrcState ValueState Value
forall (r :: * -> *).
Literal r =>
VS (r TypeData) -> [SValue r] -> SValue r
litArray State ValueState (CppHdrCode TypeData)
-> [HdrState ValueState Value] -> HdrState ValueState Value
forall (r :: * -> *).
Literal r =>
VS (r TypeData) -> [SValue r] -> SValue r
litArray
litSet :: VS (p CppSrcCode CppHdrCode TypeData)
-> [SValue (p CppSrcCode CppHdrCode)]
-> SValue (p CppSrcCode CppHdrCode)
litSet = (State ValueState (CppSrcCode TypeData)
-> [SrcState ValueState Value] -> SrcState ValueState Value)
-> (State ValueState (CppHdrCode TypeData)
-> [HdrState ValueState Value] -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode TypeData)
-> [SValue (p CppSrcCode CppHdrCode)]
-> SValue (p CppSrcCode CppHdrCode)
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)
-> [SrcState ValueState Value] -> SrcState ValueState Value
forall (r :: * -> *).
Literal r =>
VS (r TypeData) -> [SValue r] -> SValue r
litSet State ValueState (CppHdrCode TypeData)
-> [HdrState ValueState Value] -> HdrState ValueState Value
forall (r :: * -> *).
Literal r =>
VS (r TypeData) -> [SValue r] -> SValue r
litSet
litList :: VS (p CppSrcCode CppHdrCode TypeData)
-> [SValue (p CppSrcCode CppHdrCode)]
-> SValue (p CppSrcCode CppHdrCode)
litList = (State ValueState (CppSrcCode TypeData)
-> [SrcState ValueState Value] -> SrcState ValueState Value)
-> (State ValueState (CppHdrCode TypeData)
-> [HdrState ValueState Value] -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode TypeData)
-> [SValue (p CppSrcCode CppHdrCode)]
-> SValue (p CppSrcCode CppHdrCode)
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)
-> [SrcState ValueState Value] -> SrcState ValueState Value
forall (r :: * -> *).
Literal r =>
VS (r TypeData) -> [SValue r] -> SValue r
litList State ValueState (CppHdrCode TypeData)
-> [HdrState ValueState Value] -> HdrState ValueState Value
forall (r :: * -> *).
Literal r =>
VS (r TypeData) -> [SValue r] -> SValue r
litList
instance (Pair p) => MathConstant (p CppSrcCode CppHdrCode) where
pi :: SValue (p CppSrcCode CppHdrCode)
pi = (CppSrcCode Value
-> CppHdrCode Value -> p CppSrcCode CppHdrCode Value)
-> SrcState ValueState Value
-> HdrState ValueState Value
-> SValue (p CppSrcCode CppHdrCode)
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair SrcState ValueState Value
forall (r :: * -> *). MathConstant r => SValue r
pi HdrState ValueState Value
forall (r :: * -> *). MathConstant r => SValue r
pi
instance (Pair p) => VariableValue (p CppSrcCode CppHdrCode) where
valueOf :: SVariable (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
valueOf = (SrcState ValueState Variable -> SrcState ValueState Value)
-> (HdrState ValueState Variable -> HdrState ValueState Value)
-> SVariable (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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 Value
forall (r :: * -> *). VariableValue r => SVariable r -> SValue r
valueOf HdrState ValueState Variable -> HdrState ValueState Value
forall (r :: * -> *). VariableValue r => SVariable r -> SValue r
valueOf
instance (Pair p) => OOVariableValue (p CppSrcCode CppHdrCode)
instance (Pair p) => CommandLineArgs (p CppSrcCode CppHdrCode) where
arg :: Integer -> SValue (p CppSrcCode CppHdrCode)
arg Integer
n = (CppSrcCode Value
-> CppHdrCode Value -> p CppSrcCode CppHdrCode Value)
-> SrcState ValueState Value
-> HdrState ValueState Value
-> SValue (p CppSrcCode CppHdrCode)
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair (Integer -> SrcState ValueState Value
forall (r :: * -> *). CommandLineArgs r => Integer -> SValue r
arg Integer
n) (Integer -> HdrState ValueState Value
forall (r :: * -> *). CommandLineArgs r => Integer -> SValue r
arg Integer
n)
argsList :: SValue (p CppSrcCode CppHdrCode)
argsList = (CppSrcCode Value
-> CppHdrCode Value -> p CppSrcCode CppHdrCode Value)
-> SrcState ValueState Value
-> HdrState ValueState Value
-> SValue (p CppSrcCode CppHdrCode)
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair SrcState ValueState Value
forall (r :: * -> *). CommandLineArgs r => SValue r
argsList HdrState ValueState Value
forall (r :: * -> *). CommandLineArgs r => SValue r
argsList
argExists :: Integer -> SValue (p CppSrcCode CppHdrCode)
argExists Integer
i = (CppSrcCode Value
-> CppHdrCode Value -> p CppSrcCode CppHdrCode Value)
-> SrcState ValueState Value
-> HdrState ValueState Value
-> SValue (p CppSrcCode CppHdrCode)
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair (Integer -> SrcState ValueState Value
forall (r :: * -> *). CommandLineArgs r => Integer -> SValue r
argExists Integer
i) (Integer -> HdrState ValueState Value
forall (r :: * -> *). CommandLineArgs r => Integer -> SValue r
argExists Integer
i)
instance (Pair p) => NumericExpression (p CppSrcCode CppHdrCode) where
#~ :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
(#~) = (SrcState ValueState Value -> SrcState ValueState Value)
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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 Value -> SrcState ValueState Value
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
(#~) HdrState ValueState Value -> HdrState ValueState Value
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
(#~)
#/^ :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
(#/^) = (SrcState ValueState Value -> SrcState ValueState Value)
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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 Value -> SrcState ValueState Value
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
(#/^) HdrState ValueState Value -> HdrState ValueState Value
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
(#/^)
#| :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
(#|) = (SrcState ValueState Value -> SrcState ValueState Value)
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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 Value -> SrcState ValueState Value
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
(#|) HdrState ValueState Value -> HdrState ValueState Value
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
(#|)
#+ :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
(#+) = (SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Value)
-> (HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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 Value
-> SrcState ValueState Value -> SrcState ValueState Value
forall (r :: * -> *).
NumericExpression r =>
SValue r -> SValue r -> SValue r
(#+) HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
forall (r :: * -> *).
NumericExpression r =>
SValue r -> SValue r -> SValue r
(#+)
#- :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
(#-) = (SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Value)
-> (HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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 Value
-> SrcState ValueState Value -> SrcState ValueState Value
forall (r :: * -> *).
NumericExpression r =>
SValue r -> SValue r -> SValue r
(#-) HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
forall (r :: * -> *).
NumericExpression r =>
SValue r -> SValue r -> SValue r
(#-)
#* :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
(#*) = (SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Value)
-> (HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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 Value
-> SrcState ValueState Value -> SrcState ValueState Value
forall (r :: * -> *).
NumericExpression r =>
SValue r -> SValue r -> SValue r
(#*) HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
forall (r :: * -> *).
NumericExpression r =>
SValue r -> SValue r -> SValue r
(#*)
#/ :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
(#/) = (SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Value)
-> (HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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 Value
-> SrcState ValueState Value -> SrcState ValueState Value
forall (r :: * -> *).
NumericExpression r =>
SValue r -> SValue r -> SValue r
(#/) HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
forall (r :: * -> *).
NumericExpression r =>
SValue r -> SValue r -> SValue r
(#/)
#% :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
(#%) = (SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Value)
-> (HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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 Value
-> SrcState ValueState Value -> SrcState ValueState Value
forall (r :: * -> *).
NumericExpression r =>
SValue r -> SValue r -> SValue r
(#%) HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
forall (r :: * -> *).
NumericExpression r =>
SValue r -> SValue r -> SValue r
(#%)
#^ :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
(#^) = (SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Value)
-> (HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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 Value
-> SrcState ValueState Value -> SrcState ValueState Value
forall (r :: * -> *).
NumericExpression r =>
SValue r -> SValue r -> SValue r
(#^) HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
forall (r :: * -> *).
NumericExpression r =>
SValue r -> SValue r -> SValue r
(#^)
log :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
log = (SrcState ValueState Value -> SrcState ValueState Value)
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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 Value -> SrcState ValueState Value
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
log HdrState ValueState Value -> HdrState ValueState Value
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
log
ln :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
ln = (SrcState ValueState Value -> SrcState ValueState Value)
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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 Value -> SrcState ValueState Value
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
ln HdrState ValueState Value -> HdrState ValueState Value
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
ln
exp :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
exp = (SrcState ValueState Value -> SrcState ValueState Value)
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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 Value -> SrcState ValueState Value
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
exp HdrState ValueState Value -> HdrState ValueState Value
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
exp
sin :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
sin = (SrcState ValueState Value -> SrcState ValueState Value)
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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 Value -> SrcState ValueState Value
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
sin HdrState ValueState Value -> HdrState ValueState Value
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
sin
cos :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
cos = (SrcState ValueState Value -> SrcState ValueState Value)
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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 Value -> SrcState ValueState Value
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
cos HdrState ValueState Value -> HdrState ValueState Value
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
cos
tan :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
tan = (SrcState ValueState Value -> SrcState ValueState Value)
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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 Value -> SrcState ValueState Value
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
tan HdrState ValueState Value -> HdrState ValueState Value
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
tan
csc :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
csc = (SrcState ValueState Value -> SrcState ValueState Value)
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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 Value -> SrcState ValueState Value
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
csc HdrState ValueState Value -> HdrState ValueState Value
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
csc
sec :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
sec = (SrcState ValueState Value -> SrcState ValueState Value)
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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 Value -> SrcState ValueState Value
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
sec HdrState ValueState Value -> HdrState ValueState Value
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
sec
cot :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
cot = (SrcState ValueState Value -> SrcState ValueState Value)
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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 Value -> SrcState ValueState Value
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
cot HdrState ValueState Value -> HdrState ValueState Value
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
cot
arcsin :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
arcsin = (SrcState ValueState Value -> SrcState ValueState Value)
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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 Value -> SrcState ValueState Value
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
arcsin HdrState ValueState Value -> HdrState ValueState Value
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
arcsin
arccos :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
arccos = (SrcState ValueState Value -> SrcState ValueState Value)
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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 Value -> SrcState ValueState Value
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
arccos HdrState ValueState Value -> HdrState ValueState Value
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
arccos
arctan :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
arctan = (SrcState ValueState Value -> SrcState ValueState Value)
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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 Value -> SrcState ValueState Value
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
arctan HdrState ValueState Value -> HdrState ValueState Value
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
arctan
floor :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
floor = (SrcState ValueState Value -> SrcState ValueState Value)
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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 Value -> SrcState ValueState Value
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
floor HdrState ValueState Value -> HdrState ValueState Value
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
floor
ceil :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
ceil = (SrcState ValueState Value -> SrcState ValueState Value)
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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 Value -> SrcState ValueState Value
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
ceil HdrState ValueState Value -> HdrState ValueState Value
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
ceil
instance (Pair p) => BooleanExpression (p CppSrcCode CppHdrCode) where
?! :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
(?!) = (SrcState ValueState Value -> SrcState ValueState Value)
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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 Value -> SrcState ValueState Value
forall (r :: * -> *). BooleanExpression r => SValue r -> SValue r
(?!) HdrState ValueState Value -> HdrState ValueState Value
forall (r :: * -> *). BooleanExpression r => SValue r -> SValue r
(?!)
?&& :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
(?&&) = (SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Value)
-> (HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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 Value
-> SrcState ValueState Value -> SrcState ValueState Value
forall (r :: * -> *).
BooleanExpression r =>
SValue r -> SValue r -> SValue r
(?&&) HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
forall (r :: * -> *).
BooleanExpression r =>
SValue r -> SValue r -> SValue r
(?&&)
?|| :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
(?||) = (SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Value)
-> (HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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 Value
-> SrcState ValueState Value -> SrcState ValueState Value
forall (r :: * -> *).
BooleanExpression r =>
SValue r -> SValue r -> SValue r
(?||) HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
forall (r :: * -> *).
BooleanExpression r =>
SValue r -> SValue r -> SValue r
(?||)
instance (Pair p) => Comparison (p CppSrcCode CppHdrCode) where
?< :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
(?<) = (SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Value)
-> (HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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 Value
-> SrcState ValueState Value -> SrcState ValueState Value
forall (r :: * -> *).
Comparison r =>
SValue r -> SValue r -> SValue r
(?<) HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
forall (r :: * -> *).
Comparison r =>
SValue r -> SValue r -> SValue r
(?<)
?<= :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
(?<=) = (SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Value)
-> (HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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 Value
-> SrcState ValueState Value -> SrcState ValueState Value
forall (r :: * -> *).
Comparison r =>
SValue r -> SValue r -> SValue r
(?<=) HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
forall (r :: * -> *).
Comparison r =>
SValue r -> SValue r -> SValue r
(?<=)
?> :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
(?>) = (SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Value)
-> (HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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 Value
-> SrcState ValueState Value -> SrcState ValueState Value
forall (r :: * -> *).
Comparison r =>
SValue r -> SValue r -> SValue r
(?>) HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
forall (r :: * -> *).
Comparison r =>
SValue r -> SValue r -> SValue r
(?>)
?>= :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
(?>=) = (SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Value)
-> (HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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 Value
-> SrcState ValueState Value -> SrcState ValueState Value
forall (r :: * -> *).
Comparison r =>
SValue r -> SValue r -> SValue r
(?>=) HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
forall (r :: * -> *).
Comparison r =>
SValue r -> SValue r -> SValue r
(?>=)
?== :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
(?==) = (SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Value)
-> (HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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 Value
-> SrcState ValueState Value -> SrcState ValueState Value
forall (r :: * -> *).
Comparison r =>
SValue r -> SValue r -> SValue r
(?==) HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
forall (r :: * -> *).
Comparison r =>
SValue r -> SValue r -> SValue r
(?==)
?!= :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
(?!=) = (SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Value)
-> (HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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 Value
-> SrcState ValueState Value -> SrcState ValueState Value
forall (r :: * -> *).
Comparison r =>
SValue r -> SValue r -> SValue r
(?!=) HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
forall (r :: * -> *).
Comparison r =>
SValue r -> SValue r -> SValue r
(?!=)
instance (Pair p) => ValueExpression (p CppSrcCode CppHdrCode) where
inlineIf :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
inlineIf = (SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState ValueState Value)
-> (HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState ValueState Value)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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 Value
-> SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState ValueState Value
forall (r :: * -> *).
ValueExpression r =>
SValue r -> SValue r -> SValue r -> SValue r
inlineIf HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState ValueState Value
forall (r :: * -> *).
ValueExpression r =>
SValue r -> SValue r -> SValue r -> SValue r
inlineIf
funcAppMixedArgs :: MixedCall (p CppSrcCode CppHdrCode)
funcAppMixedArgs ClassName
n = (State ValueState (CppSrcCode TypeData)
-> [SrcState ValueState Value]
-> [(SrcState ValueState Variable, SrcState ValueState Value)]
-> SrcState ValueState Value)
-> (State ValueState (CppHdrCode TypeData)
-> [HdrState ValueState Value]
-> [(HdrState ValueState Variable, HdrState ValueState Value)]
-> HdrState ValueState Value)
-> PairState ValueState p TypeData
-> [SValue (p CppSrcCode CppHdrCode)]
-> [(PairState ValueState p Variable,
SValue (p CppSrcCode CppHdrCode))]
-> SValue (p CppSrcCode CppHdrCode)
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
forall (r :: * -> *). ValueExpression r => MixedCall r
funcAppMixedArgs ClassName
n) (MixedCall CppHdrCode
forall (r :: * -> *). ValueExpression r => MixedCall r
funcAppMixedArgs ClassName
n)
extFuncAppMixedArgs :: ClassName -> MixedCall (p CppSrcCode CppHdrCode)
extFuncAppMixedArgs ClassName
l ClassName
n = (State ValueState (CppSrcCode TypeData)
-> [SrcState ValueState Value]
-> [(SrcState ValueState Variable, SrcState ValueState Value)]
-> SrcState ValueState Value)
-> (State ValueState (CppHdrCode TypeData)
-> [HdrState ValueState Value]
-> [(HdrState ValueState Variable, HdrState ValueState Value)]
-> HdrState ValueState Value)
-> PairState ValueState p TypeData
-> [SValue (p CppSrcCode CppHdrCode)]
-> [(PairState ValueState p Variable,
SValue (p CppSrcCode CppHdrCode))]
-> SValue (p CppSrcCode CppHdrCode)
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
(ClassName -> MixedCall CppSrcCode
forall (r :: * -> *). ValueExpression r => ClassName -> MixedCall r
extFuncAppMixedArgs ClassName
l ClassName
n)
(ClassName -> MixedCall CppHdrCode
forall (r :: * -> *). ValueExpression r => ClassName -> MixedCall r
extFuncAppMixedArgs ClassName
l ClassName
n)
libFuncAppMixedArgs :: ClassName -> MixedCall (p CppSrcCode CppHdrCode)
libFuncAppMixedArgs ClassName
l ClassName
n = (State ValueState (CppSrcCode TypeData)
-> [SrcState ValueState Value]
-> [(SrcState ValueState Variable, SrcState ValueState Value)]
-> SrcState ValueState Value)
-> (State ValueState (CppHdrCode TypeData)
-> [HdrState ValueState Value]
-> [(HdrState ValueState Variable, HdrState ValueState Value)]
-> HdrState ValueState Value)
-> PairState ValueState p TypeData
-> [SValue (p CppSrcCode CppHdrCode)]
-> [(PairState ValueState p Variable,
SValue (p CppSrcCode CppHdrCode))]
-> SValue (p CppSrcCode CppHdrCode)
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
(ClassName -> MixedCall CppSrcCode
forall (r :: * -> *). ValueExpression r => ClassName -> MixedCall r
extFuncAppMixedArgs ClassName
l ClassName
n)
(ClassName -> MixedCall CppHdrCode
forall (r :: * -> *). ValueExpression r => ClassName -> MixedCall r
extFuncAppMixedArgs ClassName
l ClassName
n)
lambda :: [VSBinder (p CppSrcCode CppHdrCode)]
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
lambda = ([SrcState ValueState BinderD]
-> SrcState ValueState Value -> SrcState ValueState Value)
-> ([HdrState ValueState BinderD]
-> HdrState ValueState Value -> HdrState ValueState Value)
-> [VSBinder (p CppSrcCode CppHdrCode)]
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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]
-> SrcState ValueState Value -> SrcState ValueState Value
forall (r :: * -> *).
ValueExpression r =>
[VSBinder r] -> SValue r -> SValue r
lambda [HdrState ValueState BinderD]
-> HdrState ValueState Value -> HdrState ValueState Value
forall (r :: * -> *).
ValueExpression r =>
[VSBinder r] -> SValue r -> SValue r
lambda
notNull :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
notNull = (SrcState ValueState Value -> SrcState ValueState Value)
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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 Value -> SrcState ValueState Value
forall (r :: * -> *). ValueExpression r => SValue r -> SValue r
notNull HdrState ValueState Value -> HdrState ValueState Value
forall (r :: * -> *). ValueExpression r => SValue r -> SValue r
notNull
instance (Pair p) => OOValueExpression (p CppSrcCode CppHdrCode) where
newObjMixedArgs :: MixedCtorCall (p CppSrcCode CppHdrCode)
newObjMixedArgs = (State ValueState (CppSrcCode TypeData)
-> [SrcState ValueState Value]
-> [(SrcState ValueState Variable, SrcState ValueState Value)]
-> SrcState ValueState Value)
-> (State ValueState (CppHdrCode TypeData)
-> [HdrState ValueState Value]
-> [(HdrState ValueState Variable, HdrState ValueState Value)]
-> HdrState ValueState Value)
-> MixedCtorCall (p CppSrcCode CppHdrCode)
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)
-> [SrcState ValueState Value]
-> [(SrcState ValueState Variable, SrcState ValueState Value)]
-> SrcState ValueState Value
forall (r :: * -> *). OOValueExpression r => MixedCtorCall r
newObjMixedArgs State ValueState (CppHdrCode TypeData)
-> [HdrState ValueState Value]
-> [(HdrState ValueState Variable, HdrState ValueState Value)]
-> HdrState ValueState Value
forall (r :: * -> *). OOValueExpression r => MixedCtorCall r
newObjMixedArgs
extNewObjMixedArgs :: ClassName -> MixedCtorCall (p CppSrcCode CppHdrCode)
extNewObjMixedArgs ClassName
l = (State ValueState (CppSrcCode TypeData)
-> [SrcState ValueState Value]
-> [(SrcState ValueState Variable, SrcState ValueState Value)]
-> SrcState ValueState Value)
-> (State ValueState (CppHdrCode TypeData)
-> [HdrState ValueState Value]
-> [(HdrState ValueState Variable, HdrState ValueState Value)]
-> HdrState ValueState Value)
-> MixedCtorCall (p CppSrcCode CppHdrCode)
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
forall (r :: * -> *).
OOValueExpression r =>
ClassName -> MixedCtorCall r
extNewObjMixedArgs ClassName
l)
(MixedCall CppHdrCode
forall (r :: * -> *).
OOValueExpression r =>
ClassName -> MixedCtorCall r
extNewObjMixedArgs ClassName
l)
libNewObjMixedArgs :: ClassName -> MixedCtorCall (p CppSrcCode CppHdrCode)
libNewObjMixedArgs ClassName
l = (State ValueState (CppSrcCode TypeData)
-> [SrcState ValueState Value]
-> [(SrcState ValueState Variable, SrcState ValueState Value)]
-> SrcState ValueState Value)
-> (State ValueState (CppHdrCode TypeData)
-> [HdrState ValueState Value]
-> [(HdrState ValueState Variable, HdrState ValueState Value)]
-> HdrState ValueState Value)
-> MixedCtorCall (p CppSrcCode CppHdrCode)
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
forall (r :: * -> *).
OOValueExpression r =>
ClassName -> MixedCtorCall r
extNewObjMixedArgs ClassName
l)
(MixedCall CppHdrCode
forall (r :: * -> *).
OOValueExpression r =>
ClassName -> MixedCtorCall r
extNewObjMixedArgs ClassName
l)
instance (Pair p) => RenderValue (p CppSrcCode CppHdrCode) where
inputFunc :: SValue (p CppSrcCode CppHdrCode)
inputFunc = (CppSrcCode Value
-> CppHdrCode Value -> p CppSrcCode CppHdrCode Value)
-> SrcState ValueState Value
-> HdrState ValueState Value
-> SValue (p CppSrcCode CppHdrCode)
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair SrcState ValueState Value
forall (r :: * -> *). RenderValue r => SValue r
inputFunc HdrState ValueState Value
forall (r :: * -> *). RenderValue r => SValue r
inputFunc
printFunc :: SValue (p CppSrcCode CppHdrCode)
printFunc = (CppSrcCode Value
-> CppHdrCode Value -> p CppSrcCode CppHdrCode Value)
-> SrcState ValueState Value
-> HdrState ValueState Value
-> SValue (p CppSrcCode CppHdrCode)
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair SrcState ValueState Value
forall (r :: * -> *). RenderValue r => SValue r
printFunc HdrState ValueState Value
forall (r :: * -> *). RenderValue r => SValue r
printFunc
printLnFunc :: SValue (p CppSrcCode CppHdrCode)
printLnFunc = (CppSrcCode Value
-> CppHdrCode Value -> p CppSrcCode CppHdrCode Value)
-> SrcState ValueState Value
-> HdrState ValueState Value
-> SValue (p CppSrcCode CppHdrCode)
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair SrcState ValueState Value
forall (r :: * -> *). RenderValue r => SValue r
printLnFunc HdrState ValueState Value
forall (r :: * -> *). RenderValue r => SValue r
printLnFunc
printFileFunc :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
printFileFunc = (SrcState ValueState Value -> SrcState ValueState Value)
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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 Value -> SrcState ValueState Value
forall (r :: * -> *). RenderValue r => SValue r -> SValue r
printFileFunc HdrState ValueState Value -> HdrState ValueState Value
forall (r :: * -> *). RenderValue r => SValue r -> SValue r
printFileFunc
printFileLnFunc :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
printFileLnFunc = (SrcState ValueState Value -> SrcState ValueState Value)
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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 Value -> SrcState ValueState Value
forall (r :: * -> *). RenderValue r => SValue r -> SValue r
printFileLnFunc HdrState ValueState Value -> HdrState ValueState Value
forall (r :: * -> *). RenderValue r => SValue r -> SValue r
printFileLnFunc
cast :: VS (p CppSrcCode CppHdrCode TypeData)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
cast = (State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Value -> SrcState ValueState Value)
-> (State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Value -> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode TypeData)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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 Value -> SrcState ValueState Value
forall (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> SValue r -> SValue r
cast State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Value -> HdrState ValueState Value
forall (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> SValue r -> SValue r
cast
call :: Maybe ClassName -> Maybe Doc -> MixedCall (p CppSrcCode CppHdrCode)
call Maybe ClassName
l Maybe Doc
o ClassName
n = (State ValueState (CppSrcCode TypeData)
-> [SrcState ValueState Value]
-> [(SrcState ValueState Variable, SrcState ValueState Value)]
-> SrcState ValueState Value)
-> (State ValueState (CppHdrCode TypeData)
-> [HdrState ValueState Value]
-> [(HdrState ValueState Variable, HdrState ValueState Value)]
-> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode TypeData)
-> [SValue (p CppSrcCode CppHdrCode)]
-> [(PairState ValueState p Variable,
SValue (p CppSrcCode CppHdrCode))]
-> SValue (p CppSrcCode CppHdrCode)
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 ClassName -> Maybe Doc -> MixedCall CppSrcCode
forall (r :: * -> *).
RenderValue r =>
Maybe ClassName -> Maybe Doc -> MixedCall r
call Maybe ClassName
l Maybe Doc
o ClassName
n) (Maybe ClassName -> Maybe Doc -> MixedCall CppHdrCode
forall (r :: * -> *).
RenderValue r =>
Maybe ClassName -> Maybe Doc -> MixedCall r
call Maybe ClassName
l Maybe Doc
o ClassName
n)
valFromData :: Maybe Int
-> Maybe Integer
-> VS (p CppSrcCode CppHdrCode TypeData)
-> Doc
-> SValue (p CppSrcCode CppHdrCode)
valFromData Maybe Int
p Maybe Integer
i VS (p CppSrcCode CppHdrCode TypeData)
t' Doc
d = (State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Value)
-> (State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Value)
-> VS (p CppSrcCode CppHdrCode TypeData)
-> SValue (p CppSrcCode CppHdrCode)
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
-> SrcState ValueState Value
forall (r :: * -> *).
RenderValue r =>
Maybe Int -> Maybe Integer -> VS (r TypeData) -> Doc -> SValue r
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 (r :: * -> *).
RenderValue r =>
Maybe Int -> Maybe Integer -> VS (r TypeData) -> Doc -> SValue r
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) where
valuePrec :: p CppSrcCode CppHdrCode Value -> Maybe Int
valuePrec p CppSrcCode CppHdrCode Value
v = CppSrcCode Value -> Maybe Int
forall (r :: * -> *). ValueElim r => r Value -> 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 (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
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 (r :: * -> *). ValueElim r => r Value -> 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 (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
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 (r :: * -> *). ValueElim r => r Value -> Doc
RC.value (CppSrcCode Value -> Doc) -> CppSrcCode Value -> Doc
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode Value -> CppSrcCode Value
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode Value
v
instance (Pair p) => InternalValueExp (p CppSrcCode CppHdrCode) where
objMethodCallMixedArgs' :: ClassName
-> VS (p CppSrcCode CppHdrCode TypeData)
-> SValue (p CppSrcCode CppHdrCode)
-> [SValue (p CppSrcCode CppHdrCode)]
-> NamedArgs (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
objMethodCallMixedArgs' ClassName
f = (State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Value
-> [SrcState ValueState Value]
-> [(SrcState ValueState Variable, SrcState ValueState Value)]
-> SrcState ValueState 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)
-> SValue (p CppSrcCode CppHdrCode)
-> [SValue (p CppSrcCode CppHdrCode)]
-> NamedArgs (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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
(ClassName
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Value
-> [SrcState ValueState Value]
-> [(SrcState ValueState Variable, SrcState ValueState Value)]
-> SrcState ValueState Value
forall (r :: * -> *).
InternalValueExp r =>
ClassName
-> VS (r TypeData)
-> SValue r
-> [SValue r]
-> NamedArgs r
-> SValue r
objMethodCallMixedArgs' ClassName
f)
(ClassName
-> State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Value
-> [HdrState ValueState Value]
-> [(HdrState ValueState Variable, HdrState ValueState Value)]
-> HdrState ValueState Value
forall (r :: * -> *).
InternalValueExp r =>
ClassName
-> VS (r TypeData)
-> SValue r
-> [SValue r]
-> NamedArgs r
-> SValue r
objMethodCallMixedArgs' ClassName
f)
classMethodCallMixedArgs' :: ClassName
-> VS (p CppSrcCode CppHdrCode TypeData)
-> VS (p CppSrcCode CppHdrCode TypeData)
-> [SValue (p CppSrcCode CppHdrCode)]
-> NamedArgs (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
classMethodCallMixedArgs' ClassName
f = (State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData)
-> [SrcState ValueState Value]
-> [(SrcState ValueState Variable, SrcState ValueState Value)]
-> SrcState ValueState 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)
-> [SValue (p CppSrcCode CppHdrCode)]
-> NamedArgs (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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
(ClassName
-> State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData)
-> [SrcState ValueState Value]
-> [(SrcState ValueState Variable, SrcState ValueState Value)]
-> SrcState ValueState Value
forall (r :: * -> *).
InternalValueExp r =>
ClassName
-> VS (r TypeData)
-> VS (r TypeData)
-> [SValue r]
-> NamedArgs r
-> SValue r
classMethodCallMixedArgs' ClassName
f)
(ClassName
-> State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData)
-> [HdrState ValueState Value]
-> [(HdrState ValueState Variable, HdrState ValueState Value)]
-> HdrState ValueState Value
forall (r :: * -> *).
InternalValueExp r =>
ClassName
-> VS (r TypeData)
-> VS (r TypeData)
-> [SValue r]
-> NamedArgs r
-> SValue r
classMethodCallMixedArgs' ClassName
f)
instance (Pair p) => FunctionSym (p CppSrcCode CppHdrCode) where
instance (Pair p) => OOFunctionSym (p CppSrcCode CppHdrCode) where
func :: ClassName
-> VS (p CppSrcCode CppHdrCode TypeData)
-> [SValue (p CppSrcCode CppHdrCode)]
-> VS (p CppSrcCode CppHdrCode FuncData)
func ClassName
l = (State ValueState (CppSrcCode TypeData)
-> [SrcState ValueState Value] -> SrcState ValueState FuncData)
-> (State ValueState (CppHdrCode TypeData)
-> [HdrState ValueState Value] -> HdrState ValueState FuncData)
-> VS (p CppSrcCode CppHdrCode TypeData)
-> [SValue (p CppSrcCode CppHdrCode)]
-> 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 (ClassName
-> State ValueState (CppSrcCode TypeData)
-> [SrcState ValueState Value]
-> SrcState ValueState FuncData
forall (r :: * -> *).
OOFunctionSym r =>
ClassName -> VS (r TypeData) -> [SValue r] -> VS (r FuncData)
func ClassName
l) (ClassName
-> State ValueState (CppHdrCode TypeData)
-> [HdrState ValueState Value]
-> HdrState ValueState FuncData
forall (r :: * -> *).
OOFunctionSym r =>
ClassName -> VS (r TypeData) -> [SValue r] -> VS (r FuncData)
func ClassName
l)
objAccess :: SValue (p CppSrcCode CppHdrCode)
-> VS (p CppSrcCode CppHdrCode FuncData)
-> SValue (p CppSrcCode CppHdrCode)
objAccess = (SrcState ValueState Value
-> SrcState ValueState FuncData -> SrcState ValueState Value)
-> (HdrState ValueState Value
-> HdrState ValueState FuncData -> HdrState ValueState Value)
-> SValue (p CppSrcCode CppHdrCode)
-> VS (p CppSrcCode CppHdrCode FuncData)
-> SValue (p CppSrcCode CppHdrCode)
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 Value
-> SrcState ValueState FuncData -> SrcState ValueState Value
forall (r :: * -> *).
OOFunctionSym r =>
SValue r -> VS (r FuncData) -> SValue r
objAccess HdrState ValueState Value
-> HdrState ValueState FuncData -> HdrState ValueState Value
forall (r :: * -> *).
OOFunctionSym r =>
SValue r -> VS (r FuncData) -> SValue r
objAccess
instance (Pair p) => GetSet (p CppSrcCode CppHdrCode) where
get :: SValue (p CppSrcCode CppHdrCode)
-> SVariable (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
get = (SrcState ValueState Value
-> SrcState ValueState Variable -> SrcState ValueState Value)
-> (HdrState ValueState Value
-> HdrState ValueState Variable -> HdrState ValueState Value)
-> SValue (p CppSrcCode CppHdrCode)
-> SVariable (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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 Value
-> SrcState ValueState Variable -> SrcState ValueState Value
forall (r :: * -> *).
GetSet r =>
SValue r -> SVariable r -> SValue r
get HdrState ValueState Value
-> HdrState ValueState Variable -> HdrState ValueState Value
forall (r :: * -> *).
GetSet r =>
SValue r -> SVariable r -> SValue r
get
set :: SValue (p CppSrcCode CppHdrCode)
-> SVariable (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
set = (SrcState ValueState Value
-> SrcState ValueState Variable
-> SrcState ValueState Value
-> SrcState ValueState Value)
-> (HdrState ValueState Value
-> HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState ValueState Value)
-> SValue (p CppSrcCode CppHdrCode)
-> SVariable (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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 Value
-> SrcState ValueState Variable
-> SrcState ValueState Value
-> SrcState ValueState Value
forall (r :: * -> *).
GetSet r =>
SValue r -> SVariable r -> SValue r -> SValue r
set HdrState ValueState Value
-> HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState ValueState Value
forall (r :: * -> *).
GetSet r =>
SValue r -> SVariable r -> SValue r -> SValue r
set
instance (Pair p) => IndexTranslator (p CppSrcCode CppHdrCode) where
intToIndex :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
intToIndex = (SrcState ValueState Value -> SrcState ValueState Value)
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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 Value -> SrcState ValueState Value
forall (r :: * -> *). IndexTranslator r => SValue r -> SValue r
intToIndex HdrState ValueState Value -> HdrState ValueState Value
forall (r :: * -> *). IndexTranslator r => SValue r -> SValue r
intToIndex
indexToInt :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
indexToInt = (SrcState ValueState Value -> SrcState ValueState Value)
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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 Value -> SrcState ValueState Value
forall (r :: * -> *). IndexTranslator r => SValue r -> SValue r
indexToInt HdrState ValueState Value -> HdrState ValueState Value
forall (r :: * -> *). IndexTranslator r => SValue r -> SValue r
indexToInt
instance (Pair p) => Reference (p CppSrcCode CppHdrCode) where
makeRef :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
makeRef = (SrcState ValueState Value -> SrcState ValueState Value)
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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 Value -> SrcState ValueState Value
forall (r :: * -> *). Reference r => SValue r -> SValue r
makeRef HdrState ValueState Value -> HdrState ValueState Value
forall (r :: * -> *). Reference r => SValue r -> SValue r
makeRef
maybeDeref :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
maybeDeref = (SrcState ValueState Value -> SrcState ValueState Value)
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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 Value -> SrcState ValueState Value
forall (r :: * -> *). Reference r => SValue r -> SValue r
maybeDeref HdrState ValueState Value -> HdrState ValueState Value
forall (r :: * -> *). Reference r => SValue r -> SValue r
maybeDeref
instance (Pair p) => Array (p CppSrcCode CppHdrCode) where
arrayElem :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> SVariable (p CppSrcCode CppHdrCode)
arrayElem = (SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Variable)
-> (HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Variable)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> SVariable (p CppSrcCode CppHdrCode)
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 Value
-> SrcState ValueState Value -> SrcState ValueState Variable
forall (r :: * -> *).
Array r =>
SValue r -> SValue r -> SVariable r
arrayElem HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Variable
forall (r :: * -> *).
Array r =>
SValue r -> SValue r -> SVariable r
arrayElem
arrayLength :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
arrayLength = (SrcState ValueState Value -> SrcState ValueState Value)
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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 Value -> SrcState ValueState Value
forall (r :: * -> *). Array r => SValue r -> SValue r
arrayLength HdrState ValueState Value -> HdrState ValueState Value
forall (r :: * -> *). Array r => SValue r -> SValue r
arrayLength
arrayCopy :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
arrayCopy = (SrcState ValueState Value -> SrcState ValueState Value)
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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 Value -> SrcState ValueState Value
forall (r :: * -> *). Array r => SValue r -> SValue r
arrayCopy HdrState ValueState Value -> HdrState ValueState Value
forall (r :: * -> *). Array r => SValue r -> SValue r
arrayCopy
instance (Pair p) => List (p CppSrcCode CppHdrCode) (Doc, Terminator) where
listSize :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
listSize = (SrcState ValueState Value -> SrcState ValueState Value)
-> (HdrState ValueState Value -> HdrState ValueState Value)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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 Value -> SrcState ValueState Value
forall (r :: * -> *) smt. List r smt => SValue r -> SValue r
listSize HdrState ValueState Value -> HdrState ValueState Value
forall (r :: * -> *) smt. List r smt => SValue r -> SValue r
listSize
listAdd :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
listAdd SValue (p CppSrcCode CppHdrCode)
l SValue (p CppSrcCode CppHdrCode)
i SValue (p CppSrcCode CppHdrCode)
v = (SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator))
-> (HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator))
-> PairState MethodState p Value
-> PairState MethodState p Value
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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 Value
-> SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
List r smt =>
SValue r -> SValue r -> SValue r -> MS (r smt)
listAdd HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
List r smt =>
SValue r -> SValue r -> SValue r -> MS (r smt)
listAdd (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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 SValue (p CppSrcCode CppHdrCode)
l) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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 SValue (p CppSrcCode CppHdrCode)
i) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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 SValue (p CppSrcCode CppHdrCode)
v)
listAppend :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
listAppend SValue (p CppSrcCode CppHdrCode)
l SValue (p CppSrcCode CppHdrCode)
v = (SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator))
-> (HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator))
-> PairState MethodState p Value
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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 Value
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
List r smt =>
SValue r -> SValue r -> MS (r smt)
listAppend HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
List r smt =>
SValue r -> SValue r -> MS (r smt)
listAppend (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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 SValue (p CppSrcCode CppHdrCode)
l) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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 SValue (p CppSrcCode CppHdrCode)
v)
listAccess :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
listAccess = (SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Value)
-> (HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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 Value
-> SrcState ValueState Value -> SrcState ValueState Value
forall (r :: * -> *) smt.
List r smt =>
SValue r -> SValue r -> SValue r
listAccess HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
forall (r :: * -> *) smt.
List r smt =>
SValue r -> SValue r -> SValue r
listAccess
listSet :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
listSet SValue (p CppSrcCode CppHdrCode)
l SValue (p CppSrcCode CppHdrCode)
i SValue (p CppSrcCode CppHdrCode)
v = (SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator))
-> (HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator))
-> PairState MethodState p Value
-> PairState MethodState p Value
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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 Value
-> SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
List r smt =>
SValue r -> SValue r -> SValue r -> MS (r smt)
listSet HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
List r smt =>
SValue r -> SValue r -> SValue r -> MS (r smt)
listSet (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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 SValue (p CppSrcCode CppHdrCode)
l) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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 SValue (p CppSrcCode CppHdrCode)
i) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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 SValue (p CppSrcCode CppHdrCode)
v)
indexOf :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
indexOf = (SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Value)
-> (HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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 Value
-> SrcState ValueState Value -> SrcState ValueState Value
forall (r :: * -> *) smt.
List r smt =>
SValue r -> SValue r -> SValue r
indexOf HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
forall (r :: * -> *) smt.
List r smt =>
SValue r -> SValue r -> SValue r
indexOf
instance (Pair p) => Set (p CppSrcCode CppHdrCode) where
contains :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
contains = (SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Value)
-> (HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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 Value
-> SrcState ValueState Value -> SrcState ValueState Value
forall (r :: * -> *). Set r => SValue r -> SValue r -> SValue r
contains HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
forall (r :: * -> *). Set r => SValue r -> SValue r -> SValue r
contains
setAdd :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
setAdd = (SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Value)
-> (HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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 Value
-> SrcState ValueState Value -> SrcState ValueState Value
forall (r :: * -> *). Set r => SValue r -> SValue r -> SValue r
setAdd HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
forall (r :: * -> *). Set r => SValue r -> SValue r -> SValue r
setAdd
setRemove :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
setRemove = (SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Value)
-> (HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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 Value
-> SrcState ValueState Value -> SrcState ValueState Value
forall (r :: * -> *). Set r => SValue r -> SValue r -> SValue r
setRemove HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
forall (r :: * -> *). Set r => SValue r -> SValue r -> SValue r
setRemove
setUnion :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
setUnion = (SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Value)
-> (HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
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 Value
-> SrcState ValueState Value -> SrcState ValueState Value
forall (r :: * -> *). Set r => SValue r -> SValue r -> SValue r
setUnion HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
forall (r :: * -> *). Set r => SValue r -> SValue r -> SValue r
setUnion
instance (Pair p) => InternalList (p CppSrcCode CppHdrCode) where
listSlice' :: Maybe (SValue (p CppSrcCode CppHdrCode))
-> Maybe (SValue (p CppSrcCode CppHdrCode))
-> Maybe (SValue (p CppSrcCode CppHdrCode))
-> SVariable (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> MS (p CppSrcCode CppHdrCode Doc)
listSlice' Maybe (SValue (p CppSrcCode CppHdrCode))
b Maybe (SValue (p CppSrcCode CppHdrCode))
e Maybe (SValue (p CppSrcCode CppHdrCode))
s SVariable (p CppSrcCode CppHdrCode)
vr SValue (p CppSrcCode CppHdrCode)
vl = (SrcState ValueState Variable
-> SrcState ValueState 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 (SrcState ValueState Value)
-> Maybe (SrcState ValueState Value)
-> Maybe (SrcState ValueState Value)
-> SrcState ValueState Variable
-> SrcState ValueState Value
-> SrcState MethodState Doc
forall (r :: * -> *).
InternalList r =>
Maybe (SValue r)
-> Maybe (SValue r)
-> Maybe (SValue r)
-> SVariable r
-> SValue r
-> MS (r Doc)
listSlice' ((SValue (p CppSrcCode CppHdrCode) -> SrcState ValueState Value)
-> Maybe (SValue (p CppSrcCode CppHdrCode))
-> Maybe (SrcState ValueState Value)
forall a b. (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((p CppSrcCode CppHdrCode Value -> CppSrcCode Value)
-> SValue (p CppSrcCode CppHdrCode) -> SrcState ValueState Value
forall a b s. (a -> b) -> State s a -> State s b
onStateValue p CppSrcCode CppHdrCode Value -> CppSrcCode Value
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst) Maybe (SValue (p CppSrcCode CppHdrCode))
b) ((SValue (p CppSrcCode CppHdrCode) -> SrcState ValueState Value)
-> Maybe (SValue (p CppSrcCode CppHdrCode))
-> Maybe (SrcState ValueState Value)
forall a b. (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((p CppSrcCode CppHdrCode Value -> CppSrcCode Value)
-> SValue (p CppSrcCode CppHdrCode) -> SrcState ValueState Value
forall a b s. (a -> b) -> State s a -> State s b
onStateValue p CppSrcCode CppHdrCode Value -> CppSrcCode Value
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst) Maybe (SValue (p CppSrcCode CppHdrCode))
e)
((SValue (p CppSrcCode CppHdrCode) -> SrcState ValueState Value)
-> Maybe (SValue (p CppSrcCode CppHdrCode))
-> Maybe (SrcState ValueState Value)
forall a b. (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((p CppSrcCode CppHdrCode Value -> CppSrcCode Value)
-> SValue (p CppSrcCode CppHdrCode) -> SrcState ValueState Value
forall a b s. (a -> b) -> State s a -> State s b
onStateValue p CppSrcCode CppHdrCode Value -> CppSrcCode Value
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst) Maybe (SValue (p CppSrcCode CppHdrCode))
s))
(Maybe (HdrState ValueState Value)
-> Maybe (HdrState ValueState Value)
-> Maybe (HdrState ValueState Value)
-> HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState MethodState Doc
forall (r :: * -> *).
InternalList r =>
Maybe (SValue r)
-> Maybe (SValue r)
-> Maybe (SValue r)
-> SVariable r
-> SValue r
-> MS (r Doc)
listSlice' ((SValue (p CppSrcCode CppHdrCode) -> HdrState ValueState Value)
-> Maybe (SValue (p CppSrcCode CppHdrCode))
-> Maybe (HdrState ValueState Value)
forall a b. (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((p CppSrcCode CppHdrCode Value -> CppHdrCode Value)
-> SValue (p CppSrcCode CppHdrCode) -> HdrState ValueState Value
forall a b s. (a -> b) -> State s a -> State s b
onStateValue p CppSrcCode CppHdrCode Value -> CppHdrCode Value
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd) Maybe (SValue (p CppSrcCode CppHdrCode))
b) ((SValue (p CppSrcCode CppHdrCode) -> HdrState ValueState Value)
-> Maybe (SValue (p CppSrcCode CppHdrCode))
-> Maybe (HdrState ValueState Value)
forall a b. (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((p CppSrcCode CppHdrCode Value -> CppHdrCode Value)
-> SValue (p CppSrcCode CppHdrCode) -> HdrState ValueState Value
forall a b s. (a -> b) -> State s a -> State s b
onStateValue p CppSrcCode CppHdrCode Value -> CppHdrCode Value
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd) Maybe (SValue (p CppSrcCode CppHdrCode))
e)
((SValue (p CppSrcCode CppHdrCode) -> HdrState ValueState Value)
-> Maybe (SValue (p CppSrcCode CppHdrCode))
-> Maybe (HdrState ValueState Value)
forall a b. (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((p CppSrcCode CppHdrCode Value -> CppHdrCode Value)
-> SValue (p CppSrcCode CppHdrCode) -> HdrState ValueState Value
forall a b s. (a -> b) -> State s a -> State s b
onStateValue p CppSrcCode CppHdrCode Value -> CppHdrCode Value
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd) Maybe (SValue (p CppSrcCode CppHdrCode))
s))
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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 SVariable (p CppSrcCode CppHdrCode)
vr) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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 SValue (p CppSrcCode CppHdrCode)
vl)
instance (Pair p) => InternalGetSet (p CppSrcCode CppHdrCode) where
getFunc :: SVariable (p CppSrcCode CppHdrCode)
-> VS (p CppSrcCode CppHdrCode FuncData)
getFunc = (SrcState ValueState Variable -> SrcState ValueState FuncData)
-> (HdrState ValueState Variable -> HdrState ValueState FuncData)
-> SVariable (p CppSrcCode CppHdrCode)
-> 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 :: * -> *).
InternalGetSet r =>
SVariable r -> VS (r FuncData)
getFunc HdrState ValueState Variable -> HdrState ValueState FuncData
forall (r :: * -> *).
InternalGetSet r =>
SVariable r -> VS (r FuncData)
getFunc
setFunc :: VS (p CppSrcCode CppHdrCode TypeData)
-> SVariable (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> VS (p CppSrcCode CppHdrCode FuncData)
setFunc = (State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable
-> SrcState ValueState Value
-> SrcState ValueState FuncData)
-> (State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState ValueState FuncData)
-> VS (p CppSrcCode CppHdrCode TypeData)
-> SVariable (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> 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
-> SrcState ValueState Value
-> SrcState ValueState FuncData
forall (r :: * -> *).
InternalGetSet r =>
VS (r TypeData) -> SVariable r -> SValue r -> VS (r FuncData)
setFunc State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState ValueState FuncData
forall (r :: * -> *).
InternalGetSet r =>
VS (r TypeData) -> SVariable r -> SValue r -> VS (r FuncData)
setFunc
instance (Pair p) => InternalListFunc (p CppSrcCode CppHdrCode) where
listAccessFunc :: VS (p CppSrcCode CppHdrCode TypeData)
-> SValue (p CppSrcCode CppHdrCode)
-> VS (p CppSrcCode CppHdrCode FuncData)
listAccessFunc = (State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Value -> SrcState ValueState FuncData)
-> (State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Value -> HdrState ValueState FuncData)
-> VS (p CppSrcCode CppHdrCode TypeData)
-> SValue (p CppSrcCode CppHdrCode)
-> 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)
-> SrcState ValueState Value -> SrcState ValueState FuncData
forall (r :: * -> *).
InternalListFunc r =>
VS (r TypeData) -> SValue r -> VS (r FuncData)
listAccessFunc State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Value -> HdrState ValueState FuncData
forall (r :: * -> *).
InternalListFunc r =>
VS (r TypeData) -> SValue r -> VS (r FuncData)
listAccessFunc
instance Pair p => BinderSym (p CppSrcCode CppHdrCode) where
binder :: ClassName
-> VS (p CppSrcCode CppHdrCode TypeData)
-> VSBinder (p CppSrcCode CppHdrCode)
binder ClassName
nm = (State ValueState (CppSrcCode TypeData)
-> SrcState ValueState BinderD)
-> (State ValueState (CppHdrCode TypeData)
-> HdrState ValueState BinderD)
-> VS (p CppSrcCode CppHdrCode TypeData)
-> VSBinder (p CppSrcCode CppHdrCode)
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 (ClassName
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState BinderD
forall (r :: * -> *).
BinderSym r =>
ClassName -> VS (r TypeData) -> VSBinder r
binder ClassName
nm) (ClassName
-> State ValueState (CppHdrCode TypeData)
-> HdrState ValueState BinderD
forall (r :: * -> *).
BinderSym r =>
ClassName -> VS (r TypeData) -> VSBinder r
binder ClassName
nm)
instance (Pair p) => BinderElim (p CppSrcCode CppHdrCode) where
binderName :: p CppSrcCode CppHdrCode BinderD -> ClassName
binderName p CppSrcCode CppHdrCode BinderD
b = BinderD -> ClassName
bindName (BinderD -> ClassName) -> BinderD -> ClassName
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 (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair (CppSrcCode BinderD -> CppSrcCode TypeData
forall (r :: * -> *). BinderElim r => r BinderD -> r TypeData
binderType (CppSrcCode BinderD -> CppSrcCode TypeData)
-> CppSrcCode BinderD -> CppSrcCode TypeData
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode BinderD -> CppSrcCode BinderD
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode BinderD
b) (CppHdrCode BinderD -> CppHdrCode TypeData
forall (r :: * -> *). BinderElim r => r BinderD -> r TypeData
binderType (CppHdrCode BinderD -> CppHdrCode TypeData)
-> CppHdrCode BinderD -> CppHdrCode TypeData
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode BinderD -> CppHdrCode BinderD
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd p CppSrcCode CppHdrCode BinderD
b)
instance (Pair p) => InternalBinderElim (p CppSrcCode CppHdrCode) where
binderElim :: p CppSrcCode CppHdrCode BinderD -> Doc
binderElim p CppSrcCode CppHdrCode BinderD
b = CppSrcCode BinderD -> Doc
forall (r :: * -> *). InternalBinderElim r => r BinderD -> Doc
binderElim (CppSrcCode BinderD -> Doc) -> CppSrcCode BinderD -> Doc
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode BinderD -> CppSrcCode BinderD
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode BinderD
b
instance (Pair p) => RenderFunction (p CppSrcCode CppHdrCode) 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 :: * -> *).
RenderFunction r =>
Doc -> VS (r TypeData) -> VS (r FuncData)
funcFromData Doc
d) (Doc
-> State ValueState (CppHdrCode TypeData)
-> HdrState ValueState FuncData
forall (r :: * -> *).
RenderFunction r =>
Doc -> VS (r TypeData) -> VS (r FuncData)
funcFromData Doc
d)
instance (Pair p) => FunctionElim (p CppSrcCode CppHdrCode) 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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair (CppSrcCode FuncData -> CppSrcCode TypeData
forall (r :: * -> *). FunctionElim r => r FuncData -> r TypeData
functionType (CppSrcCode FuncData -> CppSrcCode TypeData)
-> CppSrcCode FuncData -> CppSrcCode TypeData
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode FuncData -> CppSrcCode FuncData
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode FuncData
f) (CppHdrCode FuncData -> CppHdrCode TypeData
forall (r :: * -> *). FunctionElim r => r FuncData -> r TypeData
functionType (CppHdrCode FuncData -> CppHdrCode TypeData)
-> CppHdrCode FuncData -> CppHdrCode TypeData
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode FuncData -> CppHdrCode FuncData
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
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 :: * -> *). FunctionElim r => 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 (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode FuncData
f
instance (Pair p) => InternalAssignStmt (p CppSrcCode CppHdrCode) (Doc, Terminator) where
multiAssign :: [SVariable (p CppSrcCode CppHdrCode)]
-> [SValue (p CppSrcCode CppHdrCode)]
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
multiAssign [SVariable (p CppSrcCode CppHdrCode)]
vrs [SValue (p CppSrcCode CppHdrCode)]
vls = ([SrcState ValueState Variable]
-> [SrcState ValueState Value]
-> SrcState MethodState (Doc, Terminator))
-> ([HdrState ValueState Variable]
-> [HdrState ValueState Value]
-> HdrState MethodState (Doc, Terminator))
-> [PairState MethodState p Variable]
-> [PairState MethodState p Value]
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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]
-> [SrcState ValueState Value]
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
InternalAssignStmt r smt =>
[SVariable r] -> [SValue r] -> MS (r smt)
multiAssign [HdrState ValueState Variable]
-> [HdrState ValueState Value]
-> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
InternalAssignStmt r smt =>
[SVariable r] -> [SValue r] -> MS (r smt)
multiAssign
((SVariable (p CppSrcCode CppHdrCode)
-> PairState MethodState p Variable)
-> [SVariable (p CppSrcCode CppHdrCode)]
-> [PairState MethodState p Variable]
forall a b. (a -> b) -> [a] -> [b]
map (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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) [SVariable (p CppSrcCode CppHdrCode)]
vrs) ((SValue (p CppSrcCode CppHdrCode) -> PairState MethodState p Value)
-> [SValue (p CppSrcCode CppHdrCode)]
-> [PairState MethodState p Value]
forall a b. (a -> b) -> [a] -> [b]
map (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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) [SValue (p CppSrcCode CppHdrCode)]
vls)
instance (Pair p) => InternalIOStmt (p CppSrcCode CppHdrCode) (Doc, Terminator) where
printSt :: Bool
-> Maybe (SValue (p CppSrcCode CppHdrCode))
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
printSt Bool
nl Maybe (SValue (p CppSrcCode CppHdrCode))
f SValue (p CppSrcCode CppHdrCode)
p SValue (p CppSrcCode CppHdrCode)
v = (SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator))
-> (HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator))
-> PairState MethodState p Value
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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 (SrcState ValueState Value)
-> SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
InternalIOStmt r smt =>
Bool -> Maybe (SValue r) -> SValue r -> SValue r -> MS (r smt)
printSt Bool
nl ((SValue (p CppSrcCode CppHdrCode) -> SrcState ValueState Value)
-> Maybe (SValue (p CppSrcCode CppHdrCode))
-> Maybe (SrcState ValueState Value)
forall a b. (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((p CppSrcCode CppHdrCode Value -> CppSrcCode Value)
-> SValue (p CppSrcCode CppHdrCode) -> SrcState ValueState Value
forall a b s. (a -> b) -> State s a -> State s b
onStateValue p CppSrcCode CppHdrCode Value -> CppSrcCode Value
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst) Maybe (SValue (p CppSrcCode CppHdrCode))
f))
(Bool
-> Maybe (HdrState ValueState Value)
-> HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
InternalIOStmt r smt =>
Bool -> Maybe (SValue r) -> SValue r -> SValue r -> MS (r smt)
printSt Bool
nl ((SValue (p CppSrcCode CppHdrCode) -> HdrState ValueState Value)
-> Maybe (SValue (p CppSrcCode CppHdrCode))
-> Maybe (HdrState ValueState Value)
forall a b. (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((p CppSrcCode CppHdrCode Value -> CppHdrCode Value)
-> SValue (p CppSrcCode CppHdrCode) -> HdrState ValueState Value
forall a b s. (a -> b) -> State s a -> State s b
onStateValue p CppSrcCode CppHdrCode Value -> CppHdrCode Value
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd) Maybe (SValue (p CppSrcCode CppHdrCode))
f))
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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 SValue (p CppSrcCode CppHdrCode)
p) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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 SValue (p CppSrcCode CppHdrCode)
v)
instance (Pair p) => InternalControlStmt (p CppSrcCode CppHdrCode) (Doc, Terminator) where
multiReturn :: [SValue (p CppSrcCode CppHdrCode)]
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
multiReturn = ([SrcState ValueState Value]
-> SrcState MethodState (Doc, Terminator))
-> ([HdrState ValueState Value]
-> HdrState MethodState (Doc, Terminator))
-> [PairState MethodState p Value]
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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 ValueState Value]
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
InternalControlStmt r smt =>
[SValue r] -> MS (r smt)
multiReturn [HdrState ValueState Value]
-> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
InternalControlStmt r smt =>
[SValue r] -> MS (r smt)
multiReturn ([PairState MethodState p Value]
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator)))
-> ([SValue (p CppSrcCode CppHdrCode)]
-> [PairState MethodState p Value])
-> [SValue (p CppSrcCode CppHdrCode)]
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (SValue (p CppSrcCode CppHdrCode) -> PairState MethodState p Value)
-> [SValue (p CppSrcCode CppHdrCode)]
-> [PairState MethodState p Value]
forall a b. (a -> b) -> [a] -> [b]
map (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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) (Doc, Terminator) where
stmt :: MS (p CppSrcCode CppHdrCode (Doc, Terminator))
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
stmt = (SrcState MethodState (Doc, Terminator)
-> SrcState MethodState (Doc, Terminator))
-> (HdrState MethodState (Doc, Terminator)
-> HdrState MethodState (Doc, Terminator))
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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, Terminator)
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
RenderStatement r smt =>
MS (r smt) -> MS (r smt)
stmt HdrState MethodState (Doc, Terminator)
-> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
RenderStatement r smt =>
MS (r smt) -> MS (r smt)
stmt
loopStmt :: MS (p CppSrcCode CppHdrCode (Doc, Terminator))
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
loopStmt = (SrcState MethodState (Doc, Terminator)
-> SrcState MethodState (Doc, Terminator))
-> (HdrState MethodState (Doc, Terminator)
-> HdrState MethodState (Doc, Terminator))
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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, Terminator)
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
RenderStatement r smt =>
MS (r smt) -> MS (r smt)
loopStmt HdrState MethodState (Doc, Terminator)
-> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
RenderStatement r smt =>
MS (r smt) -> MS (r smt)
loopStmt
stmtFromData :: Doc -> Terminator -> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
stmtFromData Doc
d Terminator
t = (CppSrcCode (Doc, Terminator)
-> CppHdrCode (Doc, Terminator)
-> p CppSrcCode CppHdrCode (Doc, Terminator))
-> SrcState MethodState (Doc, Terminator)
-> HdrState MethodState (Doc, Terminator)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode (Doc, Terminator)
-> CppHdrCode (Doc, Terminator)
-> p CppSrcCode CppHdrCode (Doc, Terminator)
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair (Doc -> Terminator -> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
RenderStatement r smt =>
Doc -> Terminator -> MS (r smt)
stmtFromData Doc
d Terminator
t) (Doc -> Terminator -> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
RenderStatement r smt =>
Doc -> Terminator -> MS (r smt)
stmtFromData Doc
d Terminator
t)
instance (Pair p) => StatementElim (p CppSrcCode CppHdrCode) (Doc, Terminator) where
statement :: p CppSrcCode CppHdrCode (Doc, Terminator) -> Doc
statement p CppSrcCode CppHdrCode (Doc, Terminator)
s = CppSrcCode (Doc, Terminator) -> Doc
forall (r :: * -> *) smt. StatementElim r smt => r smt -> Doc
RC.statement (CppSrcCode (Doc, Terminator) -> Doc)
-> CppSrcCode (Doc, Terminator) -> Doc
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode (Doc, Terminator)
-> CppSrcCode (Doc, Terminator)
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode (Doc, Terminator)
s
statementTerm :: p CppSrcCode CppHdrCode (Doc, Terminator) -> Terminator
statementTerm p CppSrcCode CppHdrCode (Doc, Terminator)
s = CppSrcCode (Doc, Terminator) -> Terminator
forall (r :: * -> *) smt.
StatementElim r smt =>
r smt -> Terminator
statementTerm (CppSrcCode (Doc, Terminator) -> Terminator)
-> CppSrcCode (Doc, Terminator) -> Terminator
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode (Doc, Terminator)
-> CppSrcCode (Doc, Terminator)
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode (Doc, Terminator)
s
instance (Pair p) => StatementSym (p CppSrcCode CppHdrCode) (Doc, Terminator) where
valStmt :: SValue (p CppSrcCode CppHdrCode)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
valStmt = (SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator))
-> (HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator))
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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 Value -> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
StatementSym r smt =>
SValue r -> MS (r smt)
valStmt HdrState ValueState Value -> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
StatementSym r smt =>
SValue r -> MS (r smt)
valStmt (PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator)))
-> (SValue (p CppSrcCode CppHdrCode)
-> PairState MethodState p Value)
-> SValue (p CppSrcCode CppHdrCode)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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
emptyStmt :: MS (p CppSrcCode CppHdrCode (Doc, Terminator))
emptyStmt = (CppSrcCode (Doc, Terminator)
-> CppHdrCode (Doc, Terminator)
-> p CppSrcCode CppHdrCode (Doc, Terminator))
-> SrcState MethodState (Doc, Terminator)
-> HdrState MethodState (Doc, Terminator)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode (Doc, Terminator)
-> CppHdrCode (Doc, Terminator)
-> p CppSrcCode CppHdrCode (Doc, Terminator)
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
multi :: [MS (p CppSrcCode CppHdrCode (Doc, Terminator))]
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
multi = ([SrcState MethodState (Doc, Terminator)]
-> SrcState MethodState (Doc, Terminator))
-> ([HdrState MethodState (Doc, Terminator)]
-> HdrState MethodState (Doc, Terminator))
-> [MS (p CppSrcCode CppHdrCode (Doc, Terminator))]
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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, Terminator)]
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
StatementSym r smt =>
[MS (r smt)] -> MS (r smt)
multi [HdrState MethodState (Doc, Terminator)]
-> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
StatementSym r smt =>
[MS (r smt)] -> MS (r smt)
multi
instance (Pair p) => AssignStatement (p CppSrcCode CppHdrCode) (Doc, Terminator) where
assign :: SVariable (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
assign SVariable (p CppSrcCode CppHdrCode)
vr SValue (p CppSrcCode CppHdrCode)
vl = (SrcState ValueState Variable
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator))
-> (HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator))
-> PairState MethodState p Variable
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
AssignStatement r smt =>
SVariable r -> SValue r -> MS (r smt)
assign HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
AssignStatement r smt =>
SVariable r -> SValue r -> MS (r smt)
assign (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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 SVariable (p CppSrcCode CppHdrCode)
vr) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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 SValue (p CppSrcCode CppHdrCode)
vl)
&-= :: SVariable (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
(&-=) SVariable (p CppSrcCode CppHdrCode)
vr SValue (p CppSrcCode CppHdrCode)
vl = (SrcState ValueState Variable
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator))
-> (HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator))
-> PairState MethodState p Variable
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
AssignStatement r smt =>
SVariable r -> SValue r -> MS (r smt)
(&-=) HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
AssignStatement r smt =>
SVariable r -> SValue r -> MS (r smt)
(&-=) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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 SVariable (p CppSrcCode CppHdrCode)
vr) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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 SValue (p CppSrcCode CppHdrCode)
vl)
&+= :: SVariable (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
(&+=) SVariable (p CppSrcCode CppHdrCode)
vr SValue (p CppSrcCode CppHdrCode)
vl = (SrcState ValueState Variable
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator))
-> (HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator))
-> PairState MethodState p Variable
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
AssignStatement r smt =>
SVariable r -> SValue r -> MS (r smt)
(&+=) HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
AssignStatement r smt =>
SVariable r -> SValue r -> MS (r smt)
(&+=) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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 SVariable (p CppSrcCode CppHdrCode)
vr) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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 SValue (p CppSrcCode CppHdrCode)
vl)
&++ :: SVariable (p CppSrcCode CppHdrCode)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
(&++) SVariable (p CppSrcCode CppHdrCode)
vl = (SrcState ValueState Variable
-> SrcState MethodState (Doc, Terminator))
-> (HdrState ValueState Variable
-> HdrState MethodState (Doc, Terminator))
-> PairState MethodState p Variable
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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 (Doc, Terminator)
forall (r :: * -> *) smt.
AssignStatement r smt =>
SVariable r -> MS (r smt)
(&++) HdrState ValueState Variable
-> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
AssignStatement r smt =>
SVariable r -> MS (r smt)
(&++) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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 SVariable (p CppSrcCode CppHdrCode)
vl)
&-- :: SVariable (p CppSrcCode CppHdrCode)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
(&--) SVariable (p CppSrcCode CppHdrCode)
vl = (SrcState ValueState Variable
-> SrcState MethodState (Doc, Terminator))
-> (HdrState ValueState Variable
-> HdrState MethodState (Doc, Terminator))
-> PairState MethodState p Variable
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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 (Doc, Terminator)
forall (r :: * -> *) smt.
AssignStatement r smt =>
SVariable r -> MS (r smt)
(&--) HdrState ValueState Variable
-> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
AssignStatement r smt =>
SVariable r -> MS (r smt)
(&--) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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 SVariable (p CppSrcCode CppHdrCode)
vl)
instance (Pair p) => DeclStatement (p CppSrcCode CppHdrCode) (Doc, Terminator) where
varDec :: SVariable (p CppSrcCode CppHdrCode)
-> p CppSrcCode CppHdrCode ScopeData
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
varDec SVariable (p CppSrcCode CppHdrCode)
vr p CppSrcCode CppHdrCode ScopeData
scp = (SrcState ValueState Variable
-> SrcState MethodState (Doc, Terminator))
-> (HdrState ValueState Variable
-> HdrState MethodState (Doc, Terminator))
-> PairState MethodState p Variable
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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 (Doc, Terminator)
forall (r :: * -> *) smt.
DeclStatement r smt =>
SVariable r -> r ScopeData -> MS (r smt)
`varDec` p CppSrcCode CppHdrCode ScopeData -> CppSrcCode ScopeData
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode ScopeData
scp) (HdrState ValueState Variable
-> CppHdrCode ScopeData -> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
DeclStatement r smt =>
SVariable r -> r ScopeData -> MS (r smt)
`varDec` p CppSrcCode CppHdrCode ScopeData -> CppHdrCode ScopeData
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd p CppSrcCode CppHdrCode ScopeData
scp)
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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 SVariable (p CppSrcCode CppHdrCode)
vr)
varDecDef :: SVariable (p CppSrcCode CppHdrCode)
-> p CppSrcCode CppHdrCode ScopeData
-> SValue (p CppSrcCode CppHdrCode)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
varDecDef SVariable (p CppSrcCode CppHdrCode)
vr p CppSrcCode CppHdrCode ScopeData
scp SValue (p CppSrcCode CppHdrCode)
vl = (SrcState ValueState Variable
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator))
-> (HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator))
-> PairState MethodState p Variable
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
DeclStatement r smt =>
SVariable r -> r ScopeData -> SValue r -> MS (r smt)
`varDecDef` p CppSrcCode CppHdrCode ScopeData -> CppSrcCode ScopeData
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode ScopeData
scp) (HdrState ValueState Variable
-> CppHdrCode ScopeData
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
DeclStatement r smt =>
SVariable r -> r ScopeData -> SValue r -> MS (r smt)
`varDecDef` p CppSrcCode CppHdrCode ScopeData -> CppHdrCode ScopeData
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd p CppSrcCode CppHdrCode ScopeData
scp)
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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 SVariable (p CppSrcCode CppHdrCode)
vr) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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 SValue (p CppSrcCode CppHdrCode)
vl)
setDec :: SVariable (p CppSrcCode CppHdrCode)
-> p CppSrcCode CppHdrCode ScopeData
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
setDec SVariable (p CppSrcCode CppHdrCode)
vr p CppSrcCode CppHdrCode ScopeData
scp = (SrcState ValueState Variable
-> SrcState MethodState (Doc, Terminator))
-> (HdrState ValueState Variable
-> HdrState MethodState (Doc, Terminator))
-> PairState MethodState p Variable
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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 (Doc, Terminator)
forall (r :: * -> *) smt.
DeclStatement r smt =>
SVariable r -> r ScopeData -> MS (r smt)
`setDec` p CppSrcCode CppHdrCode ScopeData -> CppSrcCode ScopeData
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode ScopeData
scp) (HdrState ValueState Variable
-> CppHdrCode ScopeData -> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
DeclStatement r smt =>
SVariable r -> r ScopeData -> MS (r smt)
`setDec` p CppSrcCode CppHdrCode ScopeData -> CppHdrCode ScopeData
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd p CppSrcCode CppHdrCode ScopeData
scp)
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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 SVariable (p CppSrcCode CppHdrCode)
vr)
setDecDef :: SVariable (p CppSrcCode CppHdrCode)
-> p CppSrcCode CppHdrCode ScopeData
-> SValue (p CppSrcCode CppHdrCode)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
setDecDef SVariable (p CppSrcCode CppHdrCode)
vr p CppSrcCode CppHdrCode ScopeData
scp SValue (p CppSrcCode CppHdrCode)
vl = (SrcState ValueState Variable
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator))
-> (HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator))
-> PairState MethodState p Variable
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
DeclStatement r smt =>
SVariable r -> r ScopeData -> SValue r -> MS (r smt)
`setDecDef` p CppSrcCode CppHdrCode ScopeData -> CppSrcCode ScopeData
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode ScopeData
scp) (HdrState ValueState Variable
-> CppHdrCode ScopeData
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
DeclStatement r smt =>
SVariable r -> r ScopeData -> SValue r -> MS (r smt)
`setDecDef` p CppSrcCode CppHdrCode ScopeData -> CppHdrCode ScopeData
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd p CppSrcCode CppHdrCode ScopeData
scp)
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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 SVariable (p CppSrcCode CppHdrCode)
vr) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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 SValue (p CppSrcCode CppHdrCode)
vl)
listDec :: Integer
-> SVariable (p CppSrcCode CppHdrCode)
-> p CppSrcCode CppHdrCode ScopeData
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
listDec Integer
n SVariable (p CppSrcCode CppHdrCode)
vr p CppSrcCode CppHdrCode ScopeData
scp = (SrcState ValueState Variable
-> SrcState MethodState (Doc, Terminator))
-> (HdrState ValueState Variable
-> HdrState MethodState (Doc, Terminator))
-> PairState MethodState p Variable
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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 (Doc, Terminator)
forall (r :: * -> *) smt.
DeclStatement r smt =>
Integer -> SVariable r -> r ScopeData -> MS (r smt)
listDec Integer
n SrcState ValueState Variable
v (p CppSrcCode CppHdrCode ScopeData -> CppSrcCode ScopeData
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode ScopeData
scp))
(\HdrState ValueState Variable
v -> Integer
-> HdrState ValueState Variable
-> CppHdrCode ScopeData
-> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
DeclStatement r smt =>
Integer -> SVariable r -> r ScopeData -> MS (r smt)
listDec Integer
n HdrState ValueState Variable
v (p CppSrcCode CppHdrCode ScopeData -> CppHdrCode ScopeData
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd p CppSrcCode CppHdrCode ScopeData
scp)) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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 SVariable (p CppSrcCode CppHdrCode)
vr)
listDecDef :: SVariable (p CppSrcCode CppHdrCode)
-> p CppSrcCode CppHdrCode ScopeData
-> [SValue (p CppSrcCode CppHdrCode)]
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
listDecDef SVariable (p CppSrcCode CppHdrCode)
vr p CppSrcCode CppHdrCode ScopeData
scp [SValue (p CppSrcCode CppHdrCode)]
vs = (SrcState ValueState Variable
-> [SrcState ValueState Value]
-> SrcState MethodState (Doc, Terminator))
-> (HdrState ValueState Variable
-> [HdrState ValueState Value]
-> HdrState MethodState (Doc, Terminator))
-> PairState MethodState p Variable
-> [PairState MethodState p Value]
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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
-> [SrcState ValueState Value]
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
DeclStatement r smt =>
SVariable r -> r ScopeData -> [SValue r] -> MS (r smt)
`listDecDef` p CppSrcCode CppHdrCode ScopeData -> CppSrcCode ScopeData
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode ScopeData
scp)
(HdrState ValueState Variable
-> CppHdrCode ScopeData
-> [HdrState ValueState Value]
-> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
DeclStatement r smt =>
SVariable r -> r ScopeData -> [SValue r] -> MS (r smt)
`listDecDef` p CppSrcCode CppHdrCode ScopeData -> CppHdrCode ScopeData
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd p CppSrcCode CppHdrCode ScopeData
scp) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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 SVariable (p CppSrcCode CppHdrCode)
vr) ((SValue (p CppSrcCode CppHdrCode) -> PairState MethodState p Value)
-> [SValue (p CppSrcCode CppHdrCode)]
-> [PairState MethodState p Value]
forall a b. (a -> b) -> [a] -> [b]
map (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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) [SValue (p CppSrcCode CppHdrCode)]
vs)
arrayDec :: Integer
-> SValue (p CppSrcCode CppHdrCode)
-> SVariable (p CppSrcCode CppHdrCode)
-> p CppSrcCode CppHdrCode ScopeData
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
arrayDec Integer
n SValue (p CppSrcCode CppHdrCode)
dflt SVariable (p CppSrcCode CppHdrCode)
vr p CppSrcCode CppHdrCode ScopeData
scp = (SrcState ValueState Variable
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator))
-> (HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator))
-> PairState MethodState p Variable
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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 SrcState ValueState Value
d -> Integer
-> SrcState ValueState Value
-> SrcState ValueState Variable
-> CppSrcCode ScopeData
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
DeclStatement r smt =>
Integer -> SValue r -> SVariable r -> r ScopeData -> MS (r smt)
arrayDec Integer
n SrcState ValueState Value
d SrcState ValueState Variable
v (p CppSrcCode CppHdrCode ScopeData -> CppSrcCode ScopeData
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
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 (Doc, Terminator)
forall (r :: * -> *) smt.
DeclStatement r smt =>
Integer -> SValue r -> SVariable r -> r ScopeData -> MS (r smt)
arrayDec Integer
n HdrState ValueState Value
d HdrState ValueState Variable
v (p CppSrcCode CppHdrCode ScopeData -> CppHdrCode ScopeData
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd p CppSrcCode CppHdrCode ScopeData
scp)) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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 SVariable (p CppSrcCode CppHdrCode)
vr) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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 SValue (p CppSrcCode CppHdrCode)
dflt)
arrayDecDef :: SVariable (p CppSrcCode CppHdrCode)
-> p CppSrcCode CppHdrCode ScopeData
-> [SValue (p CppSrcCode CppHdrCode)]
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
arrayDecDef SVariable (p CppSrcCode CppHdrCode)
vr p CppSrcCode CppHdrCode ScopeData
scp [SValue (p CppSrcCode CppHdrCode)]
vs = (SrcState ValueState Variable
-> [SrcState ValueState Value]
-> SrcState MethodState (Doc, Terminator))
-> (HdrState ValueState Variable
-> [HdrState ValueState Value]
-> HdrState MethodState (Doc, Terminator))
-> PairState MethodState p Variable
-> [PairState MethodState p Value]
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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
-> [SrcState ValueState Value]
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
DeclStatement r smt =>
SVariable r -> r ScopeData -> [SValue r] -> MS (r smt)
`arrayDecDef` p CppSrcCode CppHdrCode ScopeData -> CppSrcCode ScopeData
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode ScopeData
scp)
(HdrState ValueState Variable
-> CppHdrCode ScopeData
-> [HdrState ValueState Value]
-> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
DeclStatement r smt =>
SVariable r -> r ScopeData -> [SValue r] -> MS (r smt)
`arrayDecDef` p CppSrcCode CppHdrCode ScopeData -> CppHdrCode ScopeData
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd p CppSrcCode CppHdrCode ScopeData
scp) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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 SVariable (p CppSrcCode CppHdrCode)
vr) ((SValue (p CppSrcCode CppHdrCode) -> PairState MethodState p Value)
-> [SValue (p CppSrcCode CppHdrCode)]
-> [PairState MethodState p Value]
forall a b. (a -> b) -> [a] -> [b]
map (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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) [SValue (p CppSrcCode CppHdrCode)]
vs)
constDecDef :: SVariable (p CppSrcCode CppHdrCode)
-> p CppSrcCode CppHdrCode ScopeData
-> SValue (p CppSrcCode CppHdrCode)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
constDecDef SVariable (p CppSrcCode CppHdrCode)
vr p CppSrcCode CppHdrCode ScopeData
scp SValue (p CppSrcCode CppHdrCode)
vl = (SrcState ValueState Variable
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator))
-> (HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator))
-> PairState MethodState p Variable
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
DeclStatement r smt =>
SVariable r -> r ScopeData -> SValue r -> MS (r smt)
`constDecDef` p CppSrcCode CppHdrCode ScopeData -> CppSrcCode ScopeData
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode ScopeData
scp)
(HdrState ValueState Variable
-> CppHdrCode ScopeData
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
DeclStatement r smt =>
SVariable r -> r ScopeData -> SValue r -> MS (r smt)
`constDecDef` p CppSrcCode CppHdrCode ScopeData -> CppHdrCode ScopeData
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd p CppSrcCode CppHdrCode ScopeData
scp) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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 SVariable (p CppSrcCode CppHdrCode)
vr) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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 SValue (p CppSrcCode CppHdrCode)
vl)
funcDecDef :: SVariable (p CppSrcCode CppHdrCode)
-> p CppSrcCode CppHdrCode ScopeData
-> [SVariable (p CppSrcCode CppHdrCode)]
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
funcDecDef SVariable (p CppSrcCode CppHdrCode)
v p CppSrcCode CppHdrCode ScopeData
scp [SVariable (p CppSrcCode CppHdrCode)]
ps = (SrcState ValueState Variable
-> [SrcState ValueState Variable]
-> SrcState MethodState Doc
-> SrcState MethodState (Doc, Terminator))
-> (HdrState ValueState Variable
-> [HdrState ValueState Variable]
-> HdrState MethodState Doc
-> HdrState MethodState (Doc, Terminator))
-> PairState MethodState p Variable
-> [PairState MethodState p Variable]
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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 (Doc, Terminator)
forall (r :: * -> *) smt.
DeclStatement r smt =>
SVariable r
-> r ScopeData -> [SVariable r] -> MS (r Doc) -> MS (r smt)
`funcDecDef` p CppSrcCode CppHdrCode ScopeData -> CppSrcCode ScopeData
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
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 (Doc, Terminator)
forall (r :: * -> *) smt.
DeclStatement r smt =>
SVariable r
-> r ScopeData -> [SVariable r] -> MS (r Doc) -> MS (r smt)
`funcDecDef` p CppSrcCode CppHdrCode ScopeData -> CppHdrCode ScopeData
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd p CppSrcCode CppHdrCode ScopeData
scp) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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 SVariable (p CppSrcCode CppHdrCode)
v) ((SVariable (p CppSrcCode CppHdrCode)
-> PairState MethodState p Variable)
-> [SVariable (p CppSrcCode CppHdrCode)]
-> [PairState MethodState p Variable]
forall a b. (a -> b) -> [a] -> [b]
map (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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) [SVariable (p CppSrcCode CppHdrCode)]
ps)
instance (Pair p) => OODeclStatement (p CppSrcCode CppHdrCode) (Doc, Terminator) where
objDecDef :: SVariable (p CppSrcCode CppHdrCode)
-> p CppSrcCode CppHdrCode ScopeData
-> SValue (p CppSrcCode CppHdrCode)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
objDecDef SVariable (p CppSrcCode CppHdrCode)
o p CppSrcCode CppHdrCode ScopeData
scp SValue (p CppSrcCode CppHdrCode)
v = (SrcState ValueState Variable
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator))
-> (HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator))
-> PairState MethodState p Variable
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
OODeclStatement r smt =>
SVariable r -> r ScopeData -> SValue r -> MS (r smt)
`objDecDef` p CppSrcCode CppHdrCode ScopeData -> CppSrcCode ScopeData
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode ScopeData
scp) (HdrState ValueState Variable
-> CppHdrCode ScopeData
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
OODeclStatement r smt =>
SVariable r -> r ScopeData -> SValue r -> MS (r smt)
`objDecDef` p CppSrcCode CppHdrCode ScopeData -> CppHdrCode ScopeData
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd p CppSrcCode CppHdrCode ScopeData
scp)
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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 SVariable (p CppSrcCode CppHdrCode)
o) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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 SValue (p CppSrcCode CppHdrCode)
v)
objDecNew :: SVariable (p CppSrcCode CppHdrCode)
-> p CppSrcCode CppHdrCode ScopeData
-> [SValue (p CppSrcCode CppHdrCode)]
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
objDecNew SVariable (p CppSrcCode CppHdrCode)
vr p CppSrcCode CppHdrCode ScopeData
scp [SValue (p CppSrcCode CppHdrCode)]
vs = (SrcState ValueState Variable
-> [SrcState ValueState Value]
-> SrcState MethodState (Doc, Terminator))
-> (HdrState ValueState Variable
-> [HdrState ValueState Value]
-> HdrState MethodState (Doc, Terminator))
-> PairState MethodState p Variable
-> [PairState MethodState p Value]
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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
-> [SrcState ValueState Value]
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
OODeclStatement r smt =>
SVariable r -> r ScopeData -> [SValue r] -> MS (r smt)
`objDecNew` p CppSrcCode CppHdrCode ScopeData -> CppSrcCode ScopeData
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode ScopeData
scp)
(HdrState ValueState Variable
-> CppHdrCode ScopeData
-> [HdrState ValueState Value]
-> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
OODeclStatement r smt =>
SVariable r -> r ScopeData -> [SValue r] -> MS (r smt)
`objDecNew` p CppSrcCode CppHdrCode ScopeData -> CppHdrCode ScopeData
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd p CppSrcCode CppHdrCode ScopeData
scp) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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 SVariable (p CppSrcCode CppHdrCode)
vr) ((SValue (p CppSrcCode CppHdrCode) -> PairState MethodState p Value)
-> [SValue (p CppSrcCode CppHdrCode)]
-> [PairState MethodState p Value]
forall a b. (a -> b) -> [a] -> [b]
map (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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) [SValue (p CppSrcCode CppHdrCode)]
vs)
extObjDecNew :: ClassName
-> SVariable (p CppSrcCode CppHdrCode)
-> p CppSrcCode CppHdrCode ScopeData
-> [SValue (p CppSrcCode CppHdrCode)]
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
extObjDecNew ClassName
lib SVariable (p CppSrcCode CppHdrCode)
vr p CppSrcCode CppHdrCode ScopeData
scp [SValue (p CppSrcCode CppHdrCode)]
vs = (SrcState ValueState Variable
-> [SrcState ValueState Value]
-> SrcState MethodState (Doc, Terminator))
-> (HdrState ValueState Variable
-> [HdrState ValueState Value]
-> HdrState MethodState (Doc, Terminator))
-> PairState MethodState p Variable
-> [PairState MethodState p Value]
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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' -> ClassName
-> SrcState ValueState Variable
-> CppSrcCode ScopeData
-> [SrcState ValueState Value]
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
OODeclStatement r smt =>
ClassName -> SVariable r -> r ScopeData -> [SValue r] -> MS (r smt)
extObjDecNew ClassName
lib SrcState ValueState Variable
vr' (p CppSrcCode CppHdrCode ScopeData -> CppSrcCode ScopeData
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode ScopeData
scp))
(\HdrState ValueState Variable
vr' -> ClassName
-> HdrState ValueState Variable
-> CppHdrCode ScopeData
-> [HdrState ValueState Value]
-> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
OODeclStatement r smt =>
ClassName -> SVariable r -> r ScopeData -> [SValue r] -> MS (r smt)
extObjDecNew ClassName
lib HdrState ValueState Variable
vr' (p CppSrcCode CppHdrCode ScopeData -> CppHdrCode ScopeData
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd p CppSrcCode CppHdrCode ScopeData
scp))
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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 SVariable (p CppSrcCode CppHdrCode)
vr) ((SValue (p CppSrcCode CppHdrCode) -> PairState MethodState p Value)
-> [SValue (p CppSrcCode CppHdrCode)]
-> [PairState MethodState p Value]
forall a b. (a -> b) -> [a] -> [b]
map (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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) [SValue (p CppSrcCode CppHdrCode)]
vs)
instance (Pair p) => IOStatement (p CppSrcCode CppHdrCode) (Doc, Terminator) where
print :: SValue (p CppSrcCode CppHdrCode)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
print = (SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator))
-> (HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator))
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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 Value -> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
IOStatement r smt =>
SValue r -> MS (r smt)
print HdrState ValueState Value -> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
IOStatement r smt =>
SValue r -> MS (r smt)
print (PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator)))
-> (SValue (p CppSrcCode CppHdrCode)
-> PairState MethodState p Value)
-> SValue (p CppSrcCode CppHdrCode)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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 :: SValue (p CppSrcCode CppHdrCode)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
printLn = (SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator))
-> (HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator))
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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 Value -> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
IOStatement r smt =>
SValue r -> MS (r smt)
printLn HdrState ValueState Value -> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
IOStatement r smt =>
SValue r -> MS (r smt)
printLn (PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator)))
-> (SValue (p CppSrcCode CppHdrCode)
-> PairState MethodState p Value)
-> SValue (p CppSrcCode CppHdrCode)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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 :: ClassName -> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
printStr ClassName
s = (CppSrcCode (Doc, Terminator)
-> CppHdrCode (Doc, Terminator)
-> p CppSrcCode CppHdrCode (Doc, Terminator))
-> SrcState MethodState (Doc, Terminator)
-> HdrState MethodState (Doc, Terminator)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode (Doc, Terminator)
-> CppHdrCode (Doc, Terminator)
-> p CppSrcCode CppHdrCode (Doc, Terminator)
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair (ClassName -> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
IOStatement r smt =>
ClassName -> MS (r smt)
printStr ClassName
s) (ClassName -> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
IOStatement r smt =>
ClassName -> MS (r smt)
printStr ClassName
s)
printStrLn :: ClassName -> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
printStrLn ClassName
s = (CppSrcCode (Doc, Terminator)
-> CppHdrCode (Doc, Terminator)
-> p CppSrcCode CppHdrCode (Doc, Terminator))
-> SrcState MethodState (Doc, Terminator)
-> HdrState MethodState (Doc, Terminator)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode (Doc, Terminator)
-> CppHdrCode (Doc, Terminator)
-> p CppSrcCode CppHdrCode (Doc, Terminator)
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair (ClassName -> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
IOStatement r smt =>
ClassName -> MS (r smt)
printStrLn ClassName
s) (ClassName -> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
IOStatement r smt =>
ClassName -> MS (r smt)
printStrLn ClassName
s)
printFile :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
printFile SValue (p CppSrcCode CppHdrCode)
f SValue (p CppSrcCode CppHdrCode)
v = (SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator))
-> (HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator))
-> PairState MethodState p Value
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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 Value
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
IOStatement r smt =>
SValue r -> SValue r -> MS (r smt)
printFile HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
IOStatement r smt =>
SValue r -> SValue r -> MS (r smt)
printFile (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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 SValue (p CppSrcCode CppHdrCode)
f)
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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 SValue (p CppSrcCode CppHdrCode)
v)
printFileLn :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
printFileLn SValue (p CppSrcCode CppHdrCode)
f SValue (p CppSrcCode CppHdrCode)
v = (SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator))
-> (HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator))
-> PairState MethodState p Value
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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 Value
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
IOStatement r smt =>
SValue r -> SValue r -> MS (r smt)
printFileLn HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
IOStatement r smt =>
SValue r -> SValue r -> MS (r smt)
printFileLn (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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 SValue (p CppSrcCode CppHdrCode)
f)
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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 SValue (p CppSrcCode CppHdrCode)
v)
printFileStr :: SValue (p CppSrcCode CppHdrCode)
-> ClassName -> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
printFileStr SValue (p CppSrcCode CppHdrCode)
f ClassName
s = (SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator))
-> (HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator))
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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 Value
-> ClassName -> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
IOStatement r smt =>
SValue r -> ClassName -> MS (r smt)
`printFileStr` ClassName
s) (HdrState ValueState Value
-> ClassName -> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
IOStatement r smt =>
SValue r -> ClassName -> MS (r smt)
`printFileStr` ClassName
s)
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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 SValue (p CppSrcCode CppHdrCode)
f)
printFileStrLn :: SValue (p CppSrcCode CppHdrCode)
-> ClassName -> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
printFileStrLn SValue (p CppSrcCode CppHdrCode)
f ClassName
s = (SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator))
-> (HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator))
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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 Value
-> ClassName -> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
IOStatement r smt =>
SValue r -> ClassName -> MS (r smt)
`printFileStrLn` ClassName
s) (HdrState ValueState Value
-> ClassName -> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
IOStatement r smt =>
SValue r -> ClassName -> MS (r smt)
`printFileStrLn` ClassName
s)
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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 SValue (p CppSrcCode CppHdrCode)
f)
getInput :: SVariable (p CppSrcCode CppHdrCode)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
getInput = (SrcState ValueState Variable
-> SrcState MethodState (Doc, Terminator))
-> (HdrState ValueState Variable
-> HdrState MethodState (Doc, Terminator))
-> PairState MethodState p Variable
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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 (Doc, Terminator)
forall (r :: * -> *) smt.
IOStatement r smt =>
SVariable r -> MS (r smt)
getInput HdrState ValueState Variable
-> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
IOStatement r smt =>
SVariable r -> MS (r smt)
getInput (PairState MethodState p Variable
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator)))
-> (SVariable (p CppSrcCode CppHdrCode)
-> PairState MethodState p Variable)
-> SVariable (p CppSrcCode CppHdrCode)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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 (Doc, Terminator))
discardInput = (CppSrcCode (Doc, Terminator)
-> CppHdrCode (Doc, Terminator)
-> p CppSrcCode CppHdrCode (Doc, Terminator))
-> SrcState MethodState (Doc, Terminator)
-> HdrState MethodState (Doc, Terminator)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode (Doc, Terminator)
-> CppHdrCode (Doc, Terminator)
-> p CppSrcCode CppHdrCode (Doc, Terminator)
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. IOStatement r smt => MS (r smt)
discardInput HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. IOStatement r smt => MS (r smt)
discardInput
getFileInput :: SValue (p CppSrcCode CppHdrCode)
-> SVariable (p CppSrcCode CppHdrCode)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
getFileInput SValue (p CppSrcCode CppHdrCode)
f SVariable (p CppSrcCode CppHdrCode)
v = (SrcState ValueState Value
-> SrcState ValueState Variable
-> SrcState MethodState (Doc, Terminator))
-> (HdrState ValueState Value
-> HdrState ValueState Variable
-> HdrState MethodState (Doc, Terminator))
-> PairState MethodState p Value
-> PairState MethodState p Variable
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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 Value
-> SrcState ValueState Variable
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
IOStatement r smt =>
SValue r -> SVariable r -> MS (r smt)
getFileInput HdrState ValueState Value
-> HdrState ValueState Variable
-> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
IOStatement r smt =>
SValue r -> SVariable r -> MS (r smt)
getFileInput (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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 SValue (p CppSrcCode CppHdrCode)
f)
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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 SVariable (p CppSrcCode CppHdrCode)
v)
discardFileInput :: SValue (p CppSrcCode CppHdrCode)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
discardFileInput = (SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator))
-> (HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator))
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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 Value -> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
IOStatement r smt =>
SValue r -> MS (r smt)
discardFileInput HdrState ValueState Value -> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
IOStatement r smt =>
SValue r -> MS (r smt)
discardFileInput (PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator)))
-> (SValue (p CppSrcCode CppHdrCode)
-> PairState MethodState p Value)
-> SValue (p CppSrcCode CppHdrCode)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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
openFileR :: SVariable (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
openFileR SVariable (p CppSrcCode CppHdrCode)
f SValue (p CppSrcCode CppHdrCode)
v = (SrcState ValueState Variable
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator))
-> (HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator))
-> PairState MethodState p Variable
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
IOStatement r smt =>
SVariable r -> SValue r -> MS (r smt)
openFileR HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
IOStatement r smt =>
SVariable r -> SValue r -> MS (r smt)
openFileR (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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 SVariable (p CppSrcCode CppHdrCode)
f)
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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 SValue (p CppSrcCode CppHdrCode)
v)
openFileW :: SVariable (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
openFileW SVariable (p CppSrcCode CppHdrCode)
f SValue (p CppSrcCode CppHdrCode)
v = (SrcState ValueState Variable
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator))
-> (HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator))
-> PairState MethodState p Variable
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
IOStatement r smt =>
SVariable r -> SValue r -> MS (r smt)
openFileW HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
IOStatement r smt =>
SVariable r -> SValue r -> MS (r smt)
openFileW (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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 SVariable (p CppSrcCode CppHdrCode)
f)
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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 SValue (p CppSrcCode CppHdrCode)
v)
openFileA :: SVariable (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
openFileA SVariable (p CppSrcCode CppHdrCode)
f SValue (p CppSrcCode CppHdrCode)
v = (SrcState ValueState Variable
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator))
-> (HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator))
-> PairState MethodState p Variable
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
IOStatement r smt =>
SVariable r -> SValue r -> MS (r smt)
openFileA HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
IOStatement r smt =>
SVariable r -> SValue r -> MS (r smt)
openFileA (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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 SVariable (p CppSrcCode CppHdrCode)
f)
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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 SValue (p CppSrcCode CppHdrCode)
v)
closeFile :: SValue (p CppSrcCode CppHdrCode)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
closeFile = (SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator))
-> (HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator))
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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 Value -> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
IOStatement r smt =>
SValue r -> MS (r smt)
closeFile HdrState ValueState Value -> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
IOStatement r smt =>
SValue r -> MS (r smt)
closeFile (PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator)))
-> (SValue (p CppSrcCode CppHdrCode)
-> PairState MethodState p Value)
-> SValue (p CppSrcCode CppHdrCode)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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 :: SValue (p CppSrcCode CppHdrCode)
-> SVariable (p CppSrcCode CppHdrCode)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
getFileInputLine SValue (p CppSrcCode CppHdrCode)
f SVariable (p CppSrcCode CppHdrCode)
v = (SrcState ValueState Value
-> SrcState ValueState Variable
-> SrcState MethodState (Doc, Terminator))
-> (HdrState ValueState Value
-> HdrState ValueState Variable
-> HdrState MethodState (Doc, Terminator))
-> PairState MethodState p Value
-> PairState MethodState p Variable
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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 Value
-> SrcState ValueState Variable
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
IOStatement r smt =>
SValue r -> SVariable r -> MS (r smt)
getFileInputLine HdrState ValueState Value
-> HdrState ValueState Variable
-> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
IOStatement r smt =>
SValue r -> SVariable r -> MS (r smt)
getFileInputLine
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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 SValue (p CppSrcCode CppHdrCode)
f) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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 SVariable (p CppSrcCode CppHdrCode)
v)
discardFileLine :: SValue (p CppSrcCode CppHdrCode)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
discardFileLine = (SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator))
-> (HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator))
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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 Value -> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
IOStatement r smt =>
SValue r -> MS (r smt)
discardFileLine HdrState ValueState Value -> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
IOStatement r smt =>
SValue r -> MS (r smt)
discardFileLine (PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator)))
-> (SValue (p CppSrcCode CppHdrCode)
-> PairState MethodState p Value)
-> SValue (p CppSrcCode CppHdrCode)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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 :: SValue (p CppSrcCode CppHdrCode)
-> SVariable (p CppSrcCode CppHdrCode)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
getFileInputAll SValue (p CppSrcCode CppHdrCode)
f SVariable (p CppSrcCode CppHdrCode)
v = (SrcState ValueState Value
-> SrcState ValueState Variable
-> SrcState MethodState (Doc, Terminator))
-> (HdrState ValueState Value
-> HdrState ValueState Variable
-> HdrState MethodState (Doc, Terminator))
-> PairState MethodState p Value
-> PairState MethodState p Variable
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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 Value
-> SrcState ValueState Variable
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
IOStatement r smt =>
SValue r -> SVariable r -> MS (r smt)
getFileInputAll HdrState ValueState Value
-> HdrState ValueState Variable
-> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
IOStatement r smt =>
SValue r -> SVariable r -> MS (r smt)
getFileInputAll
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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 SValue (p CppSrcCode CppHdrCode)
f) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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 SVariable (p CppSrcCode CppHdrCode)
v)
instance (Pair p) => StringStatement (p CppSrcCode CppHdrCode) (Doc, Terminator) where
stringSplit :: Char
-> SVariable (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
stringSplit Char
d SVariable (p CppSrcCode CppHdrCode)
vnew SValue (p CppSrcCode CppHdrCode)
s = (SrcState ValueState Variable
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator))
-> (HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator))
-> PairState MethodState p Variable
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
StringStatement r smt =>
Char -> SVariable r -> SValue r -> MS (r smt)
stringSplit Char
d) (Char
-> HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
StringStatement r smt =>
Char -> SVariable r -> SValue r -> MS (r smt)
stringSplit Char
d)
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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 SVariable (p CppSrcCode CppHdrCode)
vnew) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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 SValue (p CppSrcCode CppHdrCode)
s)
stringListVals :: [SVariable (p CppSrcCode CppHdrCode)]
-> SValue (p CppSrcCode CppHdrCode)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
stringListVals [SVariable (p CppSrcCode CppHdrCode)]
vars SValue (p CppSrcCode CppHdrCode)
sl = ([SrcState ValueState Variable]
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator))
-> ([HdrState ValueState Variable]
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator))
-> [PairState MethodState p Variable]
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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]
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
StringStatement r smt =>
[SVariable r] -> SValue r -> MS (r smt)
stringListVals [HdrState ValueState Variable]
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
StringStatement r smt =>
[SVariable r] -> SValue r -> MS (r smt)
stringListVals
((SVariable (p CppSrcCode CppHdrCode)
-> PairState MethodState p Variable)
-> [SVariable (p CppSrcCode CppHdrCode)]
-> [PairState MethodState p Variable]
forall a b. (a -> b) -> [a] -> [b]
map (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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) [SVariable (p CppSrcCode CppHdrCode)]
vars) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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 SValue (p CppSrcCode CppHdrCode)
sl)
stringListLists :: [SVariable (p CppSrcCode CppHdrCode)]
-> SValue (p CppSrcCode CppHdrCode)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
stringListLists [SVariable (p CppSrcCode CppHdrCode)]
lsts SValue (p CppSrcCode CppHdrCode)
sl = ([SrcState ValueState Variable]
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator))
-> ([HdrState ValueState Variable]
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator))
-> [PairState MethodState p Variable]
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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]
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
StringStatement r smt =>
[SVariable r] -> SValue r -> MS (r smt)
stringListLists [HdrState ValueState Variable]
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
StringStatement r smt =>
[SVariable r] -> SValue r -> MS (r smt)
stringListLists
((SVariable (p CppSrcCode CppHdrCode)
-> PairState MethodState p Variable)
-> [SVariable (p CppSrcCode CppHdrCode)]
-> [PairState MethodState p Variable]
forall a b. (a -> b) -> [a] -> [b]
map (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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) [SVariable (p CppSrcCode CppHdrCode)]
lsts) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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 SValue (p CppSrcCode CppHdrCode)
sl)
instance (Pair p) => FuncAppStatement (p CppSrcCode CppHdrCode) (Doc, Terminator) where
inOutCall :: InOutCall (p CppSrcCode CppHdrCode) (Doc, Terminator)
inOutCall ClassName
n [SValue (p CppSrcCode CppHdrCode)]
is [SVariable (p CppSrcCode CppHdrCode)]
os [SVariable (p CppSrcCode CppHdrCode)]
bs = ([SrcState ValueState Value]
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> SrcState MethodState (Doc, Terminator))
-> ([HdrState ValueState Value]
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> HdrState MethodState (Doc, Terminator))
-> [PairState MethodState p Value]
-> [PairState MethodState p Variable]
-> [PairState MethodState p Variable]
-> PairState MethodState p (Doc, Terminator)
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 (Doc, Terminator)
forall (r :: * -> *) smt. FuncAppStatement r smt => InOutCall r smt
inOutCall ClassName
n) (InOutCall CppHdrCode (Doc, Terminator)
forall (r :: * -> *) smt. FuncAppStatement r smt => InOutCall r smt
inOutCall ClassName
n)
((SValue (p CppSrcCode CppHdrCode) -> PairState MethodState p Value)
-> [SValue (p CppSrcCode CppHdrCode)]
-> [PairState MethodState p Value]
forall a b. (a -> b) -> [a] -> [b]
map (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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) [SValue (p CppSrcCode CppHdrCode)]
is) ((SVariable (p CppSrcCode CppHdrCode)
-> PairState MethodState p Variable)
-> [SVariable (p CppSrcCode CppHdrCode)]
-> [PairState MethodState p Variable]
forall a b. (a -> b) -> [a] -> [b]
map (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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) [SVariable (p CppSrcCode CppHdrCode)]
os)
((SVariable (p CppSrcCode CppHdrCode)
-> PairState MethodState p Variable)
-> [SVariable (p CppSrcCode CppHdrCode)]
-> [PairState MethodState p Variable]
forall a b. (a -> b) -> [a] -> [b]
map (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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) [SVariable (p CppSrcCode CppHdrCode)]
bs)
extInOutCall :: ClassName -> InOutCall (p CppSrcCode CppHdrCode) (Doc, Terminator)
extInOutCall ClassName
m ClassName
n [SValue (p CppSrcCode CppHdrCode)]
is [SVariable (p CppSrcCode CppHdrCode)]
os [SVariable (p CppSrcCode CppHdrCode)]
bs = ([SrcState ValueState Value]
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> SrcState MethodState (Doc, Terminator))
-> ([HdrState ValueState Value]
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> HdrState MethodState (Doc, Terminator))
-> [PairState MethodState p Value]
-> [PairState MethodState p Variable]
-> [PairState MethodState p Variable]
-> PairState MethodState p (Doc, Terminator)
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 (ClassName -> InOutCall CppSrcCode (Doc, Terminator)
forall (r :: * -> *) smt.
FuncAppStatement r smt =>
ClassName -> InOutCall r smt
extInOutCall ClassName
m ClassName
n) (ClassName -> InOutCall CppHdrCode (Doc, Terminator)
forall (r :: * -> *) smt.
FuncAppStatement r smt =>
ClassName -> InOutCall r smt
extInOutCall ClassName
m ClassName
n)
((SValue (p CppSrcCode CppHdrCode) -> PairState MethodState p Value)
-> [SValue (p CppSrcCode CppHdrCode)]
-> [PairState MethodState p Value]
forall a b. (a -> b) -> [a] -> [b]
map (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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) [SValue (p CppSrcCode CppHdrCode)]
is) ((SVariable (p CppSrcCode CppHdrCode)
-> PairState MethodState p Variable)
-> [SVariable (p CppSrcCode CppHdrCode)]
-> [PairState MethodState p Variable]
forall a b. (a -> b) -> [a] -> [b]
map (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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) [SVariable (p CppSrcCode CppHdrCode)]
os)
((SVariable (p CppSrcCode CppHdrCode)
-> PairState MethodState p Variable)
-> [SVariable (p CppSrcCode CppHdrCode)]
-> [PairState MethodState p Variable]
forall a b. (a -> b) -> [a] -> [b]
map (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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) [SVariable (p CppSrcCode CppHdrCode)]
bs)
instance (Pair p) => OOFuncAppStatement (p CppSrcCode CppHdrCode) (Doc, Terminator) where
selfInOutCall :: InOutCall (p CppSrcCode CppHdrCode) (Doc, Terminator)
selfInOutCall ClassName
n [SValue (p CppSrcCode CppHdrCode)]
is [SVariable (p CppSrcCode CppHdrCode)]
os [SVariable (p CppSrcCode CppHdrCode)]
bs = ([SrcState ValueState Value]
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> SrcState MethodState (Doc, Terminator))
-> ([HdrState ValueState Value]
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> HdrState MethodState (Doc, Terminator))
-> [PairState MethodState p Value]
-> [PairState MethodState p Variable]
-> [PairState MethodState p Variable]
-> PairState MethodState p (Doc, Terminator)
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 (Doc, Terminator)
forall (r :: * -> *) smt.
OOFuncAppStatement r smt =>
InOutCall r smt
selfInOutCall ClassName
n) (InOutCall CppHdrCode (Doc, Terminator)
forall (r :: * -> *) smt.
OOFuncAppStatement r smt =>
InOutCall r smt
selfInOutCall ClassName
n)
((SValue (p CppSrcCode CppHdrCode) -> PairState MethodState p Value)
-> [SValue (p CppSrcCode CppHdrCode)]
-> [PairState MethodState p Value]
forall a b. (a -> b) -> [a] -> [b]
map (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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) [SValue (p CppSrcCode CppHdrCode)]
is) ((SVariable (p CppSrcCode CppHdrCode)
-> PairState MethodState p Variable)
-> [SVariable (p CppSrcCode CppHdrCode)]
-> [PairState MethodState p Variable]
forall a b. (a -> b) -> [a] -> [b]
map (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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) [SVariable (p CppSrcCode CppHdrCode)]
os)
((SVariable (p CppSrcCode CppHdrCode)
-> PairState MethodState p Variable)
-> [SVariable (p CppSrcCode CppHdrCode)]
-> [PairState MethodState p Variable]
forall a b. (a -> b) -> [a] -> [b]
map (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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) [SVariable (p CppSrcCode CppHdrCode)]
bs)
instance (Pair p) => CommentStatement (p CppSrcCode CppHdrCode) (Doc, Terminator) where
comment :: ClassName -> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
comment ClassName
cmt = (CppSrcCode (Doc, Terminator)
-> CppHdrCode (Doc, Terminator)
-> p CppSrcCode CppHdrCode (Doc, Terminator))
-> SrcState MethodState (Doc, Terminator)
-> HdrState MethodState (Doc, Terminator)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode (Doc, Terminator)
-> CppHdrCode (Doc, Terminator)
-> p CppSrcCode CppHdrCode (Doc, Terminator)
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair (ClassName -> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
CommentStatement r smt =>
ClassName -> MS (r smt)
comment ClassName
cmt) (ClassName -> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
CommentStatement r smt =>
ClassName -> MS (r smt)
comment ClassName
cmt)
instance (Pair p) => ControlStatement (p CppSrcCode CppHdrCode) (Doc, Terminator) where
break :: MS (p CppSrcCode CppHdrCode (Doc, Terminator))
break = (CppSrcCode (Doc, Terminator)
-> CppHdrCode (Doc, Terminator)
-> p CppSrcCode CppHdrCode (Doc, Terminator))
-> SrcState MethodState (Doc, Terminator)
-> HdrState MethodState (Doc, Terminator)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode (Doc, Terminator)
-> CppHdrCode (Doc, Terminator)
-> p CppSrcCode CppHdrCode (Doc, Terminator)
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. ControlStatement r smt => MS (r smt)
break HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. ControlStatement r smt => MS (r smt)
break
continue :: MS (p CppSrcCode CppHdrCode (Doc, Terminator))
continue = (CppSrcCode (Doc, Terminator)
-> CppHdrCode (Doc, Terminator)
-> p CppSrcCode CppHdrCode (Doc, Terminator))
-> SrcState MethodState (Doc, Terminator)
-> HdrState MethodState (Doc, Terminator)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode (Doc, Terminator)
-> CppHdrCode (Doc, Terminator)
-> p CppSrcCode CppHdrCode (Doc, Terminator)
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. ControlStatement r smt => MS (r smt)
continue HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. ControlStatement r smt => MS (r smt)
continue
returnStmt :: SValue (p CppSrcCode CppHdrCode)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
returnStmt = (SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator))
-> (HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator))
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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 Value -> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
ControlStatement r smt =>
SValue r -> MS (r smt)
returnStmt HdrState ValueState Value -> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
ControlStatement r smt =>
SValue r -> MS (r smt)
returnStmt (PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator)))
-> (SValue (p CppSrcCode CppHdrCode)
-> PairState MethodState p Value)
-> SValue (p CppSrcCode CppHdrCode)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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 :: ClassName -> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
throw ClassName
errMsg = (CppSrcCode (Doc, Terminator)
-> CppHdrCode (Doc, Terminator)
-> p CppSrcCode CppHdrCode (Doc, Terminator))
-> SrcState MethodState (Doc, Terminator)
-> HdrState MethodState (Doc, Terminator)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode (Doc, Terminator)
-> CppHdrCode (Doc, Terminator)
-> p CppSrcCode CppHdrCode (Doc, Terminator)
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair (ClassName -> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
ControlStatement r smt =>
ClassName -> MS (r smt)
throw ClassName
errMsg) (ClassName -> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
ControlStatement r smt =>
ClassName -> MS (r smt)
throw ClassName
errMsg)
ifCond :: [(SValue (p CppSrcCode CppHdrCode),
MS (p CppSrcCode CppHdrCode Doc))]
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
ifCond [(SValue (p CppSrcCode CppHdrCode),
MS (p CppSrcCode CppHdrCode Doc))]
bs = ([SrcState ValueState Value]
-> [SrcState MethodState Doc]
-> SrcState MethodState Doc
-> SrcState MethodState (Doc, Terminator))
-> ([HdrState ValueState Value]
-> [HdrState MethodState Doc]
-> HdrState MethodState Doc
-> HdrState MethodState (Doc, Terminator))
-> [PairState MethodState p Value]
-> [MS (p CppSrcCode CppHdrCode Doc)]
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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 ValueState Value]
cs [SrcState MethodState Doc]
bods -> [(SrcState ValueState Value, SrcState MethodState Doc)]
-> SrcState MethodState Doc
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
ControlStatement r smt =>
[(SValue r, MS (r Doc))] -> MS (r Doc) -> MS (r smt)
ifCond ([SrcState ValueState Value]
-> [SrcState MethodState Doc]
-> [(SrcState ValueState Value, SrcState MethodState Doc)]
forall a b. [a] -> [b] -> [(a, b)]
zip [SrcState ValueState 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 (Doc, Terminator)
forall (r :: * -> *) smt.
ControlStatement r smt =>
[(SValue r, MS (r Doc))] -> MS (r Doc) -> MS (r smt)
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))
(((SValue (p CppSrcCode CppHdrCode),
MS (p CppSrcCode CppHdrCode Doc))
-> PairState MethodState p Value)
-> [(SValue (p CppSrcCode CppHdrCode),
MS (p CppSrcCode CppHdrCode Doc))]
-> [PairState MethodState p Value]
forall a b. (a -> b) -> [a] -> [b]
map (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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 (SValue (p CppSrcCode CppHdrCode) -> PairState MethodState p Value)
-> ((SValue (p CppSrcCode CppHdrCode),
MS (p CppSrcCode CppHdrCode Doc))
-> SValue (p CppSrcCode CppHdrCode))
-> (SValue (p CppSrcCode CppHdrCode),
MS (p CppSrcCode CppHdrCode Doc))
-> PairState MethodState p Value
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (SValue (p CppSrcCode CppHdrCode),
MS (p CppSrcCode CppHdrCode Doc))
-> SValue (p CppSrcCode CppHdrCode)
forall a b. (a, b) -> a
fst) [(SValue (p CppSrcCode CppHdrCode),
MS (p CppSrcCode CppHdrCode Doc))]
bs) (((SValue (p CppSrcCode CppHdrCode),
MS (p CppSrcCode CppHdrCode Doc))
-> MS (p CppSrcCode CppHdrCode Doc))
-> [(SValue (p CppSrcCode CppHdrCode),
MS (p CppSrcCode CppHdrCode Doc))]
-> [MS (p CppSrcCode CppHdrCode Doc)]
forall a b. (a -> b) -> [a] -> [b]
map (SValue (p CppSrcCode CppHdrCode),
MS (p CppSrcCode CppHdrCode Doc))
-> MS (p CppSrcCode CppHdrCode Doc)
forall a b. (a, b) -> b
snd [(SValue (p CppSrcCode CppHdrCode),
MS (p CppSrcCode CppHdrCode Doc))]
bs)
switch :: SValue (p CppSrcCode CppHdrCode)
-> [(SValue (p CppSrcCode CppHdrCode),
MS (p CppSrcCode CppHdrCode Doc))]
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
switch SValue (p CppSrcCode CppHdrCode)
v [(SValue (p CppSrcCode CppHdrCode),
MS (p CppSrcCode CppHdrCode Doc))]
cs = (SrcState ValueState Value
-> [SrcState ValueState Value]
-> [SrcState MethodState Doc]
-> SrcState MethodState Doc
-> SrcState MethodState (Doc, Terminator))
-> (HdrState ValueState Value
-> [HdrState ValueState Value]
-> [HdrState MethodState Doc]
-> HdrState MethodState Doc
-> HdrState MethodState (Doc, Terminator))
-> PairState MethodState p Value
-> [PairState MethodState p Value]
-> [MS (p CppSrcCode CppHdrCode Doc)]
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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 ValueState Value
s [SrcState ValueState Value]
cv [SrcState MethodState Doc]
cb -> SrcState ValueState Value
-> [(SrcState ValueState Value, SrcState MethodState Doc)]
-> SrcState MethodState Doc
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
ControlStatement r smt =>
SValue r -> [(SValue r, MS (r Doc))] -> MS (r Doc) -> MS (r smt)
switch SrcState ValueState Value
s ([SrcState ValueState Value]
-> [SrcState MethodState Doc]
-> [(SrcState ValueState Value, SrcState MethodState Doc)]
forall a b. [a] -> [b] -> [(a, b)]
zip [SrcState ValueState 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 (Doc, Terminator)
forall (r :: * -> *) smt.
ControlStatement r smt =>
SValue r -> [(SValue r, MS (r Doc))] -> MS (r Doc) -> MS (r smt)
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
-> SValue (p CppSrcCode CppHdrCode)
-> 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 SValue (p CppSrcCode CppHdrCode)
v) (((SValue (p CppSrcCode CppHdrCode),
MS (p CppSrcCode CppHdrCode Doc))
-> PairState MethodState p Value)
-> [(SValue (p CppSrcCode CppHdrCode),
MS (p CppSrcCode CppHdrCode Doc))]
-> [PairState MethodState p Value]
forall a b. (a -> b) -> [a] -> [b]
map (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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 (SValue (p CppSrcCode CppHdrCode) -> PairState MethodState p Value)
-> ((SValue (p CppSrcCode CppHdrCode),
MS (p CppSrcCode CppHdrCode Doc))
-> SValue (p CppSrcCode CppHdrCode))
-> (SValue (p CppSrcCode CppHdrCode),
MS (p CppSrcCode CppHdrCode Doc))
-> PairState MethodState p Value
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (SValue (p CppSrcCode CppHdrCode),
MS (p CppSrcCode CppHdrCode Doc))
-> SValue (p CppSrcCode CppHdrCode)
forall a b. (a, b) -> a
fst) [(SValue (p CppSrcCode CppHdrCode),
MS (p CppSrcCode CppHdrCode Doc))]
cs) (((SValue (p CppSrcCode CppHdrCode),
MS (p CppSrcCode CppHdrCode Doc))
-> MS (p CppSrcCode CppHdrCode Doc))
-> [(SValue (p CppSrcCode CppHdrCode),
MS (p CppSrcCode CppHdrCode Doc))]
-> [MS (p CppSrcCode CppHdrCode Doc)]
forall a b. (a -> b) -> [a] -> [b]
map (SValue (p CppSrcCode CppHdrCode),
MS (p CppSrcCode CppHdrCode Doc))
-> MS (p CppSrcCode CppHdrCode Doc)
forall a b. (a, b) -> b
snd [(SValue (p CppSrcCode CppHdrCode),
MS (p CppSrcCode CppHdrCode Doc))]
cs)
ifExists :: SValue (p CppSrcCode CppHdrCode)
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
ifExists SValue (p CppSrcCode CppHdrCode)
v = (SrcState ValueState Value
-> SrcState MethodState Doc
-> SrcState MethodState Doc
-> SrcState MethodState (Doc, Terminator))
-> (HdrState ValueState Value
-> HdrState MethodState Doc
-> HdrState MethodState Doc
-> HdrState MethodState (Doc, Terminator))
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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 Value
-> SrcState MethodState Doc
-> SrcState MethodState Doc
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
ControlStatement r smt =>
SValue r -> MS (r Doc) -> MS (r Doc) -> MS (r smt)
ifExists HdrState ValueState Value
-> HdrState MethodState Doc
-> HdrState MethodState Doc
-> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
ControlStatement r smt =>
SValue r -> MS (r Doc) -> MS (r Doc) -> MS (r smt)
ifExists (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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 SValue (p CppSrcCode CppHdrCode)
v)
for :: MS (p CppSrcCode CppHdrCode (Doc, Terminator))
-> SValue (p CppSrcCode CppHdrCode)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
for MS (p CppSrcCode CppHdrCode (Doc, Terminator))
i SValue (p CppSrcCode CppHdrCode)
initv = (SrcState MethodState (Doc, Terminator)
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
-> SrcState MethodState Doc
-> SrcState MethodState (Doc, Terminator))
-> (HdrState MethodState (Doc, Terminator)
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator)
-> HdrState MethodState Doc
-> HdrState MethodState (Doc, Terminator))
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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 (Doc, Terminator)
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
-> SrcState MethodState Doc
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
ControlStatement r smt =>
MS (r smt) -> SValue r -> MS (r smt) -> MS (r Doc) -> MS (r smt)
for HdrState MethodState (Doc, Terminator)
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator)
-> HdrState MethodState Doc
-> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
ControlStatement r smt =>
MS (r smt) -> SValue r -> MS (r smt) -> MS (r Doc) -> MS (r smt)
for MS (p CppSrcCode CppHdrCode (Doc, Terminator))
i (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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 SValue (p CppSrcCode CppHdrCode)
initv)
forRange :: SVariable (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
forRange SVariable (p CppSrcCode CppHdrCode)
i SValue (p CppSrcCode CppHdrCode)
initv SValue (p CppSrcCode CppHdrCode)
finalv SValue (p CppSrcCode CppHdrCode)
stepv = (SrcState ValueState Variable
-> SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState MethodState Doc
-> SrcState MethodState (Doc, Terminator))
-> (HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState MethodState Doc
-> HdrState MethodState (Doc, Terminator))
-> 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 (Doc, Terminator))
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
-> SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState MethodState Doc
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
ControlStatement r smt =>
SVariable r
-> SValue r -> SValue r -> SValue r -> MS (r Doc) -> MS (r smt)
forRange HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState MethodState Doc
-> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
ControlStatement r smt =>
SVariable r
-> SValue r -> SValue r -> SValue r -> MS (r Doc) -> MS (r smt)
forRange (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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 SVariable (p CppSrcCode CppHdrCode)
i)
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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 SValue (p CppSrcCode CppHdrCode)
initv) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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 SValue (p CppSrcCode CppHdrCode)
finalv) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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 SValue (p CppSrcCode CppHdrCode)
stepv)
forEach :: SVariable (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
forEach SVariable (p CppSrcCode CppHdrCode)
e' SValue (p CppSrcCode CppHdrCode)
v MS (p CppSrcCode CppHdrCode Doc)
b = do
p CppSrcCode CppHdrCode (Doc, Terminator)
loop <- (SrcState ValueState Variable
-> SrcState ValueState Value
-> SrcState MethodState Doc
-> SrcState MethodState (Doc, Terminator))
-> (HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState MethodState Doc
-> HdrState MethodState (Doc, Terminator))
-> PairState MethodState p Variable
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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
-> SrcState ValueState Value
-> SrcState MethodState Doc
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
ControlStatement r smt =>
SVariable r -> SValue r -> MS (r Doc) -> MS (r smt)
forEach HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState MethodState Doc
-> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
ControlStatement r smt =>
SVariable r -> SValue r -> MS (r Doc) -> MS (r smt)
forEach (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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 SVariable (p CppSrcCode CppHdrCode)
e') (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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 SValue (p CppSrcCode CppHdrCode)
v) MS (p CppSrcCode CppHdrCode Doc)
b
p CppSrcCode CppHdrCode (Doc, Terminator)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
forall a s. a -> State s a
toState p CppSrcCode CppHdrCode (Doc, Terminator)
loop
while :: SValue (p CppSrcCode CppHdrCode)
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
while SValue (p CppSrcCode CppHdrCode)
v = (SrcState ValueState Value
-> SrcState MethodState Doc
-> SrcState MethodState (Doc, Terminator))
-> (HdrState ValueState Value
-> HdrState MethodState Doc
-> HdrState MethodState (Doc, Terminator))
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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 Value
-> SrcState MethodState Doc
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
ControlStatement r smt =>
SValue r -> MS (r Doc) -> MS (r smt)
while HdrState ValueState Value
-> HdrState MethodState Doc
-> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
ControlStatement r smt =>
SValue r -> MS (r Doc) -> MS (r smt)
while (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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 SValue (p CppSrcCode CppHdrCode)
v)
tryCatch :: MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
tryCatch = (SrcState MethodState Doc
-> SrcState MethodState Doc
-> SrcState MethodState (Doc, Terminator))
-> (HdrState MethodState Doc
-> HdrState MethodState Doc
-> HdrState MethodState (Doc, Terminator))
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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 (Doc, Terminator)
forall (r :: * -> *) smt.
ControlStatement r smt =>
MS (r Doc) -> MS (r Doc) -> MS (r smt)
tryCatch HdrState MethodState Doc
-> HdrState MethodState Doc
-> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
ControlStatement r smt =>
MS (r Doc) -> MS (r Doc) -> MS (r smt)
tryCatch
assert :: SValue (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
assert SValue (p CppSrcCode CppHdrCode)
cond SValue (p CppSrcCode CppHdrCode)
errMsg = (SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator))
-> (HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator))
-> PairState MethodState p Value
-> PairState MethodState p Value
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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 Value
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
ControlStatement r smt =>
SValue r -> SValue r -> MS (r smt)
assert HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
ControlStatement r smt =>
SValue r -> SValue r -> MS (r smt)
assert (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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 SValue (p CppSrcCode CppHdrCode)
cond) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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 SValue (p CppSrcCode CppHdrCode)
errMsg)
instance (Pair p) => ObserverPattern (p CppSrcCode CppHdrCode) (Doc, Terminator) where
notifyObservers :: VS (p CppSrcCode CppHdrCode FuncData)
-> VS (p CppSrcCode CppHdrCode TypeData)
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
notifyObservers VS (p CppSrcCode CppHdrCode FuncData)
f VS (p CppSrcCode CppHdrCode TypeData)
t = (SrcState ValueState FuncData
-> State ValueState (CppSrcCode TypeData)
-> SrcState MethodState (Doc, Terminator))
-> (HdrState ValueState FuncData
-> State ValueState (CppHdrCode TypeData)
-> HdrState MethodState (Doc, Terminator))
-> PairState MethodState p FuncData
-> PairState MethodState p TypeData
-> MS (p CppSrcCode CppHdrCode (Doc, Terminator))
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 (Doc, Terminator)
forall (r :: * -> *) smt.
ObserverPattern r smt =>
VS (r FuncData) -> VS (r TypeData) -> MS (r smt)
notifyObservers HdrState ValueState FuncData
-> State ValueState (CppHdrCode TypeData)
-> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
ObserverPattern r smt =>
VS (r FuncData) -> VS (r TypeData) -> MS (r smt)
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) (Doc, Terminator) where
runStrategy :: ClassName
-> [(ClassName, MS (p CppSrcCode CppHdrCode Doc))]
-> Maybe (SValue (p CppSrcCode CppHdrCode))
-> Maybe (SVariable (p CppSrcCode CppHdrCode))
-> MS (p CppSrcCode CppHdrCode Doc)
runStrategy ClassName
l [(ClassName, MS (p CppSrcCode CppHdrCode Doc))]
strats Maybe (SValue (p CppSrcCode CppHdrCode))
rv Maybe (SVariable (p CppSrcCode CppHdrCode))
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 -> ClassName
-> [(ClassName, SrcState MethodState Doc)]
-> Maybe (SrcState ValueState Value)
-> Maybe (SrcState ValueState Variable)
-> SrcState MethodState Doc
forall (r :: * -> *) smt.
StrategyPattern r smt =>
ClassName
-> [(ClassName, MS (r Doc))]
-> Maybe (SValue r)
-> Maybe (SVariable r)
-> MS (r Doc)
runStrategy ClassName
l ([ClassName]
-> [SrcState MethodState Doc]
-> [(ClassName, SrcState MethodState Doc)]
forall a b. [a] -> [b] -> [(a, b)]
zip (((ClassName, MS (p CppSrcCode CppHdrCode Doc)) -> ClassName)
-> [(ClassName, MS (p CppSrcCode CppHdrCode Doc))] -> [ClassName]
forall a b. (a -> b) -> [a] -> [b]
map (ClassName, MS (p CppSrcCode CppHdrCode Doc)) -> ClassName
forall a b. (a, b) -> a
fst [(ClassName, MS (p CppSrcCode CppHdrCode Doc))]
strats) [SrcState MethodState Doc]
s) ((SValue (p CppSrcCode CppHdrCode) -> SrcState ValueState Value)
-> Maybe (SValue (p CppSrcCode CppHdrCode))
-> Maybe (SrcState ValueState Value)
forall a b. (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((p CppSrcCode CppHdrCode Value -> CppSrcCode Value)
-> SValue (p CppSrcCode CppHdrCode) -> SrcState ValueState Value
forall a b s. (a -> b) -> State s a -> State s b
onStateValue p CppSrcCode CppHdrCode Value -> CppSrcCode Value
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst) Maybe (SValue (p CppSrcCode CppHdrCode))
rv)
((SVariable (p CppSrcCode CppHdrCode)
-> SrcState ValueState Variable)
-> Maybe (SVariable (p CppSrcCode CppHdrCode))
-> Maybe (SrcState ValueState Variable)
forall a b. (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((p CppSrcCode CppHdrCode Variable -> CppSrcCode Variable)
-> SVariable (p CppSrcCode CppHdrCode)
-> SrcState ValueState Variable
forall a b s. (a -> b) -> State s a -> State s b
onStateValue p CppSrcCode CppHdrCode Variable -> CppSrcCode Variable
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst) Maybe (SVariable (p CppSrcCode CppHdrCode))
av))
(\[HdrState MethodState Doc]
s -> ClassName
-> [(ClassName, HdrState MethodState Doc)]
-> Maybe (HdrState ValueState Value)
-> Maybe (HdrState ValueState Variable)
-> HdrState MethodState Doc
forall (r :: * -> *) smt.
StrategyPattern r smt =>
ClassName
-> [(ClassName, MS (r Doc))]
-> Maybe (SValue r)
-> Maybe (SVariable r)
-> MS (r Doc)
runStrategy ClassName
l ([ClassName]
-> [HdrState MethodState Doc]
-> [(ClassName, HdrState MethodState Doc)]
forall a b. [a] -> [b] -> [(a, b)]
zip (((ClassName, MS (p CppSrcCode CppHdrCode Doc)) -> ClassName)
-> [(ClassName, MS (p CppSrcCode CppHdrCode Doc))] -> [ClassName]
forall a b. (a -> b) -> [a] -> [b]
map (ClassName, MS (p CppSrcCode CppHdrCode Doc)) -> ClassName
forall a b. (a, b) -> a
fst [(ClassName, MS (p CppSrcCode CppHdrCode Doc))]
strats) [HdrState MethodState Doc]
s) ((SValue (p CppSrcCode CppHdrCode) -> HdrState ValueState Value)
-> Maybe (SValue (p CppSrcCode CppHdrCode))
-> Maybe (HdrState ValueState Value)
forall a b. (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((p CppSrcCode CppHdrCode Value -> CppHdrCode Value)
-> SValue (p CppSrcCode CppHdrCode) -> HdrState ValueState Value
forall a b s. (a -> b) -> State s a -> State s b
onStateValue p CppSrcCode CppHdrCode Value -> CppHdrCode Value
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd) Maybe (SValue (p CppSrcCode CppHdrCode))
rv)
((SVariable (p CppSrcCode CppHdrCode)
-> HdrState ValueState Variable)
-> Maybe (SVariable (p CppSrcCode CppHdrCode))
-> Maybe (HdrState ValueState Variable)
forall a b. (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((p CppSrcCode CppHdrCode Variable -> CppHdrCode Variable)
-> SVariable (p CppSrcCode CppHdrCode)
-> HdrState ValueState Variable
forall a b s. (a -> b) -> State s a -> State s b
onStateValue p CppSrcCode CppHdrCode Variable -> CppHdrCode Variable
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd) Maybe (SVariable (p CppSrcCode CppHdrCode))
av)) (((ClassName, MS (p CppSrcCode CppHdrCode Doc))
-> MS (p CppSrcCode CppHdrCode Doc))
-> [(ClassName, MS (p CppSrcCode CppHdrCode Doc))]
-> [MS (p CppSrcCode CppHdrCode Doc)]
forall a b. (a -> b) -> [a] -> [b]
map (ClassName, MS (p CppSrcCode CppHdrCode Doc))
-> MS (p CppSrcCode CppHdrCode Doc)
forall a b. (a, b) -> b
snd [(ClassName, 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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair CppSrcCode (Doc, VisibilityTag)
forall (r :: * -> *) vis. VisibilitySym r vis => r vis
private CppHdrCode (Doc, VisibilityTag)
forall (r :: * -> *) vis. 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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair CppSrcCode (Doc, VisibilityTag)
forall (r :: * -> *) vis. VisibilitySym r vis => r vis
public CppHdrCode (Doc, VisibilityTag)
forall (r :: * -> *) vis. 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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair (VisibilityTag -> Doc -> CppSrcCode (Doc, VisibilityTag)
forall (r :: * -> *) vis.
RenderVisibility r vis =>
VisibilityTag -> Doc -> r vis
visibilityFromData VisibilityTag
s Doc
d) (VisibilityTag -> Doc -> CppHdrCode (Doc, VisibilityTag)
forall (r :: * -> *) vis.
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 (r :: * -> *) vis. 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 (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s
instance (Pair p) => MethodTypeSym (p CppSrcCode CppHdrCode) where
mType :: VS (p CppSrcCode CppHdrCode TypeData)
-> MSMthdType (p CppSrcCode CppHdrCode)
mType = (State ValueState (CppSrcCode TypeData)
-> SrcState MethodState TypeData)
-> (State ValueState (CppHdrCode TypeData)
-> HdrState MethodState TypeData)
-> MSMthdType (p CppSrcCode CppHdrCode)
-> MSMthdType (p CppSrcCode CppHdrCode)
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 (r :: * -> *).
MethodTypeSym r =>
VS (r TypeData) -> MSMthdType r
mType State ValueState (CppHdrCode TypeData)
-> HdrState MethodState TypeData
forall (r :: * -> *).
MethodTypeSym r =>
VS (r TypeData) -> MSMthdType r
mType (MSMthdType (p CppSrcCode CppHdrCode)
-> MSMthdType (p CppSrcCode CppHdrCode))
-> (VS (p CppSrcCode CppHdrCode TypeData)
-> MSMthdType (p CppSrcCode CppHdrCode))
-> VS (p CppSrcCode CppHdrCode TypeData)
-> MSMthdType (p CppSrcCode CppHdrCode)
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)
-> MSMthdType (p CppSrcCode CppHdrCode)
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) where
construct :: ClassName -> MSMthdType (p CppSrcCode CppHdrCode)
construct ClassName
n = (CppSrcCode TypeData
-> CppHdrCode TypeData -> p CppSrcCode CppHdrCode TypeData)
-> SrcState MethodState TypeData
-> HdrState MethodState TypeData
-> MSMthdType (p CppSrcCode CppHdrCode)
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair (ClassName -> SrcState MethodState TypeData
forall (r :: * -> *).
OOMethodTypeSym r =>
ClassName -> MSMthdType r
construct ClassName
n) (ClassName -> HdrState MethodState TypeData
forall (r :: * -> *).
OOMethodTypeSym r =>
ClassName -> MSMthdType r
construct ClassName
n)
instance (Pair p) => ParameterSym (p CppSrcCode CppHdrCode) where
param :: SVariable (p CppSrcCode CppHdrCode)
-> 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 (r :: * -> *).
ParameterSym r =>
SVariable r -> MS (r ParamData)
param HdrState ValueState Variable -> HdrState MethodState ParamData
forall (r :: * -> *).
ParameterSym r =>
SVariable r -> MS (r ParamData)
param (PairState MethodState p Variable
-> MS (p CppSrcCode CppHdrCode ParamData))
-> (SVariable (p CppSrcCode CppHdrCode)
-> PairState MethodState p Variable)
-> SVariable (p CppSrcCode CppHdrCode)
-> 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
-> SVariable (p CppSrcCode CppHdrCode)
-> 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 :: SVariable (p CppSrcCode CppHdrCode)
-> 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 (r :: * -> *).
ParameterSym r =>
SVariable r -> MS (r ParamData)
pointerParam HdrState ValueState Variable -> HdrState MethodState ParamData
forall (r :: * -> *).
ParameterSym r =>
SVariable r -> MS (r ParamData)
pointerParam (PairState MethodState p Variable
-> MS (p CppSrcCode CppHdrCode ParamData))
-> (SVariable (p CppSrcCode CppHdrCode)
-> PairState MethodState p Variable)
-> SVariable (p CppSrcCode CppHdrCode)
-> 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
-> SVariable (p CppSrcCode CppHdrCode)
-> 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) where
paramFromData :: SVariable (p CppSrcCode CppHdrCode)
-> Doc -> MS (p CppSrcCode CppHdrCode ParamData)
paramFromData SVariable (p CppSrcCode CppHdrCode)
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 (r :: * -> *).
RenderParam r =>
SVariable r -> Doc -> MS (r ParamData)
`paramFromData` Doc
d) (HdrState ValueState Variable
-> Doc -> HdrState MethodState ParamData
forall (r :: * -> *).
RenderParam r =>
SVariable r -> Doc -> MS (r ParamData)
`paramFromData` Doc
d) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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 SVariable (p CppSrcCode CppHdrCode)
v')
instance (Pair p) => ParamElim (p CppSrcCode CppHdrCode) where
parameterName :: p CppSrcCode CppHdrCode ParamData -> ClassName
parameterName p CppSrcCode CppHdrCode ParamData
p = CppSrcCode ParamData -> ClassName
forall (r :: * -> *). ParamElim r => r ParamData -> ClassName
parameterName (CppSrcCode ParamData -> ClassName)
-> CppSrcCode ParamData -> ClassName
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode ParamData -> CppSrcCode ParamData
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair (CppSrcCode ParamData -> CppSrcCode TypeData
forall (r :: * -> *). ParamElim r => r ParamData -> r TypeData
parameterType (CppSrcCode ParamData -> CppSrcCode TypeData)
-> CppSrcCode ParamData -> CppSrcCode TypeData
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode ParamData -> CppSrcCode ParamData
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode ParamData
p) (CppHdrCode ParamData -> CppHdrCode TypeData
forall (r :: * -> *). ParamElim r => r ParamData -> r TypeData
parameterType (CppHdrCode ParamData -> CppHdrCode TypeData)
-> CppHdrCode ParamData -> CppHdrCode TypeData
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode ParamData -> CppHdrCode ParamData
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
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 (r :: * -> *). ParamElim r => r ParamData -> Doc
RC.parameter (CppSrcCode ParamData -> Doc) -> CppSrcCode ParamData -> Doc
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode ParamData -> CppSrcCode ParamData
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode ParamData
p
instance (Pair p) => MethodSym (p CppSrcCode CppHdrCode)
(Doc, VisibilityTag) (Doc, Terminator) MethodData 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 (r :: * -> *) vis smt md.
MethodSym r vis smt md =>
MS (r Doc) -> MS (r md)
docMain HdrState MethodState Doc -> HdrState MethodState MethodData
forall (r :: * -> *) vis smt md.
MethodSym r vis smt md =>
MS (r Doc) -> MS (r md)
docMain
function :: ClassName
-> 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 ClassName
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
(ClassName
-> CppSrcCode (Doc, VisibilityTag)
-> State ValueState (CppSrcCode TypeData)
-> [SrcState MethodState ParamData]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData
forall (r :: * -> *) vis smt md.
MethodSym r vis smt md =>
ClassName
-> r vis
-> VS (r TypeData)
-> [MS (r ParamData)]
-> MS (r Doc)
-> MS (r md)
function ClassName
n (p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> CppSrcCode (Doc, VisibilityTag)
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s)) (ClassName
-> CppHdrCode (Doc, VisibilityTag)
-> State ValueState (CppHdrCode TypeData)
-> [HdrState MethodState ParamData]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData
forall (r :: * -> *) vis smt md.
MethodSym r vis smt md =>
ClassName
-> r vis
-> VS (r TypeData)
-> [MS (r ParamData)]
-> MS (r Doc)
-> MS (r md)
function ClassName
n (p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode (Doc, VisibilityTag)
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
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 (r :: * -> *) vis smt md.
MethodSym r vis smt md =>
MS (r Doc) -> MS (r md)
mainFunction HdrState MethodState Doc -> HdrState MethodState MethodData
forall (r :: * -> *) vis smt md.
MethodSym r vis smt md =>
MS (r Doc) -> MS (r md)
mainFunction
docFunc :: ClassName
-> [ClassName]
-> Maybe ClassName
-> MS (p CppSrcCode CppHdrCode MethodData)
-> MS (p CppSrcCode CppHdrCode MethodData)
docFunc ClassName
desc [ClassName]
pComms Maybe ClassName
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 (ClassName
-> [ClassName]
-> Maybe ClassName
-> SrcState MethodState MethodData
-> SrcState MethodState MethodData
forall (r :: * -> *) vis smt md.
MethodSym r vis smt md =>
ClassName
-> [ClassName] -> Maybe ClassName -> MS (r md) -> MS (r md)
docFunc ClassName
desc [ClassName]
pComms Maybe ClassName
rComm)
(ClassName
-> [ClassName]
-> Maybe ClassName
-> HdrState MethodState MethodData
-> HdrState MethodState MethodData
forall (r :: * -> *) vis smt md.
MethodSym r vis smt md =>
ClassName
-> [ClassName] -> Maybe ClassName -> MS (r md) -> MS (r md)
docFunc ClassName
desc [ClassName]
pComms Maybe ClassName
rComm)
inOutFunc :: ClassName
-> p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> InOutFunc (p CppSrcCode CppHdrCode) MethodData
inOutFunc ClassName
n p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s [SVariable (p CppSrcCode CppHdrCode)]
is [SVariable (p CppSrcCode CppHdrCode)]
os [SVariable (p CppSrcCode CppHdrCode)]
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
(ClassName
-> CppSrcCode (Doc, VisibilityTag)
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData
forall (r :: * -> *) vis smt md.
MethodSym r vis smt md =>
ClassName -> r vis -> InOutFunc r md
inOutFunc ClassName
n (p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> CppSrcCode (Doc, VisibilityTag)
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s)) (ClassName
-> CppHdrCode (Doc, VisibilityTag)
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData
forall (r :: * -> *) vis smt md.
MethodSym r vis smt md =>
ClassName -> r vis -> InOutFunc r md
inOutFunc ClassName
n (p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode (Doc, VisibilityTag)
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s))
((SVariable (p CppSrcCode CppHdrCode)
-> PairState MethodState p Variable)
-> [SVariable (p CppSrcCode CppHdrCode)]
-> [PairState MethodState p Variable]
forall a b. (a -> b) -> [a] -> [b]
map (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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) [SVariable (p CppSrcCode CppHdrCode)]
is) ((SVariable (p CppSrcCode CppHdrCode)
-> PairState MethodState p Variable)
-> [SVariable (p CppSrcCode CppHdrCode)]
-> [PairState MethodState p Variable]
forall a b. (a -> b) -> [a] -> [b]
map (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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) [SVariable (p CppSrcCode CppHdrCode)]
os)
((SVariable (p CppSrcCode CppHdrCode)
-> PairState MethodState p Variable)
-> [SVariable (p CppSrcCode CppHdrCode)]
-> [PairState MethodState p Variable]
forall a b. (a -> b) -> [a] -> [b]
map (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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) [SVariable (p CppSrcCode CppHdrCode)]
bs)
docInOutFunc :: ClassName
-> p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> DocInOutFunc (p CppSrcCode CppHdrCode) MethodData
docInOutFunc ClassName
n p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s ClassName
desc [(ClassName, SVariable (p CppSrcCode CppHdrCode))]
is [(ClassName, SVariable (p CppSrcCode CppHdrCode))]
os [(ClassName, SVariable (p CppSrcCode CppHdrCode))]
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 -> ClassName
-> CppSrcCode (Doc, VisibilityTag)
-> DocInOutFunc CppSrcCode MethodData
forall (r :: * -> *) vis smt md.
MethodSym r vis smt md =>
ClassName -> r vis -> DocInOutFunc r md
docInOutFunc ClassName
n (p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> CppSrcCode (Doc, VisibilityTag)
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s) ClassName
desc ([ClassName]
-> [SrcState ValueState Variable]
-> [(ClassName, SrcState ValueState Variable)]
forall a b. [a] -> [b] -> [(a, b)]
zip (((ClassName, SVariable (p CppSrcCode CppHdrCode)) -> ClassName)
-> [(ClassName, SVariable (p CppSrcCode CppHdrCode))]
-> [ClassName]
forall a b. (a -> b) -> [a] -> [b]
map (ClassName, SVariable (p CppSrcCode CppHdrCode)) -> ClassName
forall a b. (a, b) -> a
fst
[(ClassName, SVariable (p CppSrcCode CppHdrCode))]
is) [SrcState ValueState Variable]
ins) ([ClassName]
-> [SrcState ValueState Variable]
-> [(ClassName, SrcState ValueState Variable)]
forall a b. [a] -> [b] -> [(a, b)]
zip (((ClassName, SVariable (p CppSrcCode CppHdrCode)) -> ClassName)
-> [(ClassName, SVariable (p CppSrcCode CppHdrCode))]
-> [ClassName]
forall a b. (a -> b) -> [a] -> [b]
map (ClassName, SVariable (p CppSrcCode CppHdrCode)) -> ClassName
forall a b. (a, b) -> a
fst [(ClassName, SVariable (p CppSrcCode CppHdrCode))]
os) [SrcState ValueState Variable]
outs) ([ClassName]
-> [SrcState ValueState Variable]
-> [(ClassName, SrcState ValueState Variable)]
forall a b. [a] -> [b] -> [(a, b)]
zip (((ClassName, SVariable (p CppSrcCode CppHdrCode)) -> ClassName)
-> [(ClassName, SVariable (p CppSrcCode CppHdrCode))]
-> [ClassName]
forall a b. (a -> b) -> [a] -> [b]
map (ClassName, SVariable (p CppSrcCode CppHdrCode)) -> ClassName
forall a b. (a, b) -> a
fst [(ClassName, SVariable (p CppSrcCode CppHdrCode))]
bs) [SrcState ValueState Variable]
both))
(\[HdrState ValueState Variable]
ins [HdrState ValueState Variable]
outs [HdrState ValueState Variable]
both -> ClassName
-> CppHdrCode (Doc, VisibilityTag)
-> DocInOutFunc CppHdrCode MethodData
forall (r :: * -> *) vis smt md.
MethodSym r vis smt md =>
ClassName -> r vis -> DocInOutFunc r md
docInOutFunc ClassName
n (p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode (Doc, VisibilityTag)
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s) ClassName
desc ([ClassName]
-> [HdrState ValueState Variable]
-> [(ClassName, HdrState ValueState Variable)]
forall a b. [a] -> [b] -> [(a, b)]
zip (((ClassName, SVariable (p CppSrcCode CppHdrCode)) -> ClassName)
-> [(ClassName, SVariable (p CppSrcCode CppHdrCode))]
-> [ClassName]
forall a b. (a -> b) -> [a] -> [b]
map (ClassName, SVariable (p CppSrcCode CppHdrCode)) -> ClassName
forall a b. (a, b) -> a
fst
[(ClassName, SVariable (p CppSrcCode CppHdrCode))]
is) [HdrState ValueState Variable]
ins) ([ClassName]
-> [HdrState ValueState Variable]
-> [(ClassName, HdrState ValueState Variable)]
forall a b. [a] -> [b] -> [(a, b)]
zip (((ClassName, SVariable (p CppSrcCode CppHdrCode)) -> ClassName)
-> [(ClassName, SVariable (p CppSrcCode CppHdrCode))]
-> [ClassName]
forall a b. (a -> b) -> [a] -> [b]
map (ClassName, SVariable (p CppSrcCode CppHdrCode)) -> ClassName
forall a b. (a, b) -> a
fst [(ClassName, SVariable (p CppSrcCode CppHdrCode))]
os) [HdrState ValueState Variable]
outs) ([ClassName]
-> [HdrState ValueState Variable]
-> [(ClassName, HdrState ValueState Variable)]
forall a b. [a] -> [b] -> [(a, b)]
zip (((ClassName, SVariable (p CppSrcCode CppHdrCode)) -> ClassName)
-> [(ClassName, SVariable (p CppSrcCode CppHdrCode))]
-> [ClassName]
forall a b. (a -> b) -> [a] -> [b]
map (ClassName, SVariable (p CppSrcCode CppHdrCode)) -> ClassName
forall a b. (a, b) -> a
fst [(ClassName, SVariable (p CppSrcCode CppHdrCode))]
bs) [HdrState ValueState Variable]
both))
(((ClassName, SVariable (p CppSrcCode CppHdrCode))
-> PairState MethodState p Variable)
-> [(ClassName, SVariable (p CppSrcCode CppHdrCode))]
-> [PairState MethodState p Variable]
forall a b. (a -> b) -> [a] -> [b]
map (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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 (SVariable (p CppSrcCode CppHdrCode)
-> PairState MethodState p Variable)
-> ((ClassName, SVariable (p CppSrcCode CppHdrCode))
-> SVariable (p CppSrcCode CppHdrCode))
-> (ClassName, SVariable (p CppSrcCode CppHdrCode))
-> PairState MethodState p Variable
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ClassName, SVariable (p CppSrcCode CppHdrCode))
-> SVariable (p CppSrcCode CppHdrCode)
forall a b. (a, b) -> b
snd) [(ClassName, SVariable (p CppSrcCode CppHdrCode))]
is) (((ClassName, SVariable (p CppSrcCode CppHdrCode))
-> PairState MethodState p Variable)
-> [(ClassName, SVariable (p CppSrcCode CppHdrCode))]
-> [PairState MethodState p Variable]
forall a b. (a -> b) -> [a] -> [b]
map (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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 (SVariable (p CppSrcCode CppHdrCode)
-> PairState MethodState p Variable)
-> ((ClassName, SVariable (p CppSrcCode CppHdrCode))
-> SVariable (p CppSrcCode CppHdrCode))
-> (ClassName, SVariable (p CppSrcCode CppHdrCode))
-> PairState MethodState p Variable
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ClassName, SVariable (p CppSrcCode CppHdrCode))
-> SVariable (p CppSrcCode CppHdrCode)
forall a b. (a, b) -> b
snd) [(ClassName, SVariable (p CppSrcCode CppHdrCode))]
os)
(((ClassName, SVariable (p CppSrcCode CppHdrCode))
-> PairState MethodState p Variable)
-> [(ClassName, SVariable (p CppSrcCode CppHdrCode))]
-> [PairState MethodState p Variable]
forall a b. (a -> b) -> [a] -> [b]
map (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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 (SVariable (p CppSrcCode CppHdrCode)
-> PairState MethodState p Variable)
-> ((ClassName, SVariable (p CppSrcCode CppHdrCode))
-> SVariable (p CppSrcCode CppHdrCode))
-> (ClassName, SVariable (p CppSrcCode CppHdrCode))
-> PairState MethodState p Variable
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ClassName, SVariable (p CppSrcCode CppHdrCode))
-> SVariable (p CppSrcCode CppHdrCode)
forall a b. (a, b) -> b
snd) [(ClassName, SVariable (p CppSrcCode CppHdrCode))]
bs)
instance (Pair p) => OOMethodSym (p CppSrcCode CppHdrCode)
(Doc, VisibilityTag) (Doc, Terminator) MethodData AttachmentData where
method :: ClassName
-> 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 ClassName
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
(ClassName
-> CppSrcCode (Doc, VisibilityTag)
-> CppSrcCode AttachmentData
-> State ValueState (CppSrcCode TypeData)
-> [SrcState MethodState ParamData]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData
forall (r :: * -> *) vis smt md att.
OOMethodSym r vis smt md att =>
ClassName
-> r vis
-> r att
-> VS (r TypeData)
-> [MS (r ParamData)]
-> MS (r Doc)
-> MS (r md)
method ClassName
n (p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> CppSrcCode (Doc, VisibilityTag)
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s) (p CppSrcCode CppHdrCode AttachmentData -> CppSrcCode AttachmentData
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode AttachmentData
p)) (ClassName
-> CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode AttachmentData
-> State ValueState (CppHdrCode TypeData)
-> [HdrState MethodState ParamData]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData
forall (r :: * -> *) vis smt md att.
OOMethodSym r vis smt md att =>
ClassName
-> r vis
-> r att
-> VS (r TypeData)
-> [MS (r ParamData)]
-> MS (r Doc)
-> MS (r md)
method ClassName
n (p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode (Doc, VisibilityTag)
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s) (p CppSrcCode CppHdrCode AttachmentData -> CppHdrCode AttachmentData
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
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 :: SVariable (p CppSrcCode CppHdrCode)
-> 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 (r :: * -> *) vis smt md att.
OOMethodSym r vis smt md att =>
SVariable r -> MS (r md)
getMethod HdrState ValueState Variable -> HdrState MethodState MethodData
forall (r :: * -> *) vis smt md att.
OOMethodSym r vis smt md att =>
SVariable r -> MS (r md)
getMethod (PairState MethodState p Variable
-> MS (p CppSrcCode CppHdrCode MethodData))
-> (SVariable (p CppSrcCode CppHdrCode)
-> PairState MethodState p Variable)
-> SVariable (p CppSrcCode CppHdrCode)
-> 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
-> SVariable (p CppSrcCode CppHdrCode)
-> 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 :: SVariable (p CppSrcCode CppHdrCode)
-> 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 (r :: * -> *) vis smt md att.
OOMethodSym r vis smt md att =>
SVariable r -> MS (r md)
setMethod HdrState ValueState Variable -> HdrState MethodState MethodData
forall (r :: * -> *) vis smt md att.
OOMethodSym r vis smt md att =>
SVariable r -> MS (r md)
setMethod (PairState MethodState p Variable
-> MS (p CppSrcCode CppHdrCode MethodData))
-> (SVariable (p CppSrcCode CppHdrCode)
-> PairState MethodState p Variable)
-> SVariable (p CppSrcCode CppHdrCode)
-> 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
-> SVariable (p CppSrcCode CppHdrCode)
-> 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)
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode MethodData)
constructor [MS (p CppSrcCode CppHdrCode ParamData)]
ps Initializers (p CppSrcCode CppHdrCode)
is = ([SrcState MethodState ParamData]
-> [SrcState ValueState Variable]
-> [SrcState ValueState 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 [SrcState ValueState Value]
ivals -> [SrcState MethodState ParamData]
-> [(SrcState ValueState Variable, SrcState ValueState Value)]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData
forall (r :: * -> *) vis smt md att.
OOMethodSym r vis smt md att =>
[MS (r ParamData)] -> Initializers r -> MS (r Doc) -> MS (r md)
constructor [SrcState MethodState ParamData]
pms ([SrcState ValueState Variable]
-> [SrcState ValueState Value]
-> [(SrcState ValueState Variable, SrcState ValueState Value)]
forall a b. [a] -> [b] -> [(a, b)]
zip [SrcState ValueState Variable]
ivars [SrcState ValueState 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 (r :: * -> *) vis smt md att.
OOMethodSym r vis smt md att =>
[MS (r ParamData)] -> Initializers r -> MS (r Doc) -> MS (r md)
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 (((SVariable (p CppSrcCode CppHdrCode),
SValue (p CppSrcCode CppHdrCode))
-> PairState MethodState p Variable)
-> Initializers (p CppSrcCode CppHdrCode)
-> [PairState MethodState p Variable]
forall a b. (a -> b) -> [a] -> [b]
map (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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 (SVariable (p CppSrcCode CppHdrCode)
-> PairState MethodState p Variable)
-> ((SVariable (p CppSrcCode CppHdrCode),
SValue (p CppSrcCode CppHdrCode))
-> SVariable (p CppSrcCode CppHdrCode))
-> (SVariable (p CppSrcCode CppHdrCode),
SValue (p CppSrcCode CppHdrCode))
-> PairState MethodState p Variable
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (SVariable (p CppSrcCode CppHdrCode),
SValue (p CppSrcCode CppHdrCode))
-> SVariable (p CppSrcCode CppHdrCode)
forall a b. (a, b) -> a
fst) Initializers (p CppSrcCode CppHdrCode)
is) (((SVariable (p CppSrcCode CppHdrCode),
SValue (p CppSrcCode CppHdrCode))
-> PairState MethodState p Value)
-> Initializers (p CppSrcCode CppHdrCode)
-> [PairState MethodState p Value]
forall a b. (a -> b) -> [a] -> [b]
map (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
MethodState
ValueState
-> SValue (p CppSrcCode CppHdrCode)
-> 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 (SValue (p CppSrcCode CppHdrCode) -> PairState MethodState p Value)
-> ((SVariable (p CppSrcCode CppHdrCode),
SValue (p CppSrcCode CppHdrCode))
-> SValue (p CppSrcCode CppHdrCode))
-> (SVariable (p CppSrcCode CppHdrCode),
SValue (p CppSrcCode CppHdrCode))
-> PairState MethodState p Value
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (SVariable (p CppSrcCode CppHdrCode),
SValue (p CppSrcCode CppHdrCode))
-> SValue (p CppSrcCode CppHdrCode)
forall a b. (a, b) -> b
snd) Initializers (p CppSrcCode CppHdrCode)
is)
inOutMethod :: ClassName
-> p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> p CppSrcCode CppHdrCode AttachmentData
-> InOutFunc (p CppSrcCode CppHdrCode) MethodData
inOutMethod ClassName
n p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s p CppSrcCode CppHdrCode AttachmentData
p [SVariable (p CppSrcCode CppHdrCode)]
is [SVariable (p CppSrcCode CppHdrCode)]
os [SVariable (p CppSrcCode CppHdrCode)]
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
(ClassName
-> CppSrcCode (Doc, VisibilityTag)
-> CppSrcCode AttachmentData
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData
forall (r :: * -> *) vis smt md att.
OOMethodSym r vis smt md att =>
ClassName -> r vis -> r att -> InOutFunc r md
inOutMethod ClassName
n (p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> CppSrcCode (Doc, VisibilityTag)
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s) (p CppSrcCode CppHdrCode AttachmentData -> CppSrcCode AttachmentData
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode AttachmentData
p)) (ClassName
-> CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode AttachmentData
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData
forall (r :: * -> *) vis smt md att.
OOMethodSym r vis smt md att =>
ClassName -> r vis -> r att -> InOutFunc r md
inOutMethod ClassName
n (p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode (Doc, VisibilityTag)
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s) (p CppSrcCode CppHdrCode AttachmentData -> CppHdrCode AttachmentData
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd p CppSrcCode CppHdrCode AttachmentData
p))
((SVariable (p CppSrcCode CppHdrCode)
-> PairState MethodState p Variable)
-> [SVariable (p CppSrcCode CppHdrCode)]
-> [PairState MethodState p Variable]
forall a b. (a -> b) -> [a] -> [b]
map (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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) [SVariable (p CppSrcCode CppHdrCode)]
is) ((SVariable (p CppSrcCode CppHdrCode)
-> PairState MethodState p Variable)
-> [SVariable (p CppSrcCode CppHdrCode)]
-> [PairState MethodState p Variable]
forall a b. (a -> b) -> [a] -> [b]
map (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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) [SVariable (p CppSrcCode CppHdrCode)]
os)
((SVariable (p CppSrcCode CppHdrCode)
-> PairState MethodState p Variable)
-> [SVariable (p CppSrcCode CppHdrCode)]
-> [PairState MethodState p Variable]
forall a b. (a -> b) -> [a] -> [b]
map (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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) [SVariable (p CppSrcCode CppHdrCode)]
bs)
docInOutMethod :: ClassName
-> p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> p CppSrcCode CppHdrCode AttachmentData
-> DocInOutFunc (p CppSrcCode CppHdrCode) MethodData
docInOutMethod ClassName
n p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s p CppSrcCode CppHdrCode AttachmentData
p ClassName
desc [(ClassName, SVariable (p CppSrcCode CppHdrCode))]
is [(ClassName, SVariable (p CppSrcCode CppHdrCode))]
os [(ClassName, SVariable (p CppSrcCode CppHdrCode))]
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 -> ClassName
-> CppSrcCode (Doc, VisibilityTag)
-> CppSrcCode AttachmentData
-> DocInOutFunc CppSrcCode MethodData
forall (r :: * -> *) vis smt md att.
OOMethodSym r vis smt md att =>
ClassName -> r vis -> r att -> DocInOutFunc r md
docInOutMethod ClassName
n (p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> CppSrcCode (Doc, VisibilityTag)
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s) (p CppSrcCode CppHdrCode AttachmentData -> CppSrcCode AttachmentData
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode AttachmentData
p) ClassName
desc ([ClassName]
-> [SrcState ValueState Variable]
-> [(ClassName, SrcState ValueState Variable)]
forall a b. [a] -> [b] -> [(a, b)]
zip (((ClassName, SVariable (p CppSrcCode CppHdrCode)) -> ClassName)
-> [(ClassName, SVariable (p CppSrcCode CppHdrCode))]
-> [ClassName]
forall a b. (a -> b) -> [a] -> [b]
map (ClassName, SVariable (p CppSrcCode CppHdrCode)) -> ClassName
forall a b. (a, b) -> a
fst
[(ClassName, SVariable (p CppSrcCode CppHdrCode))]
is) [SrcState ValueState Variable]
ins) ([ClassName]
-> [SrcState ValueState Variable]
-> [(ClassName, SrcState ValueState Variable)]
forall a b. [a] -> [b] -> [(a, b)]
zip (((ClassName, SVariable (p CppSrcCode CppHdrCode)) -> ClassName)
-> [(ClassName, SVariable (p CppSrcCode CppHdrCode))]
-> [ClassName]
forall a b. (a -> b) -> [a] -> [b]
map (ClassName, SVariable (p CppSrcCode CppHdrCode)) -> ClassName
forall a b. (a, b) -> a
fst [(ClassName, SVariable (p CppSrcCode CppHdrCode))]
os) [SrcState ValueState Variable]
outs) ([ClassName]
-> [SrcState ValueState Variable]
-> [(ClassName, SrcState ValueState Variable)]
forall a b. [a] -> [b] -> [(a, b)]
zip (((ClassName, SVariable (p CppSrcCode CppHdrCode)) -> ClassName)
-> [(ClassName, SVariable (p CppSrcCode CppHdrCode))]
-> [ClassName]
forall a b. (a -> b) -> [a] -> [b]
map (ClassName, SVariable (p CppSrcCode CppHdrCode)) -> ClassName
forall a b. (a, b) -> a
fst [(ClassName, SVariable (p CppSrcCode CppHdrCode))]
bs) [SrcState ValueState Variable]
both))
(\[HdrState ValueState Variable]
ins [HdrState ValueState Variable]
outs [HdrState ValueState Variable]
both -> ClassName
-> CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode AttachmentData
-> DocInOutFunc CppHdrCode MethodData
forall (r :: * -> *) vis smt md att.
OOMethodSym r vis smt md att =>
ClassName -> r vis -> r att -> DocInOutFunc r md
docInOutMethod ClassName
n (p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode (Doc, VisibilityTag)
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s) (p CppSrcCode CppHdrCode AttachmentData -> CppHdrCode AttachmentData
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd p CppSrcCode CppHdrCode AttachmentData
p) ClassName
desc ([ClassName]
-> [HdrState ValueState Variable]
-> [(ClassName, HdrState ValueState Variable)]
forall a b. [a] -> [b] -> [(a, b)]
zip (((ClassName, SVariable (p CppSrcCode CppHdrCode)) -> ClassName)
-> [(ClassName, SVariable (p CppSrcCode CppHdrCode))]
-> [ClassName]
forall a b. (a -> b) -> [a] -> [b]
map (ClassName, SVariable (p CppSrcCode CppHdrCode)) -> ClassName
forall a b. (a, b) -> a
fst
[(ClassName, SVariable (p CppSrcCode CppHdrCode))]
is) [HdrState ValueState Variable]
ins) ([ClassName]
-> [HdrState ValueState Variable]
-> [(ClassName, HdrState ValueState Variable)]
forall a b. [a] -> [b] -> [(a, b)]
zip (((ClassName, SVariable (p CppSrcCode CppHdrCode)) -> ClassName)
-> [(ClassName, SVariable (p CppSrcCode CppHdrCode))]
-> [ClassName]
forall a b. (a -> b) -> [a] -> [b]
map (ClassName, SVariable (p CppSrcCode CppHdrCode)) -> ClassName
forall a b. (a, b) -> a
fst [(ClassName, SVariable (p CppSrcCode CppHdrCode))]
os) [HdrState ValueState Variable]
outs) ([ClassName]
-> [HdrState ValueState Variable]
-> [(ClassName, HdrState ValueState Variable)]
forall a b. [a] -> [b] -> [(a, b)]
zip (((ClassName, SVariable (p CppSrcCode CppHdrCode)) -> ClassName)
-> [(ClassName, SVariable (p CppSrcCode CppHdrCode))]
-> [ClassName]
forall a b. (a -> b) -> [a] -> [b]
map (ClassName, SVariable (p CppSrcCode CppHdrCode)) -> ClassName
forall a b. (a, b) -> a
fst [(ClassName, SVariable (p CppSrcCode CppHdrCode))]
bs) [HdrState ValueState Variable]
both))
(((ClassName, SVariable (p CppSrcCode CppHdrCode))
-> PairState MethodState p Variable)
-> [(ClassName, SVariable (p CppSrcCode CppHdrCode))]
-> [PairState MethodState p Variable]
forall a b. (a -> b) -> [a] -> [b]
map (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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 (SVariable (p CppSrcCode CppHdrCode)
-> PairState MethodState p Variable)
-> ((ClassName, SVariable (p CppSrcCode CppHdrCode))
-> SVariable (p CppSrcCode CppHdrCode))
-> (ClassName, SVariable (p CppSrcCode CppHdrCode))
-> PairState MethodState p Variable
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ClassName, SVariable (p CppSrcCode CppHdrCode))
-> SVariable (p CppSrcCode CppHdrCode)
forall a b. (a, b) -> b
snd) [(ClassName, SVariable (p CppSrcCode CppHdrCode))]
is) (((ClassName, SVariable (p CppSrcCode CppHdrCode))
-> PairState MethodState p Variable)
-> [(ClassName, SVariable (p CppSrcCode CppHdrCode))]
-> [PairState MethodState p Variable]
forall a b. (a -> b) -> [a] -> [b]
map (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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 (SVariable (p CppSrcCode CppHdrCode)
-> PairState MethodState p Variable)
-> ((ClassName, SVariable (p CppSrcCode CppHdrCode))
-> SVariable (p CppSrcCode CppHdrCode))
-> (ClassName, SVariable (p CppSrcCode CppHdrCode))
-> PairState MethodState p Variable
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ClassName, SVariable (p CppSrcCode CppHdrCode))
-> SVariable (p CppSrcCode CppHdrCode)
forall a b. (a, b) -> b
snd) [(ClassName, SVariable (p CppSrcCode CppHdrCode))]
os)
(((ClassName, SVariable (p CppSrcCode CppHdrCode))
-> PairState MethodState p Variable)
-> [(ClassName, SVariable (p CppSrcCode CppHdrCode))]
-> [PairState MethodState p Variable]
forall a b. (a -> b) -> [a] -> [b]
map (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
MethodState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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 (SVariable (p CppSrcCode CppHdrCode)
-> PairState MethodState p Variable)
-> ((ClassName, SVariable (p CppSrcCode CppHdrCode))
-> SVariable (p CppSrcCode CppHdrCode))
-> (ClassName, SVariable (p CppSrcCode CppHdrCode))
-> PairState MethodState p Variable
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ClassName, SVariable (p CppSrcCode CppHdrCode))
-> SVariable (p CppSrcCode CppHdrCode)
forall a b. (a, b) -> b
snd) [(ClassName, SVariable (p CppSrcCode CppHdrCode))]
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 :: * -> *) md.
RenderMethod r md =>
MS (r Doc) -> MS (r md) -> MS (r md)
commentedFunc HdrState MethodState Doc
-> HdrState MethodState MethodData
-> HdrState MethodState MethodData
forall (r :: * -> *) md.
RenderMethod r md =>
MS (r Doc) -> MS (r md) -> MS (r md)
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair (VisibilityTag -> Doc -> SrcState MethodState MethodData
forall (r :: * -> *) md.
RenderMethod r md =>
VisibilityTag -> Doc -> MS (r md)
mthdFromData VisibilityTag
s Doc
d) (VisibilityTag -> Doc -> HdrState MethodState MethodData
forall (r :: * -> *) md.
RenderMethod r md =>
VisibilityTag -> Doc -> MS (r md)
mthdFromData VisibilityTag
s Doc
d)
instance (Pair p) => OORenderMethod (p CppSrcCode CppHdrCode)
(Doc, VisibilityTag) MethodData AttachmentData where
intMethod :: Bool
-> ClassName
-> p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> p CppSrcCode CppHdrCode AttachmentData
-> MSMthdType (p CppSrcCode CppHdrCode)
-> [MS (p CppSrcCode CppHdrCode ParamData)]
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode MethodData)
intMethod Bool
m ClassName
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)
-> MSMthdType (p CppSrcCode CppHdrCode)
-> [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
-> ClassName
-> CppSrcCode (Doc, VisibilityTag)
-> CppSrcCode AttachmentData
-> SrcState MethodState TypeData
-> [SrcState MethodState ParamData]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData
forall (r :: * -> *) vis md att.
OORenderMethod r vis md att =>
Bool
-> ClassName
-> r vis
-> r att
-> MSMthdType r
-> [MS (r ParamData)]
-> MS (r Doc)
-> MS (r md)
intMethod Bool
m ClassName
n (p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> CppSrcCode (Doc, VisibilityTag)
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s) (p CppSrcCode CppHdrCode AttachmentData -> CppSrcCode AttachmentData
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode AttachmentData
p)) (Bool
-> ClassName
-> CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode AttachmentData
-> HdrState MethodState TypeData
-> [HdrState MethodState ParamData]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData
forall (r :: * -> *) vis md att.
OORenderMethod r vis md att =>
Bool
-> ClassName
-> r vis
-> r att
-> MSMthdType r
-> [MS (r ParamData)]
-> MS (r Doc)
-> MS (r md)
intMethod Bool
m ClassName
n (p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode (Doc, VisibilityTag)
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s) (p CppSrcCode CppHdrCode AttachmentData -> CppHdrCode AttachmentData
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd p CppSrcCode CppHdrCode AttachmentData
p))
intFunc :: Bool
-> ClassName
-> p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> p CppSrcCode CppHdrCode AttachmentData
-> MSMthdType (p CppSrcCode CppHdrCode)
-> [MS (p CppSrcCode CppHdrCode ParamData)]
-> MS (p CppSrcCode CppHdrCode Doc)
-> MS (p CppSrcCode CppHdrCode MethodData)
intFunc Bool
m ClassName
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)
-> MSMthdType (p CppSrcCode CppHdrCode)
-> [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
-> ClassName
-> CppSrcCode (Doc, VisibilityTag)
-> CppSrcCode AttachmentData
-> SrcState MethodState TypeData
-> [SrcState MethodState ParamData]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData
forall (r :: * -> *) vis md att.
OORenderMethod r vis md att =>
Bool
-> ClassName
-> r vis
-> r att
-> MSMthdType r
-> [MS (r ParamData)]
-> MS (r Doc)
-> MS (r md)
intFunc Bool
m ClassName
n (p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> CppSrcCode (Doc, VisibilityTag)
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s) (p CppSrcCode CppHdrCode AttachmentData -> CppSrcCode AttachmentData
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode AttachmentData
p)) (Bool
-> ClassName
-> CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode AttachmentData
-> HdrState MethodState TypeData
-> [HdrState MethodState ParamData]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData
forall (r :: * -> *) vis md att.
OORenderMethod r vis md att =>
Bool
-> ClassName
-> r vis
-> r att
-> MSMthdType r
-> [MS (r ParamData)]
-> MS (r Doc)
-> MS (r md)
intFunc Bool
m ClassName
n (p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode (Doc, VisibilityTag)
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s) (p CppSrcCode CppHdrCode AttachmentData -> CppHdrCode AttachmentData
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd p CppSrcCode CppHdrCode AttachmentData
p))
destructor :: forall svr.
[CSStateVar (p CppSrcCode CppHdrCode) svr]
-> MS (p CppSrcCode CppHdrCode MethodData)
destructor = ClassName
-> [CSStateVar (p CppSrcCode CppHdrCode) svr]
-> MS (p CppSrcCode CppHdrCode MethodData)
forall a. HasCallStack => ClassName -> a
error (ClassName
-> [CSStateVar (p CppSrcCode CppHdrCode) svr]
-> MS (p CppSrcCode CppHdrCode MethodData))
-> ClassName
-> [CSStateVar (p CppSrcCode CppHdrCode) svr]
-> MS (p CppSrcCode CppHdrCode MethodData)
forall a b. (a -> b) -> a -> b
$ ClassName -> ClassName
CP.destructorError ClassName
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 (r :: * -> *) md. MethodElim r md => r md -> Doc
RC.method (CppSrcCode MethodData -> Doc) -> CppSrcCode MethodData -> Doc
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode MethodData -> CppSrcCode MethodData
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode MethodData
m
instance (Pair p) => StateVarSym (p CppSrcCode CppHdrCode)
(Doc, VisibilityTag) StateVarData AttachmentData where
stateVar :: p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> p CppSrcCode CppHdrCode AttachmentData
-> SVariable (p CppSrcCode CppHdrCode)
-> 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 (r :: * -> *) vis svr att.
StateVarSym r vis svr att =>
r vis -> r att -> SVariable r -> CSStateVar r svr
stateVar (p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> CppSrcCode (Doc, VisibilityTag)
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s) (p CppSrcCode CppHdrCode AttachmentData -> CppSrcCode AttachmentData
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode AttachmentData
p)) (CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode AttachmentData
-> HdrState ValueState Variable
-> HdrState ClassState StateVarData
forall (r :: * -> *) vis svr att.
StateVarSym r vis svr att =>
r vis -> r att -> SVariable r -> CSStateVar r svr
stateVar (p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode (Doc, VisibilityTag)
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s) (p CppSrcCode CppHdrCode AttachmentData -> CppHdrCode AttachmentData
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd p CppSrcCode CppHdrCode AttachmentData
p))
(PairState ClassState p Variable
-> CSStateVar (p CppSrcCode CppHdrCode) StateVarData)
-> (SVariable (p CppSrcCode CppHdrCode)
-> PairState ClassState p Variable)
-> SVariable (p CppSrcCode CppHdrCode)
-> 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
-> SVariable (p CppSrcCode CppHdrCode)
-> 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
-> SVariable (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> CSStateVar (p CppSrcCode CppHdrCode) StateVarData
stateVarDef p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s p CppSrcCode CppHdrCode AttachmentData
p SVariable (p CppSrcCode CppHdrCode)
vr SValue (p CppSrcCode CppHdrCode)
vl = (SrcState ValueState Variable
-> SrcState ValueState 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
-> SrcState ValueState Value
-> SrcState ClassState StateVarData
forall (r :: * -> *) vis svr att.
StateVarSym r vis svr att =>
r vis -> r att -> SVariable r -> SValue r -> CSStateVar r svr
stateVarDef (p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> CppSrcCode (Doc, VisibilityTag)
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s) (p CppSrcCode CppHdrCode AttachmentData -> CppSrcCode AttachmentData
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
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 (r :: * -> *) vis svr att.
StateVarSym r vis svr att =>
r vis -> r att -> SVariable r -> SValue r -> CSStateVar r svr
stateVarDef (p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode (Doc, VisibilityTag)
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s) (p CppSrcCode CppHdrCode AttachmentData -> CppHdrCode AttachmentData
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd p CppSrcCode CppHdrCode AttachmentData
p)) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
ClassState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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 SVariable (p CppSrcCode CppHdrCode)
vr) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
ClassState
ValueState
-> SValue (p CppSrcCode CppHdrCode) -> 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 SValue (p CppSrcCode CppHdrCode)
vl)
constVar :: p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> SVariable (p CppSrcCode CppHdrCode)
-> SValue (p CppSrcCode CppHdrCode)
-> CSStateVar (p CppSrcCode CppHdrCode) StateVarData
constVar p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s SVariable (p CppSrcCode CppHdrCode)
vr SValue (p CppSrcCode CppHdrCode)
vl = (SrcState ValueState Variable
-> SrcState ValueState 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
-> SrcState ValueState Value
-> SrcState ClassState StateVarData
forall (r :: * -> *) vis svr att.
StateVarSym r vis svr att =>
r vis -> SVariable r -> SValue r -> CSStateVar r svr
constVar (p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> CppSrcCode (Doc, VisibilityTag)
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
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 (r :: * -> *) vis svr att.
StateVarSym r vis svr att =>
r vis -> SVariable r -> SValue r -> CSStateVar r svr
constVar (p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode (Doc, VisibilityTag)
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s))
(LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Variable))
ClassState
ValueState
-> SVariable (p CppSrcCode CppHdrCode)
-> 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 SVariable (p CppSrcCode CppHdrCode)
vr) (LensLike'
(Zoomed
(StateT ValueState Identity) (p CppSrcCode CppHdrCode Value))
ClassState
ValueState
-> SValue (p CppSrcCode CppHdrCode) -> 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 SValue (p CppSrcCode CppHdrCode)
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 (r :: * -> *) svr. StateVarElim r svr => r svr -> Doc
RC.stateVar (CppSrcCode StateVarData -> Doc) -> CppSrcCode StateVarData -> Doc
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode StateVarData -> CppSrcCode StateVarData
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode StateVarData
v
instance (Pair p) => ClassSym (p CppSrcCode CppHdrCode)
(Doc, VisibilityTag) (Doc, Terminator) MethodData StateVarData AttachmentData where
buildClass :: Maybe ClassName
-> [CSStateVar (p CppSrcCode CppHdrCode) StateVarData]
-> [MS (p CppSrcCode CppHdrCode MethodData)]
-> [MS (p CppSrcCode CppHdrCode MethodData)]
-> CS (p CppSrcCode CppHdrCode Doc)
buildClass Maybe ClassName
p [CSStateVar (p CppSrcCode CppHdrCode) StateVarData]
vs [MS (p CppSrcCode CppHdrCode MethodData)]
cs [MS (p CppSrcCode CppHdrCode MethodData)]
fs = do
ClassName
n <- LensLike'
(Zoomed (StateT FileState Identity) ClassName) ClassState FileState
-> StateT FileState Identity ClassName
-> StateT ClassState Identity ClassName
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) ClassName) ClassState FileState
(FileState -> Focusing Identity ClassName FileState)
-> ClassState -> Focusing Identity ClassName ClassState
Lens' ClassState FileState
lensCStoFS StateT FileState Identity ClassName
getModuleName
(ClassState -> ClassState) -> StateT ClassState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (ClassName -> ClassState -> ClassState
setClassName ClassName
n)
([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 (Maybe ClassName
-> [SrcState ClassState StateVarData]
-> [SrcState MethodState MethodData]
-> [SrcState MethodState MethodData]
-> SrcState ClassState Doc
forall (r :: * -> *) vis smt md svr att.
ClassSym r vis smt md svr att =>
Maybe ClassName
-> [CSStateVar r svr] -> [MS (r md)] -> [MS (r md)] -> CS (r Doc)
buildClass Maybe ClassName
p) (Maybe ClassName
-> [HdrState ClassState StateVarData]
-> [HdrState MethodState MethodData]
-> [HdrState MethodState MethodData]
-> HdrState ClassState Doc
forall (r :: * -> *) vis smt md svr att.
ClassSym r vis smt md svr att =>
Maybe ClassName
-> [CSStateVar r svr] -> [MS (r md)] -> [MS (r md)] -> CS (r Doc)
buildClass Maybe ClassName
p) [CSStateVar (p CppSrcCode CppHdrCode) StateVarData]
vs ((MS (p CppSrcCode CppHdrCode MethodData)
-> PairState ClassState p MethodData)
-> [MS (p CppSrcCode CppHdrCode MethodData)]
-> [PairState ClassState p MethodData]
forall a b. (a -> b) -> [a] -> [b]
map (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)]
cs)
((MS (p CppSrcCode CppHdrCode MethodData)
-> PairState ClassState p MethodData)
-> [MS (p CppSrcCode CppHdrCode MethodData)]
-> [PairState ClassState p MethodData]
forall a b. (a -> b) -> [a] -> [b]
map (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)]
fs)
extraClass :: ClassName
-> Maybe ClassName
-> [CSStateVar (p CppSrcCode CppHdrCode) StateVarData]
-> [MS (p CppSrcCode CppHdrCode MethodData)]
-> [MS (p CppSrcCode CppHdrCode MethodData)]
-> CS (p CppSrcCode CppHdrCode Doc)
extraClass ClassName
n Maybe ClassName
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 (ClassName -> ClassState -> ClassState
setClassName ClassName
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
(ClassName
-> Maybe ClassName
-> [SrcState ClassState StateVarData]
-> [SrcState MethodState MethodData]
-> [SrcState MethodState MethodData]
-> SrcState ClassState Doc
forall (r :: * -> *) vis smt md svr att.
ClassSym r vis smt md svr att =>
ClassName
-> Maybe ClassName
-> [CSStateVar r svr]
-> [MS (r md)]
-> [MS (r md)]
-> CS (r Doc)
extraClass ClassName
n Maybe ClassName
p) (ClassName
-> Maybe ClassName
-> [HdrState ClassState StateVarData]
-> [HdrState MethodState MethodData]
-> [HdrState MethodState MethodData]
-> HdrState ClassState Doc
forall (r :: * -> *) vis smt md svr att.
ClassSym r vis smt md svr att =>
ClassName
-> Maybe ClassName
-> [CSStateVar r svr]
-> [MS (r md)]
-> [MS (r md)]
-> CS (r Doc)
extraClass ClassName
n Maybe ClassName
p)
[CSStateVar (p CppSrcCode CppHdrCode) StateVarData]
vs ((MS (p CppSrcCode CppHdrCode MethodData)
-> PairState ClassState p MethodData)
-> [MS (p CppSrcCode CppHdrCode MethodData)]
-> [PairState ClassState p MethodData]
forall a b. (a -> b) -> [a] -> [b]
map (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)]
cs) ((MS (p CppSrcCode CppHdrCode MethodData)
-> PairState ClassState p MethodData)
-> [MS (p CppSrcCode CppHdrCode MethodData)]
-> [PairState ClassState p MethodData]
forall a b. (a -> b) -> [a] -> [b]
map (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)]
fs)
implementingClass :: ClassName
-> [ClassName]
-> [CSStateVar (p CppSrcCode CppHdrCode) StateVarData]
-> [MS (p CppSrcCode CppHdrCode MethodData)]
-> [MS (p CppSrcCode CppHdrCode MethodData)]
-> CS (p CppSrcCode CppHdrCode Doc)
implementingClass ClassName
n [ClassName]
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 (ClassName -> ClassState -> ClassState
setClassName ClassName
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
(ClassName
-> [ClassName]
-> [SrcState ClassState StateVarData]
-> [SrcState MethodState MethodData]
-> [SrcState MethodState MethodData]
-> SrcState ClassState Doc
forall (r :: * -> *) vis smt md svr att.
ClassSym r vis smt md svr att =>
ClassName
-> [ClassName]
-> [CSStateVar r svr]
-> [MS (r md)]
-> [MS (r md)]
-> CS (r Doc)
implementingClass ClassName
n [ClassName]
is) (ClassName
-> [ClassName]
-> [HdrState ClassState StateVarData]
-> [HdrState MethodState MethodData]
-> [HdrState MethodState MethodData]
-> HdrState ClassState Doc
forall (r :: * -> *) vis smt md svr att.
ClassSym r vis smt md svr att =>
ClassName
-> [ClassName]
-> [CSStateVar r svr]
-> [MS (r md)]
-> [MS (r md)]
-> CS (r Doc)
implementingClass ClassName
n [ClassName]
is)
[CSStateVar (p CppSrcCode CppHdrCode) StateVarData]
vs ((MS (p CppSrcCode CppHdrCode MethodData)
-> PairState ClassState p MethodData)
-> [MS (p CppSrcCode CppHdrCode MethodData)]
-> [PairState ClassState p MethodData]
forall a b. (a -> b) -> [a] -> [b]
map (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)]
cs) ((MS (p CppSrcCode CppHdrCode MethodData)
-> PairState ClassState p MethodData)
-> [MS (p CppSrcCode CppHdrCode MethodData)]
-> [PairState ClassState p MethodData]
forall a b. (a -> b) -> [a] -> [b]
map (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)]
fs)
docClass :: ClassName
-> CS (p CppSrcCode CppHdrCode Doc)
-> CS (p CppSrcCode CppHdrCode Doc)
docClass ClassName
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 (ClassName -> SrcState ClassState Doc -> SrcState ClassState Doc
forall (r :: * -> *) vis smt md svr att.
ClassSym r vis smt md svr att =>
ClassName -> CS (r Doc) -> CS (r Doc)
docClass ClassName
d) (ClassName -> HdrState ClassState Doc -> HdrState ClassState Doc
forall (r :: * -> *) vis smt md svr att.
ClassSym r vis smt md svr att =>
ClassName -> CS (r Doc) -> CS (r Doc)
docClass ClassName
d)
instance (Pair p) => RenderClass (p CppSrcCode CppHdrCode)
(Doc, VisibilityTag) MethodData StateVarData where
intClass :: ClassName
-> 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 ClassName
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
(ClassName
-> CppSrcCode (Doc, VisibilityTag)
-> CppSrcCode Doc
-> [SrcState ClassState StateVarData]
-> [SrcState MethodState MethodData]
-> [SrcState MethodState MethodData]
-> SrcState ClassState Doc
forall (r :: * -> *) vis md svr.
RenderClass r vis md svr =>
ClassName
-> r vis
-> r Doc
-> [CSStateVar r svr]
-> [MS (r md)]
-> [MS (r md)]
-> CS (r Doc)
intClass ClassName
n (p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> CppSrcCode (Doc, VisibilityTag)
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s) (p CppSrcCode CppHdrCode Doc -> CppSrcCode Doc
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode Doc
i)) (ClassName
-> CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode Doc
-> [HdrState ClassState StateVarData]
-> [HdrState MethodState MethodData]
-> [HdrState MethodState MethodData]
-> HdrState ClassState Doc
forall (r :: * -> *) vis md svr.
RenderClass r vis md svr =>
ClassName
-> r vis
-> r Doc
-> [CSStateVar r svr]
-> [MS (r md)]
-> [MS (r md)]
-> CS (r Doc)
intClass ClassName
n (p CppSrcCode CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode (Doc, VisibilityTag)
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd p CppSrcCode CppHdrCode (Doc, VisibilityTag)
s) (p CppSrcCode CppHdrCode Doc -> CppHdrCode Doc
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd p CppSrcCode CppHdrCode Doc
i))
[CSStateVar (p CppSrcCode CppHdrCode) StateVarData]
vs ((MS (p CppSrcCode CppHdrCode MethodData)
-> PairState ClassState p MethodData)
-> [MS (p CppSrcCode CppHdrCode MethodData)]
-> [PairState ClassState p MethodData]
forall a b. (a -> b) -> [a] -> [b]
map (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)]
cs) ((MS (p CppSrcCode CppHdrCode MethodData)
-> PairState ClassState p MethodData)
-> [MS (p CppSrcCode CppHdrCode MethodData)]
-> [PairState ClassState p MethodData]
forall a b. (a -> b) -> [a] -> [b]
map (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)]
fs)
inherit :: Maybe ClassName -> p CppSrcCode CppHdrCode Doc
inherit Maybe ClassName
n = CppSrcCode Doc -> CppHdrCode Doc -> p CppSrcCode CppHdrCode Doc
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair (Maybe ClassName -> CppSrcCode Doc
forall (r :: * -> *) vis md svr.
RenderClass r vis md svr =>
Maybe ClassName -> r Doc
inherit Maybe ClassName
n) (Maybe ClassName -> CppHdrCode Doc
forall (r :: * -> *) vis md svr.
RenderClass r vis md svr =>
Maybe ClassName -> r Doc
inherit Maybe ClassName
n)
implements :: [ClassName] -> p CppSrcCode CppHdrCode Doc
implements [ClassName]
is = CppSrcCode Doc -> CppHdrCode Doc -> p CppSrcCode CppHdrCode Doc
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair ([ClassName] -> CppSrcCode Doc
forall (r :: * -> *) vis md svr.
RenderClass r vis md svr =>
[ClassName] -> r Doc
implements [ClassName]
is) ([ClassName] -> CppHdrCode Doc
forall (r :: * -> *) vis md svr.
RenderClass r vis md svr =>
[ClassName] -> r Doc
implements [ClassName]
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 :: * -> *) vis md svr.
RenderClass r vis md svr =>
CS (r Doc) -> CS (r Doc) -> CS (r Doc)
commentedClass HdrState ClassState Doc
-> HdrState ClassState Doc -> HdrState ClassState Doc
forall (r :: * -> *) vis md svr.
RenderClass r vis md svr =>
CS (r Doc) -> CS (r Doc) -> CS (r Doc)
commentedClass
instance (Pair p) => ClassElim (p CppSrcCode CppHdrCode) where
class' :: p CppSrcCode CppHdrCode Doc -> Doc
class' p CppSrcCode CppHdrCode Doc
c = CppSrcCode Doc -> Doc
forall (r :: * -> *). ClassElim r => r Doc -> Doc
RC.class' (CppSrcCode Doc -> Doc) -> CppSrcCode Doc -> Doc
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode Doc -> CppSrcCode Doc
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode Doc
c
instance (Pair p) => ModuleSym (p CppSrcCode CppHdrCode)
(Doc, VisibilityTag) (Doc, Terminator) MethodData StateVarData AttachmentData where
buildModule :: ClassName
-> [ClassName]
-> [MS (p CppSrcCode CppHdrCode MethodData)]
-> [CS (p CppSrcCode CppHdrCode Doc)]
-> FS (p CppSrcCode CppHdrCode Module)
buildModule ClassName
n [ClassName]
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 (ClassName -> FileState -> FileState
setModuleName ClassName
n)
([SrcState MethodState MethodData]
-> [SrcState ClassState Doc] -> SrcState FileState Module)
-> ([HdrState MethodState MethodData]
-> [HdrState ClassState Doc] -> HdrState FileState Module)
-> [PairState FileState p MethodData]
-> [PairState FileState p Doc]
-> FS (p CppSrcCode CppHdrCode Module)
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 (ClassName
-> [ClassName]
-> [SrcState MethodState MethodData]
-> [SrcState ClassState Doc]
-> SrcState FileState Module
forall (r :: * -> *) vis smt md svr att.
ModuleSym r vis smt md svr att =>
ClassName
-> [ClassName] -> [MS (r md)] -> [CS (r Doc)] -> FS (r Module)
buildModule ClassName
n [ClassName]
is) (ClassName
-> [ClassName]
-> [HdrState MethodState MethodData]
-> [HdrState ClassState Doc]
-> HdrState FileState Module
forall (r :: * -> *) vis smt md svr att.
ModuleSym r vis smt md svr att =>
ClassName
-> [ClassName] -> [MS (r md)] -> [CS (r Doc)] -> FS (r Module)
buildModule ClassName
n [ClassName]
is)
((MS (p CppSrcCode CppHdrCode MethodData)
-> PairState FileState p MethodData)
-> [MS (p CppSrcCode CppHdrCode MethodData)]
-> [PairState FileState p MethodData]
forall a b. (a -> b) -> [a] -> [b]
map (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)]
ms) ((CS (p CppSrcCode CppHdrCode Doc) -> PairState FileState p Doc)
-> [CS (p CppSrcCode CppHdrCode Doc)]
-> [PairState FileState p Doc]
forall a b. (a -> b) -> [a] -> [b]
map (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)]
cs)
instance (Pair p) => RenderMod (p CppSrcCode CppHdrCode) where
modFromData :: ClassName -> FS Doc -> FS (p CppSrcCode CppHdrCode Module)
modFromData ClassName
n FS Doc
d = (CppSrcCode Module
-> CppHdrCode Module -> p CppSrcCode CppHdrCode Module)
-> SrcState FileState Module
-> HdrState FileState Module
-> FS (p CppSrcCode CppHdrCode Module)
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues CppSrcCode Module
-> CppHdrCode Module -> p CppSrcCode CppHdrCode Module
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair (ClassName -> FS Doc -> SrcState FileState Module
forall (r :: * -> *).
RenderMod r =>
ClassName -> FS Doc -> FS (r Module)
modFromData ClassName
n FS Doc
d) (ClassName -> FS Doc -> HdrState FileState Module
forall (r :: * -> *).
RenderMod r =>
ClassName -> FS Doc -> FS (r Module)
modFromData ClassName
n FS Doc
d)
updateModuleDoc :: (Doc -> Doc)
-> p CppSrcCode CppHdrCode Module -> p CppSrcCode CppHdrCode Module
updateModuleDoc Doc -> Doc
f p CppSrcCode CppHdrCode Module
m = CppSrcCode Module
-> CppHdrCode Module -> p CppSrcCode CppHdrCode Module
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair
((Doc -> Doc) -> CppSrcCode Module -> CppSrcCode Module
forall (r :: * -> *).
RenderMod r =>
(Doc -> Doc) -> r Module -> r Module
updateModuleDoc Doc -> Doc
f (CppSrcCode Module -> CppSrcCode Module)
-> CppSrcCode Module -> CppSrcCode Module
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode Module -> CppSrcCode Module
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode Module
m) ((Doc -> Doc) -> CppHdrCode Module -> CppHdrCode Module
forall (r :: * -> *).
RenderMod r =>
(Doc -> Doc) -> r Module -> r Module
updateModuleDoc Doc -> Doc
f (CppHdrCode Module -> CppHdrCode Module)
-> CppHdrCode Module -> CppHdrCode Module
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode Module -> CppHdrCode Module
forall (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd p CppSrcCode CppHdrCode Module
m)
instance (Pair p) => ModuleElim (p CppSrcCode CppHdrCode) where
module' :: p CppSrcCode CppHdrCode Module -> Doc
module' p CppSrcCode CppHdrCode Module
m = CppSrcCode Module -> Doc
forall (r :: * -> *). ModuleElim r => r Module -> Doc
RC.module' (CppSrcCode Module -> Doc) -> CppSrcCode Module -> Doc
forall a b. (a -> b) -> a -> b
$ p CppSrcCode CppHdrCode Module -> CppSrcCode Module
forall (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode Module
m
instance (Pair p) => BlockCommentSym (p CppSrcCode CppHdrCode) where
blockComment :: [ClassName] -> p CppSrcCode CppHdrCode Doc
blockComment [ClassName]
lns = CppSrcCode Doc -> CppHdrCode Doc -> p CppSrcCode CppHdrCode Doc
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair ([ClassName] -> CppSrcCode Doc
forall (r :: * -> *). BlockCommentSym r => [ClassName] -> r Doc
blockComment [ClassName]
lns) ([ClassName] -> CppHdrCode Doc
forall (r :: * -> *). BlockCommentSym r => [ClassName] -> r Doc
blockComment [ClassName]
lns)
docComment :: forall a.
State a [ClassName] -> State a (p CppSrcCode CppHdrCode Doc)
docComment State a [ClassName]
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 (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair (State a [ClassName] -> State a (CppSrcCode Doc)
forall a. State a [ClassName] -> State a (CppSrcCode Doc)
forall (r :: * -> *) a.
BlockCommentSym r =>
State a [ClassName] -> State a (r Doc)
docComment State a [ClassName]
lns) (State a [ClassName] -> State a (CppHdrCode Doc)
forall a. State a [ClassName] -> State a (CppHdrCode Doc)
forall (r :: * -> *) a.
BlockCommentSym r =>
State a [ClassName] -> State a (r Doc)
docComment State a [ClassName]
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 (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
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
p CppSrcCode CppHdrCode a
v <- PairState s p a
stv
let fp :: SrcState r a
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 (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode a
v
sp :: HdrState r a
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 (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd p CppSrcCode CppHdrCode a
v
CppSrcCode b
p1 <- SrcState r a -> SrcState s b
srcf SrcState r a
fp
CppHdrCode b
p2 <- HdrState r a -> HdrState s b
hdrf HdrState r a
sp
p CppSrcCode CppHdrCode b -> PairState s p b
forall a. a -> StateT s Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (p CppSrcCode CppHdrCode b -> PairState s p b)
-> p CppSrcCode CppHdrCode b -> PairState s p b
forall a b. (a -> b) -> a -> b
$ CppSrcCode b -> CppHdrCode b -> p CppSrcCode CppHdrCode b
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair CppSrcCode b
p1 CppHdrCode b
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
p CppSrcCode CppHdrCode a
v1 <- PairState t p a
stv1
let fv1 :: SrcState r a
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 (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode a
v1
sv1 :: HdrState r a
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 (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd p CppSrcCode CppHdrCode a
v1
(SrcState s b -> SrcState t c)
-> (HdrState s b -> HdrState t c)
-> PairState t p b
-> PairState t p c
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 -> SrcState t c
srcf SrcState r a
fv1) (HdrState r a -> HdrState s b -> HdrState t c
hdrf HdrState r a
sv1) PairState t p b
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
p CppSrcCode CppHdrCode a
v1 <- PairState u p a
stv1
let fv1 :: SrcState r a
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 (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode a
v1
sv1 :: HdrState r a
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 (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd p CppSrcCode CppHdrCode a
v1
(SrcState s b -> SrcState t c -> SrcState u d)
-> (HdrState s b -> HdrState t c -> HdrState u d)
-> PairState u p b
-> PairState u p c
-> PairState u p d
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 -> SrcState u d
srcf SrcState r a
fv1) (HdrState r a -> HdrState s b -> HdrState t c -> HdrState u d
hdrf HdrState r a
sv1) PairState u p b
stv2 PairState u p c
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
p CppSrcCode CppHdrCode a
v1 <- PairState v p a
stv1
let fv1 :: SrcState r a
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 (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode a
v1
sv1 :: HdrState r a
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 (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd p CppSrcCode CppHdrCode a
v1
(SrcState s b -> SrcState t c -> SrcState u d -> SrcState v e)
-> (HdrState s b -> HdrState t c -> HdrState u d -> HdrState v e)
-> PairState v p b
-> PairState v p c
-> PairState v p d
-> PairState v p e
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 -> SrcState v e
srcf SrcState r a
fv1) (HdrState r a
-> HdrState s b -> HdrState t c -> HdrState u d -> HdrState v e
hdrf HdrState r a
sv1) PairState v p b
stv2 PairState v p c
stv3 PairState v p d
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
p CppSrcCode CppHdrCode a
v1 <- PairState w p a
stv1
let fv1 :: SrcState r a
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 (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode a
v1
sv1 :: HdrState r a
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 (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd p CppSrcCode CppHdrCode a
v1
(SrcState s b
-> SrcState t c -> SrcState u d -> SrcState v e -> SrcState w f)
-> (HdrState s b
-> HdrState t c -> HdrState u d -> HdrState v e -> HdrState w f)
-> PairState w p b
-> PairState w p c
-> PairState w p d
-> PairState w p e
-> PairState w p f
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
-> SrcState w f
srcf SrcState r a
fv1) (HdrState r a
-> HdrState s b
-> HdrState t c
-> HdrState u d
-> HdrState v e
-> HdrState w f
hdrf HdrState r a
sv1) PairState w p b
stv2 PairState w p c
stv3 PairState w p d
stv4 PairState w p e
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
[p CppSrcCode CppHdrCode a]
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 :: [SrcState r a]
fl = (p CppSrcCode CppHdrCode a -> SrcState r a)
-> [p CppSrcCode CppHdrCode a] -> [SrcState r a]
forall a b. (a -> b) -> [a] -> [b]
map (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 (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst) [p CppSrcCode CppHdrCode a]
v
sl :: [HdrState r a]
sl = (p CppSrcCode CppHdrCode a -> HdrState r a)
-> [p CppSrcCode CppHdrCode a] -> [HdrState r a]
forall a b. (a -> b) -> [a] -> [b]
map (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 (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd) [p CppSrcCode CppHdrCode a]
v
CppSrcCode b
p1 <- [SrcState r a] -> SrcState s b
srcf [SrcState r a]
fl
CppHdrCode b
p2 <- [HdrState r a] -> HdrState s b
hdrf [HdrState r a]
sl
p CppSrcCode CppHdrCode b -> PairState s p b
forall a. a -> StateT s Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (p CppSrcCode CppHdrCode b -> PairState s p b)
-> p CppSrcCode CppHdrCode b -> PairState s p b
forall a b. (a -> b) -> a -> b
$ CppSrcCode b -> CppHdrCode b -> p CppSrcCode CppHdrCode b
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair CppSrcCode b
p1 CppHdrCode b
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
[p CppSrcCode CppHdrCode a]
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 :: [SrcState r a]
fl1 = (p CppSrcCode CppHdrCode a -> SrcState r a)
-> [p CppSrcCode CppHdrCode a] -> [SrcState r a]
forall a b. (a -> b) -> [a] -> [b]
map (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 (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst) [p CppSrcCode CppHdrCode a]
v1
sl1 :: [HdrState r a]
sl1 = (p CppSrcCode CppHdrCode a -> HdrState r a)
-> [p CppSrcCode CppHdrCode a] -> [HdrState r a]
forall a b. (a -> b) -> [a] -> [b]
map (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 (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd) [p CppSrcCode CppHdrCode a]
v1
([SrcState s b] -> SrcState t c)
-> ([HdrState s b] -> HdrState t c)
-> [PairState t p b]
-> PairState t p c
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] -> SrcState t c
srcf [SrcState r a]
fl1) ([HdrState r a] -> [HdrState s b] -> HdrState t c
hdrf [HdrState r a]
sl1) [PairState t p b]
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
[p CppSrcCode CppHdrCode a]
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 :: [SrcState r a]
fl1 = (p CppSrcCode CppHdrCode a -> SrcState r a)
-> [p CppSrcCode CppHdrCode a] -> [SrcState r a]
forall a b. (a -> b) -> [a] -> [b]
map (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 (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst) [p CppSrcCode CppHdrCode a]
v1
sl1 :: [HdrState r a]
sl1 = (p CppSrcCode CppHdrCode a -> HdrState r a)
-> [p CppSrcCode CppHdrCode a] -> [HdrState r a]
forall a b. (a -> b) -> [a] -> [b]
map (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 (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd) [p CppSrcCode CppHdrCode a]
v1
([SrcState s b] -> [SrcState t c] -> SrcState u d)
-> ([HdrState s b] -> [HdrState t c] -> HdrState u d)
-> [PairState u p b]
-> [PairState u p c]
-> PairState u p d
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] -> SrcState u d
srcf [SrcState r a]
fl1) ([HdrState r a] -> [HdrState s b] -> [HdrState t c] -> HdrState u d
hdrf [HdrState r a]
sl1) [PairState u p b]
stv2 [PairState u p c]
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
[p CppSrcCode CppHdrCode a]
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 :: [SrcState r a]
fl1 = (p CppSrcCode CppHdrCode a -> SrcState r a)
-> [p CppSrcCode CppHdrCode a] -> [SrcState r a]
forall a b. (a -> b) -> [a] -> [b]
map (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 (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst) [p CppSrcCode CppHdrCode a]
v1
sl1 :: [HdrState r a]
sl1 = (p CppSrcCode CppHdrCode a -> HdrState r a)
-> [p CppSrcCode CppHdrCode a] -> [HdrState r a]
forall a b. (a -> b) -> [a] -> [b]
map (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 (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd) [p CppSrcCode CppHdrCode a]
v1
(SrcState s b -> SrcState t c)
-> (HdrState s b -> HdrState t c)
-> PairState t p b
-> PairState t p c
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 -> SrcState t c
srcf [SrcState r a]
fl1) ([HdrState r a] -> HdrState s b -> HdrState t c
hdrf [HdrState r a]
sl1) PairState t p b
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
p CppSrcCode CppHdrCode a
v1 <- PairState t p a
stv1
let fv1 :: SrcState r a
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 (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode a
v1
sv1 :: HdrState r a
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 (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd p CppSrcCode CppHdrCode a
v1
([SrcState s b] -> SrcState t c)
-> ([HdrState s b] -> HdrState t c)
-> [PairState t p b]
-> PairState t p c
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] -> SrcState t c
srcf SrcState r a
fv1) (HdrState r a -> [HdrState s b] -> HdrState t c
hdrf HdrState r a
sv1) [PairState t p b]
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
[p CppSrcCode CppHdrCode a]
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 :: [SrcState r a]
fl1 = (p CppSrcCode CppHdrCode a -> SrcState r a)
-> [p CppSrcCode CppHdrCode a] -> [SrcState r a]
forall a b. (a -> b) -> [a] -> [b]
map (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 (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst) [p CppSrcCode CppHdrCode a]
v1
sl1 :: [HdrState r a]
sl1 = (p CppSrcCode CppHdrCode a -> HdrState r a)
-> [p CppSrcCode CppHdrCode a] -> [HdrState r a]
forall a b. (a -> b) -> [a] -> [b]
map (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 (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd) [p CppSrcCode CppHdrCode a]
v1
([SrcState s b] -> SrcState t c -> SrcState u d)
-> ([HdrState s b] -> HdrState t c -> HdrState u d)
-> [PairState u p b]
-> PairState u p c
-> PairState u p d
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 -> SrcState u d
srcf [SrcState r a]
fl1) ([HdrState r a] -> [HdrState s b] -> HdrState t c -> HdrState u d
hdrf [HdrState r a]
sl1) [PairState u p b]
stv2 PairState u p c
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
p CppSrcCode CppHdrCode a
v1 <- PairState u p a
stv1
let fv1 :: SrcState r a
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 (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode a
v1
sv1 :: HdrState r a
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 (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd p CppSrcCode CppHdrCode a
v1
([SrcState s b] -> SrcState t c -> SrcState u d)
-> ([HdrState s b] -> HdrState t c -> HdrState u d)
-> [PairState u p b]
-> PairState u p c
-> PairState u p d
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 -> SrcState u d
srcf SrcState r a
fv1) (HdrState r a -> [HdrState s b] -> HdrState t c -> HdrState u d
hdrf HdrState r a
sv1) [PairState u p b]
stv2 PairState u p c
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
[p CppSrcCode CppHdrCode a]
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 :: [SrcState r a]
fl1 = (p CppSrcCode CppHdrCode a -> SrcState r a)
-> [p CppSrcCode CppHdrCode a] -> [SrcState r a]
forall a b. (a -> b) -> [a] -> [b]
map (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 (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst) [p CppSrcCode CppHdrCode a]
v1
sl1 :: [HdrState r a]
sl1 = (p CppSrcCode CppHdrCode a -> HdrState r a)
-> [p CppSrcCode CppHdrCode a] -> [HdrState r a]
forall a b. (a -> b) -> [a] -> [b]
map (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 (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd) [p CppSrcCode CppHdrCode a]
v1
([SrcState s b] -> [SrcState t c] -> SrcState u d -> SrcState v e)
-> ([HdrState s b]
-> [HdrState t c] -> HdrState u d -> HdrState v e)
-> [PairState v p b]
-> [PairState v p c]
-> PairState v p d
-> PairState v p e
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 -> SrcState v e
srcf [SrcState r a]
fl1) ([HdrState r a]
-> [HdrState s b] -> [HdrState t c] -> HdrState u d -> HdrState v e
hdrf [HdrState r a]
sl1) [PairState v p b]
stv2 [PairState v p c]
stv3 PairState v p d
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
p CppSrcCode CppHdrCode a
v1 <- PairState v p a
stv1
[p CppSrcCode CppHdrCode b]
v2 <- [PairState v p b] -> StateT v Identity [p CppSrcCode CppHdrCode b]
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 b]
stv2
[p CppSrcCode CppHdrCode c]
v3 <- ((PairState v p c, PairState v p d) -> PairState v p c)
-> [(PairState v p c, PairState v p d)]
-> StateT v Identity [p CppSrcCode CppHdrCode c]
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 (PairState v p c, PairState v p d) -> PairState v p c
forall a b. (a, b) -> a
fst [(PairState v p c, PairState v p d)]
stv34
[p CppSrcCode CppHdrCode d]
v4 <- ((PairState v p c, PairState v p d) -> PairState v p d)
-> [(PairState v p c, PairState v p d)]
-> StateT v Identity [p CppSrcCode CppHdrCode d]
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 (PairState v p c, PairState v p d) -> PairState v p d
forall a b. (a, b) -> b
snd [(PairState v p c, PairState v p d)]
stv34
let fv1 :: SrcState r a
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 (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode a
v1
sv1 :: HdrState r a
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 (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd p CppSrcCode CppHdrCode a
v1
fv2 :: [SrcState s b]
fv2 = (p CppSrcCode CppHdrCode b -> SrcState s b)
-> [p CppSrcCode CppHdrCode b] -> [SrcState s b]
forall a b. (a -> b) -> [a] -> [b]
map (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 (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst) [p CppSrcCode CppHdrCode b]
v2
sv2 :: [HdrState s b]
sv2 = (p CppSrcCode CppHdrCode b -> HdrState s b)
-> [p CppSrcCode CppHdrCode b] -> [HdrState s b]
forall a b. (a -> b) -> [a] -> [b]
map (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 (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd) [p CppSrcCode CppHdrCode b]
v2
fv3 :: [SrcState t c]
fv3 = (p CppSrcCode CppHdrCode c -> SrcState t c)
-> [p CppSrcCode CppHdrCode c] -> [SrcState t c]
forall a b. (a -> b) -> [a] -> [b]
map (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 (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst) [p CppSrcCode CppHdrCode c]
v3
sv3 :: [HdrState t c]
sv3 = (p CppSrcCode CppHdrCode c -> HdrState t c)
-> [p CppSrcCode CppHdrCode c] -> [HdrState t c]
forall a b. (a -> b) -> [a] -> [b]
map (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 (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd) [p CppSrcCode CppHdrCode c]
v3
fv4 :: [SrcState u d]
fv4 = (p CppSrcCode CppHdrCode d -> SrcState u d)
-> [p CppSrcCode CppHdrCode d] -> [SrcState u d]
forall a b. (a -> b) -> [a] -> [b]
map (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 (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst) [p CppSrcCode CppHdrCode d]
v4
sv4 :: [HdrState u d]
sv4 = (p CppSrcCode CppHdrCode d -> HdrState u d)
-> [p CppSrcCode CppHdrCode d] -> [HdrState u d]
forall a b. (a -> b) -> [a] -> [b]
map (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 (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd) [p CppSrcCode CppHdrCode d]
v4
CppSrcCode e
p1 <- SrcState r a
-> [SrcState s b] -> [(SrcState t c, SrcState u d)] -> SrcState v e
srcf SrcState r a
fv1 [SrcState s b]
fv2 ([SrcState t c] -> [SrcState u d] -> [(SrcState t c, SrcState u d)]
forall a b. [a] -> [b] -> [(a, b)]
zip [SrcState t c]
fv3 [SrcState u d]
fv4)
CppHdrCode e
p2 <- HdrState r a
-> [HdrState s b] -> [(HdrState t c, HdrState u d)] -> HdrState v e
hdrf HdrState r a
sv1 [HdrState s b]
sv2 ([HdrState t c] -> [HdrState u d] -> [(HdrState t c, HdrState u d)]
forall a b. [a] -> [b] -> [(a, b)]
zip [HdrState t c]
sv3 [HdrState u d]
sv4)
p CppSrcCode CppHdrCode e -> PairState v p e
forall a. a -> StateT v Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (p CppSrcCode CppHdrCode e -> PairState v p e)
-> p CppSrcCode CppHdrCode e -> PairState v p e
forall a b. (a -> b) -> a -> b
$ CppSrcCode e -> CppHdrCode e -> p CppSrcCode CppHdrCode e
forall (x :: * -> *) a (y :: * -> *). x a -> y a -> p x y a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *) a
(y :: * -> *).
Pair p =>
x a -> y a -> p x y a
pair CppSrcCode e
p1 CppHdrCode e
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
p CppSrcCode CppHdrCode a
v1 <- PairState w p a
stv1
let fv1 :: SrcState r a
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 (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode a
v1
sv1 :: HdrState r a
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 (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd p CppSrcCode CppHdrCode a
v1
(SrcState s b
-> [SrcState t c]
-> [(SrcState u d, SrcState v e)]
-> SrcState w f)
-> (HdrState s b
-> [HdrState t c]
-> [(HdrState u d, HdrState v e)]
-> HdrState w f)
-> PairState w p b
-> [PairState w p c]
-> [(PairState w p d, PairState w p e)]
-> PairState w p f
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)]
-> SrcState w f
srcf SrcState r a
fv1) (HdrState r a
-> HdrState s b
-> [HdrState t c]
-> [(HdrState u d, HdrState v e)]
-> HdrState w f
hdrf HdrState r a
sv1) PairState w p b
stv2 [PairState w p c]
stv3 [(PairState w p d, PairState w p e)]
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
p CppSrcCode CppHdrCode a
v1 <- PairState v p a
stv1
let fv1 :: SrcState r a
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 (x :: * -> *) (y :: * -> *) a. p x y a -> x a
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) a.
Pair p =>
p x y a -> x a
pfst p CppSrcCode CppHdrCode a
v1
sv1 :: HdrState r a
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 (x :: * -> *) (y :: * -> *) b. p x y b -> y b
forall (p :: (* -> *) -> (* -> *) -> * -> *) (x :: * -> *)
(y :: * -> *) b.
Pair p =>
p x y b -> y b
psnd p CppSrcCode CppHdrCode a
v1
([SrcState s b] -> [SrcState t c] -> SrcState u d -> SrcState v e)
-> ([HdrState s b]
-> [HdrState t c] -> HdrState u d -> HdrState v e)
-> [PairState v p b]
-> [PairState v p c]
-> PairState v p d
-> PairState v p e
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 -> SrcState v e
srcf SrcState r a
fv1) (HdrState r a
-> [HdrState s b] -> [HdrState t c] -> HdrState u d -> HdrState v e
hdrf HdrState r a
sv1) [PairState v p b]
stv2 [PairState v p c]
stv3 PairState v p d
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 (Doc, VisibilityTag) (Doc, Terminator) MethodData StateVarData AttachmentData ProgData where
prog :: ClassName
-> ClassName
-> [FS (CppSrcCode File)]
-> GSProgram CppSrcCode ProgData
prog ClassName
n ClassName
st = ([CppSrcCode File] -> CppSrcCode ProgData)
-> [State GOOLState (CppSrcCode File)]
-> GSProgram CppSrcCode ProgData
forall a b s. ([a] -> b) -> [State s a] -> State s b
onStateList (([File] -> ProgData) -> [CppSrcCode File] -> CppSrcCode ProgData
forall (m :: * -> *) a b. Monad m => ([a] -> b) -> [m a] -> m b
onCodeList (ClassName -> ClassName -> [File] -> ProgData
progD ClassName
n ClassName
st)) ([State GOOLState (CppSrcCode File)]
-> GSProgram CppSrcCode ProgData)
-> ([FS (CppSrcCode File)] -> [State GOOLState (CppSrcCode File)])
-> [FS (CppSrcCode File)]
-> GSProgram CppSrcCode ProgData
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (FS (CppSrcCode File) -> State GOOLState (CppSrcCode File))
-> [FS (CppSrcCode File)] -> [State GOOLState (CppSrcCode File)]
forall a b. (a -> b) -> [a] -> [b]
map (LensLike'
(Zoomed (StateT FileState Identity) (CppSrcCode File))
GOOLState
FileState
-> FS (CppSrcCode File) -> State GOOLState (CppSrcCode File)
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 File))
GOOLState
FileState
(FileState -> Focusing Identity (CppSrcCode File) FileState)
-> GOOLState -> Focusing Identity (CppSrcCode File) GOOLState
Lens' GOOLState FileState
lensGStoFS)
instance SharedStatement CppSrcCode (Doc, Terminator) where
instance OOStatement CppSrcCode (Doc, Terminator) where
instance CommonRenderSym CppSrcCode (Doc, VisibilityTag) (Doc, Terminator) MethodData
instance OORenderSym CppSrcCode (Doc, VisibilityTag) (Doc, Terminator) MethodData StateVarData AttachmentData
instance UnRepr CppSrcCode contents where
unRepr :: CppSrcCode contents -> contents
unRepr = CppSrcCode contents -> contents
forall a. CppSrcCode a -> a
unCPPSC
instance FileSym CppSrcCode (Doc, VisibilityTag) (Doc, Terminator) MethodData StateVarData AttachmentData where
fileDoc :: SrcState FileState Module -> FS (CppSrcCode File)
fileDoc SrcState FileState Module
m = do
(FileState -> FileState) -> StateT FileState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (FileType -> FileState -> FileState
setFileType FileType
Source)
ClassName
-> (CppSrcCode Module -> CppSrcCode Doc)
-> CppSrcCode Doc
-> SrcState FileState Module
-> FS (CppSrcCode File)
forall (r :: * -> *).
(BlockElim r, RenderMod r, RenderFile r) =>
ClassName
-> (r Module -> r Doc) -> r Doc -> FS (r Module) -> FS (r File)
G.fileDoc ClassName
cppSrcExt CppSrcCode Module -> CppSrcCode Doc
forall (r :: * -> *). RenderFile r => r Module -> r Doc
top CppSrcCode Doc
forall (r :: * -> *). RenderFile r => r Doc
bottom SrcState FileState Module
m
docMod :: ClassName
-> ClassName
-> [ClassName]
-> ClassName
-> FS (CppSrcCode File)
-> FS (CppSrcCode File)
docMod = ClassName
-> ClassName
-> ClassName
-> [ClassName]
-> ClassName
-> FS (CppSrcCode File)
-> FS (CppSrcCode File)
forall (r :: * -> *).
RenderFile r =>
ClassName
-> ClassName
-> ClassName
-> [ClassName]
-> ClassName
-> FS (r File)
-> FS (r File)
CP.doxMod ClassName
cppSrcExt
instance RenderFile CppSrcCode where
top :: CppSrcCode Module -> CppSrcCode Doc
top CppSrcCode Module
_ = 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 File)
-> SrcState FileState Doc -> FS (CppSrcCode File)
commentedMod = (Bool -> CppSrcCode File -> CppSrcCode Doc -> CppSrcCode File)
-> State FileState Bool
-> FS (CppSrcCode File)
-> SrcState FileState Doc
-> FS (CppSrcCode File)
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 File
m CppSrcCode Doc
cmt -> if Bool
mn then (File -> Doc -> File)
-> CppSrcCode File -> CppSrcCode Doc -> CppSrcCode File
forall (r :: * -> *) a b c.
Applicative r =>
(a -> b -> c) -> r a -> r b -> r c
on2CodeValues
File -> Doc -> File
R.commentedMod CppSrcCode File
m CppSrcCode Doc
cmt else CppSrcCode File
m) State FileState Bool
getCurrMain
fileFromData :: ClassName -> SrcState FileState Module -> FS (CppSrcCode File)
fileFromData = (ClassName -> CppSrcCode Module -> CppSrcCode File)
-> ClassName -> SrcState FileState Module -> FS (CppSrcCode File)
forall (r :: * -> *).
ModuleElim r =>
(ClassName -> r Module -> r File)
-> ClassName -> FS (r Module) -> FS (r File)
G.fileFromData ((Module -> File) -> CppSrcCode Module -> CppSrcCode File
forall (r :: * -> *) a b. Functor r => (a -> b) -> r a -> r b
onCodeValue ((Module -> File) -> CppSrcCode Module -> CppSrcCode File)
-> (ClassName -> Module -> File)
-> ClassName
-> CppSrcCode Module
-> CppSrcCode File
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ClassName -> Module -> File
fileD)
instance ImportSym CppSrcCode where
langImport :: ClassName -> CppSrcCode Doc
langImport ClassName
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 (ClassName -> Doc
text ClassName
n)
modImport :: ClassName -> CppSrcCode Doc
modImport ClassName
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
<+> ClassName -> Doc
doubleQuotedText (ClassName -> ClassName -> ClassName
addExt ClassName
cppHdrExt
ClassName
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 (Doc, Terminator) 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 :: ClassName -> SrcState MethodState Doc -> SrcState MethodState Doc
addComments ClassName
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 (r :: * -> *) a b. Functor r => (a -> b) -> r a -> r b
onCodeValue (ClassName -> Doc -> Doc -> Doc
R.addComments ClassName
s Doc
commentStart))
instance RenderBody CppSrcCode where
multiBody :: [SrcState MethodState Doc] -> SrcState MethodState Doc
multiBody = [SrcState MethodState Doc] -> SrcState MethodState Doc
forall (r :: * -> *).
(BodyElim r, Monad r) =>
[MS (r Doc)] -> MS (r Doc)
G.multiBody
instance BodyElim CppSrcCode where
body :: CppSrcCode Doc -> Doc
body = CppSrcCode Doc -> Doc
forall a. CppSrcCode a -> a
unCPPSC
instance BlockSym CppSrcCode (Doc, Terminator) where
block :: [SrcState MethodState (Doc, Terminator)]
-> SrcState MethodState Doc
block = [SrcState MethodState (Doc, Terminator)]
-> SrcState MethodState Doc
forall (r :: * -> *) smt.
(Monad r, RenderStatement r smt, StatementElim r smt) =>
[MS (r smt)] -> MS (r Doc)
G.block
instance RenderBlock CppSrcCode where
multiBlock :: [SrcState MethodState Doc] -> SrcState MethodState Doc
multiBlock = [SrcState MethodState Doc] -> SrcState MethodState Doc
forall (r :: * -> *).
(BlockElim r, Monad r) =>
[MS (r Doc)] -> MS (r Doc)
G.multiBlock
instance BlockElim CppSrcCode where
block :: CppSrcCode Doc -> Doc
block = CppSrcCode Doc -> Doc
forall a. CppSrcCode a -> a
unCPPSC
instance TypeSym CppSrcCode 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 (ClassName -> ValueState -> ValueState
addUsing ClassName
cppString (ValueState -> ValueState)
-> (ValueState -> ValueState) -> ValueState -> ValueState
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ClassName -> ValueState -> ValueState
addLangImportVS ClassName
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 (ClassName -> ValueState -> ValueState
addUsing ClassName
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 (ClassName -> ValueState -> ValueState
addUsing ClassName
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, 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 (ClassName -> ValueState -> ValueState
addUsing ClassName
vector (ValueState -> ValueState)
-> (ValueState -> ValueState) -> ValueState -> ValueState
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ClassName -> ValueState -> ValueState
addLangImportVS ClassName
vector)
ClassName
-> State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData)
forall (r :: * -> *).
(Monad r, TypeElim r, UnRepr r TypeData) =>
ClassName -> VS (r TypeData) -> VS (r TypeData)
C.listType ClassName
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 (ClassName -> ValueState -> ValueState
addUsing ClassName
cppSet (ValueState -> ValueState)
-> (ValueState -> ValueState) -> ValueState -> ValueState
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ClassName -> ValueState -> ValueState
addLangImportVS ClassName
cppSet)
ClassName
-> State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData)
forall (r :: * -> *).
(Monad r, TypeElim r, UnRepr r TypeData) =>
ClassName -> VS (r TypeData) -> VS (r TypeData)
C.setType ClassName
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 (r :: * -> *).
TypeSym r =>
VS (r TypeData) -> VS (r TypeData)
listType
innerType :: State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData)
innerType = State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData)
forall (r :: * -> *).
(TypeElim r, OOTypeSym r) =>
VS (r TypeData) -> VS (r TypeData)
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) =>
[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 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 where
obj :: ClassName -> State ValueState (CppSrcCode TypeData)
obj ClassName
n = do
ClassName
cn <- LensLike'
(Zoomed (StateT MethodState Identity) ClassName)
ValueState
MethodState
-> StateT MethodState Identity ClassName
-> StateT ValueState Identity ClassName
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) ClassName)
ValueState
MethodState
(MethodState -> Focusing Identity ClassName MethodState)
-> ValueState -> Focusing Identity ClassName ValueState
Lens' ValueState MethodState
lensVStoMS StateT MethodState Identity ClassName
getClassName
if ClassName
cn ClassName -> ClassName -> Bool
forall a. Eq a => a -> a -> Bool
== ClassName
n then ClassName -> State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). Monad r => ClassName -> VS (r TypeData)
G.obj ClassName
n else
VS (Map ClassName ClassName)
getClassMap VS (Map ClassName ClassName)
-> (Map ClassName ClassName
-> State ValueState (CppSrcCode TypeData))
-> State ValueState (CppSrcCode 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 ClassName ClassName
cm -> (State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData))
-> (ClassName
-> State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData))
-> Maybe ClassName
-> 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))
-> (ClassName -> StateT ValueState Identity ())
-> ClassName
-> 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 ())
-> (ClassName -> ValueState -> ValueState)
-> ClassName
-> StateT ValueState Identity ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ClassName -> ValueState -> ValueState
addModuleImportVS)
(ClassName -> Map ClassName ClassName -> Maybe ClassName
forall k a. Ord k => k -> Map k a -> Maybe a
Map.lookup ClassName
n Map ClassName ClassName
cm) (ClassName -> State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). Monad r => ClassName -> VS (r TypeData)
G.obj ClassName
n))
instance RenderType CppSrcCode where
multiType :: [State ValueState (CppSrcCode TypeData)]
-> State ValueState (CppSrcCode TypeData)
multiType [State ValueState (CppSrcCode TypeData)]
_ = ClassName -> State ValueState (CppSrcCode TypeData)
forall a. HasCallStack => ClassName -> a
error (ClassName -> State ValueState (CppSrcCode TypeData))
-> ClassName -> State ValueState (CppSrcCode TypeData)
forall a b. (a -> b) -> a -> b
$ ClassName -> ClassName
C.multiTypeError ClassName
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 where
global :: CppSrcCode ScopeData
global = CppSrcCode ScopeData
forall (r :: * -> *). Monad r => r ScopeData
CP.global
mainFn :: CppSrcCode ScopeData
mainFn = CppSrcCode ScopeData
forall (r :: * -> *). ScopeSym r => r ScopeData
local
local :: CppSrcCode ScopeData
local = CppSrcCode ScopeData
forall (r :: * -> *). Monad r => r ScopeData
G.local
instance ScopeElim CppSrcCode where
scopeData :: CppSrcCode ScopeData -> ScopeData
scopeData = CppSrcCode ScopeData -> ScopeData
forall a. CppSrcCode a -> a
unCPPSC
instance VariableSym CppSrcCode where
var :: ClassName
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable
var = ClassName
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable
forall (r :: * -> *).
RenderVariable r =>
ClassName -> VS (r TypeData) -> SVariable r
G.var
constant :: ClassName
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable
constant = ClassName
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable
forall (r :: * -> *).
VariableSym r =>
ClassName -> VS (r TypeData) -> SVariable r
var
extVar :: ClassName
-> ClassName
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable
extVar ClassName
l ClassName
n State ValueState (CppSrcCode TypeData)
t = (ValueState -> ValueState) -> StateT ValueState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (ClassName -> ValueState -> ValueState
addModuleImportVS ClassName
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
>> ClassName
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable
forall (r :: * -> *).
VariableSym r =>
ClassName -> VS (r TypeData) -> SVariable r
var ClassName
n State ValueState (CppSrcCode TypeData)
t
instance OOVariableSym CppSrcCode where
classVar :: ClassName
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable
classVar = ClassName
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable
forall (r :: * -> *).
RenderVariable r =>
ClassName -> VS (r TypeData) -> SVariable r
G.classVar
classConst :: ClassName
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable
classConst = ClassName
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable
forall (r :: * -> *).
OOVariableSym r =>
ClassName -> VS (r TypeData) -> SVariable r
classVar
classVarAccess :: State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable -> SrcState ValueState Variable
classVarAccess State ValueState (CppSrcCode TypeData)
c' SrcState ValueState Variable
v'= do
CppSrcCode TypeData
c <- State ValueState (CppSrcCode TypeData)
c'
CppSrcCode Variable
v <- SrcState ValueState Variable
v'
CppSrcCode Variable
vfd <- AttachmentTag
-> ClassName
-> State ValueState (CppSrcCode TypeData)
-> Doc
-> SrcState ValueState Variable
forall (r :: * -> *).
RenderVariable r =>
AttachmentTag -> ClassName -> VS (r TypeData) -> Doc -> SVariable r
varFromData
(CppSrcCode Variable -> AttachmentTag
forall (r :: * -> *).
InternalVarElim r =>
r Variable -> AttachmentTag
variableBind CppSrcCode Variable
v) (CppSrcCode TypeData -> ClassName
forall (r :: * -> *). UnRepr r TypeData => r TypeData -> ClassName
getTypeString CppSrcCode TypeData
c ClassName -> ClassName -> ClassName
`nmSpcAccess` CppSrcCode Variable -> ClassName
forall (r :: * -> *). VariableElim r => r Variable -> ClassName
variableName CppSrcCode Variable
v)
(CppSrcCode TypeData -> State ValueState (CppSrcCode TypeData)
forall a s. a -> State s a
toState (CppSrcCode TypeData -> State ValueState (CppSrcCode TypeData))
-> CppSrcCode TypeData -> State ValueState (CppSrcCode TypeData)
forall a b. (a -> b) -> a -> b
$ CppSrcCode Variable -> CppSrcCode TypeData
forall (r :: * -> *). VariableElim r => r Variable -> r TypeData
variableType CppSrcCode Variable
v) (Doc -> Doc -> Doc
cppClassVarAccess (CppSrcCode TypeData -> Doc
forall (r :: * -> *). UnRepr r TypeData => r TypeData -> Doc
renderType CppSrcCode TypeData
c) (CppSrcCode Variable -> Doc
forall (r :: * -> *). InternalVarElim r => r Variable -> Doc
RC.variable CppSrcCode Variable
v))
CppSrcCode Variable -> SrcState ValueState Variable
forall a s. a -> State s a
toState (CppSrcCode Variable -> SrcState ValueState Variable)
-> CppSrcCode Variable -> SrcState ValueState Variable
forall a b. (a -> b) -> a -> b
$ CppSrcCode Variable -> CppSrcCode Variable
forall (r :: * -> *). InternalVarElim r => r Variable -> r Variable
classVarAccessCheck CppSrcCode Variable
vfd
extClassVarAccess :: State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable -> SrcState ValueState Variable
extClassVarAccess State ValueState (CppSrcCode TypeData)
c SrcState ValueState Variable
v = do
CppSrcCode TypeData
t <- State ValueState (CppSrcCode TypeData)
c
Map ClassName ClassName
cm <- VS (Map ClassName ClassName)
getClassMap
(SrcState ValueState Variable -> SrcState ValueState Variable)
-> (ClassName
-> SrcState ValueState Variable -> SrcState ValueState Variable)
-> Maybe ClassName
-> SrcState ValueState Variable
-> SrcState ValueState Variable
forall b a. b -> (a -> b) -> Maybe a -> b
maybe SrcState ValueState Variable -> SrcState ValueState Variable
forall a. a -> a
id (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
(>>) (StateT ValueState Identity ()
-> SrcState ValueState Variable -> SrcState ValueState Variable)
-> (ClassName -> StateT ValueState Identity ())
-> ClassName
-> SrcState ValueState Variable
-> SrcState ValueState Variable
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 ())
-> (ClassName -> ValueState -> ValueState)
-> ClassName
-> StateT ValueState Identity ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ClassName -> ValueState -> ValueState
addModuleImportVS)
(ClassName -> Map ClassName ClassName -> Maybe ClassName
forall k a. Ord k => k -> Map k a -> Maybe a
Map.lookup (CppSrcCode TypeData -> ClassName
forall (r :: * -> *). UnRepr r TypeData => r TypeData -> ClassName
getTypeString CppSrcCode TypeData
t) Map ClassName ClassName
cm) (SrcState ValueState Variable -> SrcState ValueState Variable)
-> SrcState ValueState Variable -> SrcState ValueState Variable
forall a b. (a -> b) -> a -> b
$ State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable -> SrcState ValueState Variable
forall (r :: * -> *).
OOVariableSym r =>
VS (r TypeData) -> SVariable r -> SVariable r
classVarAccess (CppSrcCode TypeData -> State ValueState (CppSrcCode TypeData)
forall a. a -> StateT ValueState Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure CppSrcCode TypeData
t) SrcState ValueState Variable
v
instanceVarAccess :: SrcState ValueState Value
-> SrcState ValueState Variable -> SrcState ValueState Variable
instanceVarAccess SrcState ValueState Value
ob SrcState ValueState Variable
vr = do
CppSrcCode Value
ob' <- SrcState ValueState Value
ob
CppSrcCode Variable
vr' <- SrcState ValueState Variable
vr
let objTp :: CodeType
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 (r :: * -> *). ValueSym r => r Value -> r TypeData
valueType CppSrcCode Value
ob'
case CodeType
objTp of
(Reference CodeType
_) -> let
instanceVarAccess' :: AttachmentTag -> SrcState ValueState Variable
instanceVarAccess' AttachmentTag
ClassLevel = ClassName -> SrcState ValueState Variable
forall a. HasCallStack => ClassName -> a
error
ClassName
"Cannot access class-level variables through an object, use classVarAccess instead"
instanceVarAccess' AttachmentTag
InstanceLevel = ClassName
-> CppSrcCode TypeData -> Doc -> SrcState ValueState Variable
forall (r :: * -> *).
RenderVariable r =>
ClassName -> r TypeData -> Doc -> SVariable r
mkVar
(Doc -> ClassName
render (CppSrcCode Value -> Doc
forall (r :: * -> *). ValueElim r => r Value -> Doc
RC.value CppSrcCode Value
ob') ClassName -> ClassName -> ClassName
forall a. [a] -> [a] -> [a]
++ ClassName
ptrAccess ClassName -> ClassName -> ClassName
forall a. [a] -> [a] -> [a]
++ CppSrcCode Variable -> ClassName
forall (r :: * -> *). VariableElim r => r Variable -> ClassName
variableName CppSrcCode Variable
vr')
(CppSrcCode Variable -> CppSrcCode TypeData
forall (r :: * -> *). VariableElim r => r Variable -> r TypeData
variableType CppSrcCode Variable
vr') (CppSrcCode Value -> Doc
forall (r :: * -> *). ValueElim r => r Value -> Doc
RC.value CppSrcCode Value
ob' Doc -> Doc -> Doc
<> Doc
ptrAccess' Doc -> Doc -> Doc
<> CppSrcCode Variable -> Doc
forall (r :: * -> *). InternalVarElim r => r Variable -> Doc
RC.variable CppSrcCode Variable
vr')
in AttachmentTag -> SrcState ValueState Variable
instanceVarAccess' (CppSrcCode Variable -> AttachmentTag
forall (r :: * -> *).
InternalVarElim r =>
r Variable -> AttachmentTag
variableBind CppSrcCode Variable
vr')
CodeType
_ -> SrcState ValueState Value
-> SrcState ValueState Variable -> SrcState ValueState Variable
forall (r :: * -> *).
(InternalVarElim r, RenderVariable r, ValueElim r,
VariableElim r) =>
SValue r -> SVariable r -> SVariable r
G.instanceVarAccess SrcState ValueState Value
ob SrcState ValueState Variable
vr
instance SelfSym CppSrcCode where
self :: SrcState ValueState Variable
self = do
ClassName
l <- LensLike'
(Zoomed (StateT MethodState Identity) ClassName)
ValueState
MethodState
-> StateT MethodState Identity ClassName
-> StateT ValueState Identity ClassName
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) ClassName)
ValueState
MethodState
(MethodState -> Focusing Identity ClassName MethodState)
-> ValueState -> Focusing Identity ClassName ValueState
Lens' ValueState MethodState
lensVStoMS StateT MethodState Identity ClassName
getClassName
ClassName
-> State ValueState (CppSrcCode TypeData)
-> Doc
-> SrcState ValueState Variable
forall (r :: * -> *).
RenderVariable r =>
ClassName -> VS (r TypeData) -> Doc -> SVariable r
mkStateVar ClassName
R.this (State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData)
forall (r :: * -> *).
TypeSym r =>
VS (r TypeData) -> VS (r TypeData)
referenceType (State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData))
-> State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData)
forall a b. (a -> b) -> a -> b
$ ClassName -> State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). OOTypeSym r => ClassName -> VS (r TypeData)
obj ClassName
l) Doc
R.this'
instance VariableElim CppSrcCode where
variableName :: CppSrcCode Variable -> ClassName
variableName = Variable -> ClassName
varName (Variable -> ClassName)
-> (CppSrcCode Variable -> Variable)
-> CppSrcCode Variable
-> ClassName
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 (r :: * -> *) a b. Functor r => (a -> b) -> r a -> r b
onCodeValue Variable -> TypeData
varType
instance InternalVarElim CppSrcCode 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 where
varFromData :: AttachmentTag
-> ClassName
-> State ValueState (CppSrcCode TypeData)
-> Doc
-> SrcState ValueState Variable
varFromData AttachmentTag
b ClassName
n State ValueState (CppSrcCode TypeData)
t' Doc
d = do
CppSrcCode TypeData
t <- State ValueState (CppSrcCode TypeData)
t'
CppSrcCode Variable -> SrcState ValueState Variable
forall a s. a -> State s a
toState (CppSrcCode Variable -> SrcState ValueState Variable)
-> CppSrcCode Variable -> SrcState ValueState Variable
forall a b. (a -> b) -> a -> b
$ (TypeData -> Doc -> Variable)
-> CppSrcCode TypeData -> CppSrcCode Doc -> CppSrcCode Variable
forall (r :: * -> *) a b c.
Applicative r =>
(a -> b -> c) -> r a -> r b -> r c
on2CodeValues (AttachmentTag -> ClassName -> TypeData -> Doc -> Variable
vard AttachmentTag
b ClassName
n) CppSrcCode TypeData
t (Doc -> CppSrcCode Doc
forall (r :: * -> *) a. Monad r => a -> r a
toCode Doc
d)
instance ValueSym CppSrcCode where
valueType :: CppSrcCode Value -> CppSrcCode TypeData
valueType = (Value -> TypeData) -> CppSrcCode Value -> CppSrcCode TypeData
forall (r :: * -> *) a b. Functor r => (a -> b) -> r a -> r b
onCodeValue Value -> TypeData
valType
instance OOValueSym CppSrcCode where
instance Argument CppSrcCode where
pointerArg :: SrcState ValueState Value -> SrcState ValueState Value
pointerArg = SrcState ValueState Value -> SrcState ValueState Value
forall a. a -> a
id
instance Literal CppSrcCode where
litTrue :: SrcState ValueState Value
litTrue = SrcState ValueState Value
forall (r :: * -> *). (RenderValue r, TypeSym r) => SValue r
C.litTrue
litFalse :: SrcState ValueState Value
litFalse = SrcState ValueState Value
forall (r :: * -> *). (RenderValue r, TypeSym r) => SValue r
C.litFalse
litChar :: Char -> SrcState ValueState Value
litChar = (Doc -> Doc) -> Char -> SrcState ValueState Value
forall (r :: * -> *).
(RenderValue r, TypeSym r) =>
(Doc -> Doc) -> Char -> SValue r
G.litChar Doc -> Doc
quotes
litDouble :: Double -> SrcState ValueState Value
litDouble = Double -> SrcState ValueState Value
forall (r :: * -> *).
(RenderValue r, TypeSym r) =>
Double -> SValue r
G.litDouble
litFloat :: Float -> SrcState ValueState Value
litFloat = Float -> SrcState ValueState Value
forall (r :: * -> *).
(RenderValue r, TypeSym r) =>
Float -> SValue r
C.litFloat
litInt :: Integer -> SrcState ValueState Value
litInt = Integer -> SrcState ValueState Value
forall (r :: * -> *).
(RenderValue r, TypeSym r) =>
Integer -> SValue r
G.litInt
litString :: ClassName -> SrcState ValueState Value
litString = ClassName -> SrcState ValueState Value
forall (r :: * -> *).
(RenderValue r, TypeSym r) =>
ClassName -> SValue r
G.litString
litArray :: State ValueState (CppSrcCode TypeData)
-> [SrcState ValueState Value] -> SrcState ValueState Value
litArray = (Doc -> Doc)
-> State ValueState (CppSrcCode TypeData)
-> [SrcState ValueState Value]
-> SrcState ValueState Value
forall (r :: * -> *).
(RenderValue r, TypeSym r, ValueElim r) =>
(Doc -> Doc) -> VS (r TypeData) -> [SValue r] -> SValue r
CP.litArray Doc -> Doc
braces
litSet :: State ValueState (CppSrcCode TypeData)
-> [SrcState ValueState Value] -> SrcState ValueState Value
litSet = (State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData))
-> State ValueState (CppSrcCode TypeData)
-> [SrcState ValueState Value]
-> SrcState ValueState Value
forall (r :: * -> *).
(RenderValue r, ValueElim r) =>
(VS (r TypeData) -> VS (r TypeData))
-> VS (r TypeData) -> [SValue r] -> SValue r
cppLitSet State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData)
forall (r :: * -> *).
TypeSym r =>
VS (r TypeData) -> VS (r TypeData)
setType
litList :: State ValueState (CppSrcCode TypeData)
-> [SrcState ValueState Value] -> SrcState ValueState Value
litList = (Doc -> Doc)
-> State ValueState (CppSrcCode TypeData)
-> [SrcState ValueState Value]
-> SrcState ValueState Value
forall (r :: * -> *).
(RenderValue r, TypeSym r, ValueElim r) =>
(Doc -> Doc) -> VS (r TypeData) -> [SValue r] -> SValue r
CP.litArray Doc -> Doc
braces
instance MathConstant CppSrcCode where
pi :: SrcState ValueState Value
pi = do
(ValueState -> ValueState) -> StateT ValueState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (ClassName -> ValueState -> ValueState
addDefine ClassName
mathDefines)
SrcState ValueState Value -> SrcState ValueState Value
forall a. VS a -> VS a
addMathHImport (State ValueState (CppSrcCode TypeData)
-> Doc -> SrcState ValueState Value
forall (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
double Doc
cppPi)
instance VariableValue CppSrcCode where
valueOf :: SrcState ValueState Variable -> SrcState ValueState Value
valueOf = SrcState ValueState Variable -> SrcState ValueState Value
forall (r :: * -> *).
(InternalVarElim r, RenderValue r, VariableElim r) =>
SVariable r -> SValue r
G.valueOf
instance OOVariableValue CppSrcCode
instance CommandLineArgs CppSrcCode where
arg :: Integer -> SrcState ValueState Value
arg Integer
n = SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Value
forall (r :: * -> *).
(RenderValue r, TypeSym r, ValueElim r) =>
SValue r -> SValue r -> SValue r
G.arg (Integer -> SrcState ValueState Value
forall (r :: * -> *). Literal r => Integer -> SValue r
litInt (Integer -> SrcState ValueState Value)
-> Integer -> SrcState ValueState Value
forall a b. (a -> b) -> a -> b
$ Integer
nInteger -> Integer -> Integer
forall a. Num a => a -> a -> a
+Integer
1) SrcState ValueState Value
forall (r :: * -> *). CommandLineArgs r => SValue r
argsList
argsList :: SrcState ValueState Value
argsList = State ValueState (CppSrcCode TypeData)
-> Doc -> SrcState ValueState Value
forall (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). Monad r => VS (r TypeData)
argvType (ClassName -> Doc
text ClassName
argv)
argExists :: Integer -> SrcState ValueState Value
argExists Integer
i = SrcState ValueState Value -> SrcState ValueState Value
forall (r :: * -> *) smt. List r smt => SValue r -> SValue r
listSize SrcState ValueState Value
forall (r :: * -> *). CommandLineArgs r => SValue r
argsList SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Value
forall (r :: * -> *).
Comparison r =>
SValue r -> SValue r -> SValue r
?> Integer -> SrcState ValueState Value
forall (r :: * -> *). Literal r => Integer -> SValue r
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 where
#~ :: SrcState ValueState Value -> SrcState ValueState Value
(#~) = State ValueState (CppSrcCode OpData)
-> SrcState ValueState Value -> SrcState ValueState Value
forall (r :: * -> *).
(OpElim r, RenderValue r, ValueElim r, ValueSym r) =>
VSUnOp r -> SValue r -> SValue r
unExpr' State ValueState (CppSrcCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
negateOp
#/^ :: SrcState ValueState Value -> SrcState ValueState Value
(#/^) = State ValueState (CppSrcCode OpData)
-> SrcState ValueState Value -> SrcState ValueState Value
forall (r :: * -> *).
(OpElim r, RenderValue r, ValueElim r, ValueSym r) =>
VSUnOp r -> SValue r -> SValue r
unExpr State ValueState (CppSrcCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
sqrtOp
#| :: SrcState ValueState Value -> SrcState ValueState Value
(#|) = State ValueState (CppSrcCode OpData)
-> SrcState ValueState Value -> SrcState ValueState Value
forall (r :: * -> *).
(OpElim r, RenderValue r, ValueElim r, ValueSym r) =>
VSUnOp r -> SValue r -> SValue r
unExpr State ValueState (CppSrcCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
absOp
#+ :: SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Value
(#+) = State ValueState (CppSrcCode OpData)
-> SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState ValueState Value
forall (r :: * -> *).
(OpElim r, RenderValue r, TypeElim r, ValueElim r, ValueSym r) =>
VSBinOp r -> SValue r -> SValue r -> SValue r
binExpr State ValueState (CppSrcCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
plusOp
#- :: SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Value
(#-) = State ValueState (CppSrcCode OpData)
-> SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState ValueState Value
forall (r :: * -> *).
(OpElim r, RenderValue r, TypeElim r, ValueElim r, ValueSym r) =>
VSBinOp r -> SValue r -> SValue r -> SValue r
binExpr State ValueState (CppSrcCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
minusOp
#* :: SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Value
(#*) = State ValueState (CppSrcCode OpData)
-> SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState ValueState Value
forall (r :: * -> *).
(OpElim r, RenderValue r, TypeElim r, ValueElim r, ValueSym r) =>
VSBinOp r -> SValue r -> SValue r -> SValue r
binExpr State ValueState (CppSrcCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
multOp
#/ :: SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Value
(#/) = State ValueState (CppSrcCode OpData)
-> SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState ValueState Value
forall (r :: * -> *).
(OpElim r, RenderValue r, TypeElim r, ValueElim r, ValueSym r) =>
VSBinOp r -> SValue r -> SValue r -> SValue r
binExpr State ValueState (CppSrcCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
divideOp
#% :: SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Value
(#%) = State ValueState (CppSrcCode OpData)
-> SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState ValueState Value
forall (r :: * -> *).
(OpElim r, RenderValue r, TypeElim r, ValueElim r, ValueSym r) =>
VSBinOp r -> SValue r -> SValue r -> SValue r
binExpr State ValueState (CppSrcCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
moduloOp
#^ :: SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Value
(#^) = State ValueState (CppSrcCode OpData)
-> SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState ValueState Value
forall (r :: * -> *).
(OpElim r, RenderValue r, TypeElim r, ValueElim r, ValueSym r) =>
VSBinOp r -> SValue r -> SValue r -> SValue r
binExpr' State ValueState (CppSrcCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
powerOp
log :: SrcState ValueState Value -> SrcState ValueState Value
log = State ValueState (CppSrcCode OpData)
-> SrcState ValueState Value -> SrcState ValueState Value
forall (r :: * -> *).
(OpElim r, RenderValue r, ValueElim r, ValueSym r) =>
VSUnOp r -> SValue r -> SValue r
unExpr State ValueState (CppSrcCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
logOp
ln :: SrcState ValueState Value -> SrcState ValueState Value
ln = State ValueState (CppSrcCode OpData)
-> SrcState ValueState Value -> SrcState ValueState Value
forall (r :: * -> *).
(OpElim r, RenderValue r, ValueElim r, ValueSym r) =>
VSUnOp r -> SValue r -> SValue r
unExpr State ValueState (CppSrcCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
lnOp
exp :: SrcState ValueState Value -> SrcState ValueState Value
exp = State ValueState (CppSrcCode OpData)
-> SrcState ValueState Value -> SrcState ValueState Value
forall (r :: * -> *).
(OpElim r, RenderValue r, ValueElim r, ValueSym r) =>
VSUnOp r -> SValue r -> SValue r
unExpr State ValueState (CppSrcCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
expOp
sin :: SrcState ValueState Value -> SrcState ValueState Value
sin = State ValueState (CppSrcCode OpData)
-> SrcState ValueState Value -> SrcState ValueState Value
forall (r :: * -> *).
(OpElim r, RenderValue r, ValueElim r, ValueSym r) =>
VSUnOp r -> SValue r -> SValue r
unExpr State ValueState (CppSrcCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
sinOp
cos :: SrcState ValueState Value -> SrcState ValueState Value
cos = State ValueState (CppSrcCode OpData)
-> SrcState ValueState Value -> SrcState ValueState Value
forall (r :: * -> *).
(OpElim r, RenderValue r, ValueElim r, ValueSym r) =>
VSUnOp r -> SValue r -> SValue r
unExpr State ValueState (CppSrcCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
cosOp
tan :: SrcState ValueState Value -> SrcState ValueState Value
tan = State ValueState (CppSrcCode OpData)
-> SrcState ValueState Value -> SrcState ValueState Value
forall (r :: * -> *).
(OpElim r, RenderValue r, ValueElim r, ValueSym r) =>
VSUnOp r -> SValue r -> SValue r
unExpr State ValueState (CppSrcCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
tanOp
csc :: SrcState ValueState Value -> SrcState ValueState Value
csc = SrcState ValueState Value -> SrcState ValueState Value
forall (r :: * -> *).
(Literal r, NumericExpression r, TypeElim r) =>
SValue r -> SValue r
G.csc
sec :: SrcState ValueState Value -> SrcState ValueState Value
sec = SrcState ValueState Value -> SrcState ValueState Value
forall (r :: * -> *).
(Literal r, NumericExpression r, TypeElim r) =>
SValue r -> SValue r
G.sec
cot :: SrcState ValueState Value -> SrcState ValueState Value
cot = SrcState ValueState Value -> SrcState ValueState Value
forall (r :: * -> *).
(Literal r, NumericExpression r, TypeElim r) =>
SValue r -> SValue r
G.cot
arcsin :: SrcState ValueState Value -> SrcState ValueState Value
arcsin = State ValueState (CppSrcCode OpData)
-> SrcState ValueState Value -> SrcState ValueState Value
forall (r :: * -> *).
(OpElim r, RenderValue r, ValueElim r, ValueSym r) =>
VSUnOp r -> SValue r -> SValue r
unExpr State ValueState (CppSrcCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
asinOp
arccos :: SrcState ValueState Value -> SrcState ValueState Value
arccos = State ValueState (CppSrcCode OpData)
-> SrcState ValueState Value -> SrcState ValueState Value
forall (r :: * -> *).
(OpElim r, RenderValue r, ValueElim r, ValueSym r) =>
VSUnOp r -> SValue r -> SValue r
unExpr State ValueState (CppSrcCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
acosOp
arctan :: SrcState ValueState Value -> SrcState ValueState Value
arctan = State ValueState (CppSrcCode OpData)
-> SrcState ValueState Value -> SrcState ValueState Value
forall (r :: * -> *).
(OpElim r, RenderValue r, ValueElim r, ValueSym r) =>
VSUnOp r -> SValue r -> SValue r
unExpr State ValueState (CppSrcCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
atanOp
floor :: SrcState ValueState Value -> SrcState ValueState Value
floor = State ValueState (CppSrcCode OpData)
-> SrcState ValueState Value -> SrcState ValueState Value
forall (r :: * -> *).
(OpElim r, RenderValue r, ValueElim r, ValueSym r) =>
VSUnOp r -> SValue r -> SValue r
unExpr State ValueState (CppSrcCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
floorOp
ceil :: SrcState ValueState Value -> SrcState ValueState Value
ceil = State ValueState (CppSrcCode OpData)
-> SrcState ValueState Value -> SrcState ValueState Value
forall (r :: * -> *).
(OpElim r, RenderValue r, ValueElim r, ValueSym r) =>
VSUnOp r -> SValue r -> SValue r
unExpr State ValueState (CppSrcCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
ceilOp
instance BooleanExpression CppSrcCode where
?! :: SrcState ValueState Value -> SrcState ValueState Value
(?!) = State ValueState (CppSrcCode OpData)
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Value
-> SrcState ValueState Value
forall (r :: * -> *).
(OpElim r, RenderValue r, ValueElim r) =>
VSUnOp r -> VS (r TypeData) -> SValue r -> SValue r
typeUnExpr State ValueState (CppSrcCode OpData)
forall (r :: * -> *). UnaryOpSym r => VSUnOp r
notOp State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
bool
?&& :: SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Value
(?&&) = State ValueState (CppSrcCode OpData)
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState ValueState Value
forall (r :: * -> *).
(OpElim r, RenderValue r, ValueElim r) =>
VSBinOp r -> VS (r TypeData) -> SValue r -> SValue r -> SValue r
typeBinExpr State ValueState (CppSrcCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
andOp State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
bool
?|| :: SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Value
(?||) = State ValueState (CppSrcCode OpData)
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState ValueState Value
forall (r :: * -> *).
(OpElim r, RenderValue r, ValueElim r) =>
VSBinOp r -> VS (r TypeData) -> SValue r -> SValue r -> SValue r
typeBinExpr State ValueState (CppSrcCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
orOp State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
bool
instance Comparison CppSrcCode where
?< :: SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Value
(?<) = State ValueState (CppSrcCode OpData)
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState ValueState Value
forall (r :: * -> *).
(OpElim r, RenderValue r, ValueElim r) =>
VSBinOp r -> VS (r TypeData) -> SValue r -> SValue r -> SValue r
typeBinExpr State ValueState (CppSrcCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
lessOp State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
bool
?<= :: SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Value
(?<=) = State ValueState (CppSrcCode OpData)
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState ValueState Value
forall (r :: * -> *).
(OpElim r, RenderValue r, ValueElim r) =>
VSBinOp r -> VS (r TypeData) -> SValue r -> SValue r -> SValue r
typeBinExpr State ValueState (CppSrcCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
lessEqualOp State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
bool
?> :: SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Value
(?>) = State ValueState (CppSrcCode OpData)
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState ValueState Value
forall (r :: * -> *).
(OpElim r, RenderValue r, ValueElim r) =>
VSBinOp r -> VS (r TypeData) -> SValue r -> SValue r -> SValue r
typeBinExpr State ValueState (CppSrcCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
greaterOp State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
bool
?>= :: SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Value
(?>=) = State ValueState (CppSrcCode OpData)
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState ValueState Value
forall (r :: * -> *).
(OpElim r, RenderValue r, ValueElim r) =>
VSBinOp r -> VS (r TypeData) -> SValue r -> SValue r -> SValue r
typeBinExpr State ValueState (CppSrcCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
greaterEqualOp State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
bool
?== :: SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Value
(?==) = State ValueState (CppSrcCode OpData)
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState ValueState Value
forall (r :: * -> *).
(OpElim r, RenderValue r, ValueElim r) =>
VSBinOp r -> VS (r TypeData) -> SValue r -> SValue r -> SValue r
typeBinExpr State ValueState (CppSrcCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
equalOp State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
bool
?!= :: SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Value
(?!=) = State ValueState (CppSrcCode OpData)
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState ValueState Value
forall (r :: * -> *).
(OpElim r, RenderValue r, ValueElim r) =>
VSBinOp r -> VS (r TypeData) -> SValue r -> SValue r -> SValue r
typeBinExpr State ValueState (CppSrcCode OpData)
forall (r :: * -> *). BinaryOpSym r => VSBinOp r
notEqualOp State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
bool
instance ValueExpression CppSrcCode where
inlineIf :: SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState ValueState Value
inlineIf = SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState ValueState Value
forall (r :: * -> *).
(RenderValue r, ValueElim r, ValueSym r) =>
SValue r -> SValue r -> SValue r -> SValue r
C.inlineIf
funcAppMixedArgs :: MixedCall CppSrcCode
funcAppMixedArgs = MixedCall CppSrcCode
forall (r :: * -> *). RenderValue r => MixedCall r
G.funcAppMixedArgs
extFuncAppMixedArgs :: ClassName -> MixedCall CppSrcCode
extFuncAppMixedArgs ClassName
l ClassName
n State ValueState (CppSrcCode TypeData)
t [SrcState ValueState Value]
vs [(SrcState ValueState Variable, SrcState ValueState Value)]
ns = do
(ValueState -> ValueState) -> StateT ValueState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (ClassName -> ValueState -> ValueState
addModuleImportVS ClassName
l)
MixedCall CppSrcCode
forall (r :: * -> *). ValueExpression r => MixedCall r
funcAppMixedArgs ClassName
n State ValueState (CppSrcCode TypeData)
t [SrcState ValueState Value]
vs [(SrcState ValueState Variable, SrcState ValueState Value)]
ns
libFuncAppMixedArgs :: ClassName -> MixedCall CppSrcCode
libFuncAppMixedArgs = ClassName -> MixedCall CppSrcCode
forall (r :: * -> *). ValueExpression r => ClassName -> MixedCall r
C.libFuncAppMixedArgs
lambda :: [SrcState ValueState BinderD]
-> SrcState ValueState Value -> SrcState ValueState Value
lambda = ([CppSrcCode BinderD] -> CppSrcCode Value -> Doc)
-> [SrcState ValueState BinderD]
-> SrcState ValueState Value
-> SrcState ValueState Value
forall (r :: * -> *).
(BinderElim r, RenderValue r, ValueSym r) =>
([r BinderD] -> r Value -> Doc)
-> [VSBinder r] -> SValue r -> SValue r
G.lambda [CppSrcCode BinderD] -> CppSrcCode Value -> Doc
cppLambda
notNull :: SrcState ValueState Value -> SrcState ValueState Value
notNull SrcState ValueState Value
v = SrcState ValueState Value
v
instance OOValueExpression CppSrcCode where
newObjMixedArgs :: State ValueState (CppSrcCode TypeData)
-> [SrcState ValueState Value]
-> [(SrcState ValueState Variable, SrcState ValueState Value)]
-> SrcState ValueState Value
newObjMixedArgs = MixedCall CppSrcCode
forall (r :: * -> *).
(RenderValue r, UnRepr r TypeData) =>
ClassName -> MixedCtorCall r
G.newObjMixedArgs ClassName
""
extNewObjMixedArgs :: MixedCall CppSrcCode
extNewObjMixedArgs ClassName
l State ValueState (CppSrcCode TypeData)
t [SrcState ValueState Value]
vs [(SrcState ValueState Variable, SrcState ValueState Value)]
ns = do
(ValueState -> ValueState) -> StateT ValueState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (ClassName -> ValueState -> ValueState
addModuleImportVS ClassName
l)
State ValueState (CppSrcCode TypeData)
-> [SrcState ValueState Value]
-> [(SrcState ValueState Variable, SrcState ValueState Value)]
-> SrcState ValueState Value
forall (r :: * -> *). OOValueExpression r => MixedCtorCall r
newObjMixedArgs State ValueState (CppSrcCode TypeData)
t [SrcState ValueState Value]
vs [(SrcState ValueState Variable, SrcState ValueState Value)]
ns
libNewObjMixedArgs :: MixedCall CppSrcCode
libNewObjMixedArgs = MixedCall CppSrcCode
forall (r :: * -> *).
OOValueExpression r =>
ClassName -> MixedCtorCall r
C.libNewObjMixedArgs
instance RenderValue CppSrcCode where
inputFunc :: SrcState ValueState Value
inputFunc = SrcState ValueState Value -> SrcState ValueState Value
forall a. VS a -> VS a
addIOStreamImport (SrcState ValueState Value -> SrcState ValueState Value)
-> SrcState ValueState Value -> SrcState ValueState Value
forall a b. (a -> b) -> a -> b
$ State ValueState (CppSrcCode TypeData)
-> Doc -> SrcState ValueState Value
forall (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
string (ClassName -> Doc
text ClassName
cin)
printFunc :: SrcState ValueState Value
printFunc = SrcState ValueState Value -> SrcState ValueState Value
forall a. VS a -> VS a
addIOStreamImport (SrcState ValueState Value -> SrcState ValueState Value)
-> SrcState ValueState Value -> SrcState ValueState Value
forall a b. (a -> b) -> a -> b
$ State ValueState (CppSrcCode TypeData)
-> Doc -> SrcState ValueState Value
forall (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void (ClassName -> Doc
text ClassName
cout)
printLnFunc :: SrcState ValueState Value
printLnFunc = SrcState ValueState Value -> SrcState ValueState Value
forall a. VS a -> VS a
addIOStreamImport (SrcState ValueState Value -> SrcState ValueState Value)
-> SrcState ValueState Value -> SrcState ValueState Value
forall a b. (a -> b) -> a -> b
$ State ValueState (CppSrcCode TypeData)
-> Doc -> SrcState ValueState Value
forall (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void (ClassName -> Doc
text ClassName
cout)
printFileFunc :: SrcState ValueState Value -> SrcState ValueState Value
printFileFunc = (CppSrcCode TypeData
-> CppSrcCode Value -> SrcState ValueState Value)
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Value
-> SrcState ValueState 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 -> SrcState ValueState Value
forall (r :: * -> *).
RenderValue r =>
r TypeData -> Doc -> SValue r
mkVal CppSrcCode TypeData
vt (CppSrcCode Value -> Doc
forall (r :: * -> *). ValueElim r => r Value -> Doc
RC.value CppSrcCode Value
w)) State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void
printFileLnFunc :: SrcState ValueState Value -> SrcState ValueState Value
printFileLnFunc = (CppSrcCode TypeData
-> CppSrcCode Value -> SrcState ValueState Value)
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Value
-> SrcState ValueState 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 -> SrcState ValueState Value
forall (r :: * -> *).
RenderValue r =>
r TypeData -> Doc -> SValue r
mkVal CppSrcCode TypeData
vt (CppSrcCode Value -> Doc
forall (r :: * -> *). ValueElim r => r Value -> Doc
RC.value CppSrcCode Value
w)) State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void
cast :: State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Value -> SrcState ValueState Value
cast = State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Value -> SrcState ValueState Value
cppCast
call :: Maybe ClassName -> Maybe Doc -> MixedCall CppSrcCode
call = ClassName -> Maybe ClassName -> Maybe Doc -> MixedCall CppSrcCode
forall (r :: * -> *).
(InternalVarElim r, RenderValue r, ValueElim r) =>
ClassName -> Maybe ClassName -> Maybe Doc -> MixedCall r
CP.call' ClassName
cppName
valFromData :: Maybe Int
-> Maybe Integer
-> State ValueState (CppSrcCode TypeData)
-> Doc
-> SrcState ValueState Value
valFromData Maybe Int
p Maybe Integer
i State ValueState (CppSrcCode TypeData)
t' Doc
d = do
CppSrcCode TypeData
t <- State ValueState (CppSrcCode TypeData)
t'
CppSrcCode Value -> SrcState ValueState Value
forall a s. a -> State s a
toState (CppSrcCode Value -> SrcState ValueState Value)
-> CppSrcCode Value -> SrcState ValueState Value
forall a b. (a -> b) -> a -> b
$ (TypeData -> Doc -> Value)
-> CppSrcCode TypeData -> CppSrcCode Doc -> CppSrcCode Value
forall (r :: * -> *) a b c.
Applicative r =>
(a -> b -> c) -> r a -> r b -> r c
on2CodeValues (Maybe Int -> Maybe Integer -> TypeData -> Doc -> Value
vd Maybe Int
p Maybe Integer
i) CppSrcCode TypeData
t (Doc -> CppSrcCode Doc
forall (r :: * -> *) a. Monad r => a -> r a
toCode Doc
d)
instance ValueElim CppSrcCode 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 where
objMethodCallMixedArgs' :: ClassName
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Value
-> [SrcState ValueState Value]
-> [(SrcState ValueState Variable, SrcState ValueState Value)]
-> SrcState ValueState Value
objMethodCallMixedArgs' ClassName
fn State ValueState (CppSrcCode TypeData)
tp SrcState ValueState Value
ob [SrcState ValueState Value]
posArgs [(SrcState ValueState Variable, SrcState ValueState Value)]
nmArgs = do
CppSrcCode Value
ob' <- SrcState ValueState Value
ob
let objTp :: CodeType
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 (r :: * -> *). ValueSym r => r Value -> r TypeData
valueType CppSrcCode Value
ob'
case CodeType
objTp of
(Reference CodeType
_) -> Maybe ClassName -> Maybe Doc -> MixedCall CppSrcCode
forall (r :: * -> *).
RenderValue r =>
Maybe ClassName -> Maybe Doc -> MixedCall r
RC.call Maybe ClassName
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 (r :: * -> *). ValueElim r => r Value -> Doc
RC.value CppSrcCode Value
ob' Doc -> Doc -> Doc
<> Doc
ptrAccess') ClassName
fn State ValueState (CppSrcCode TypeData)
tp [SrcState ValueState Value]
posArgs [(SrcState ValueState Variable, SrcState ValueState Value)]
nmArgs
CodeType
_ -> ClassName
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Value
-> [SrcState ValueState Value]
-> [(SrcState ValueState Variable, SrcState ValueState Value)]
-> SrcState ValueState Value
forall (r :: * -> *).
(RenderValue r, ValueElim r) =>
ClassName
-> VS (r TypeData)
-> SValue r
-> [SValue r]
-> NamedArgs r
-> SValue r
G.objMethodCall ClassName
fn State ValueState (CppSrcCode TypeData)
tp SrcState ValueState Value
ob [SrcState ValueState Value]
posArgs [(SrcState ValueState Variable, SrcState ValueState Value)]
nmArgs
classMethodCallMixedArgs' :: ClassName
-> State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData)
-> [SrcState ValueState Value]
-> [(SrcState ValueState Variable, SrcState ValueState Value)]
-> SrcState ValueState Value
classMethodCallMixedArgs' ClassName
f State ValueState (CppSrcCode TypeData)
t State ValueState (CppSrcCode TypeData)
cls [SrcState ValueState Value]
vs [(SrcState ValueState Variable, SrcState ValueState Value)]
ns = do
CppSrcCode TypeData
c <- State ValueState (CppSrcCode TypeData)
cls
Maybe ClassName -> Maybe Doc -> MixedCall CppSrcCode
forall (r :: * -> *).
RenderValue r =>
Maybe ClassName -> Maybe Doc -> MixedCall r
RC.call Maybe ClassName
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 TypeData -> Doc
forall (r :: * -> *). UnRepr r TypeData => r TypeData -> Doc
renderType CppSrcCode TypeData
c Doc -> Doc -> Doc
<> ClassName -> Doc
text ClassName
nmSpc) ClassName
f State ValueState (CppSrcCode TypeData)
t [SrcState ValueState Value]
vs [(SrcState ValueState Variable, SrcState ValueState Value)]
ns
instance FunctionSym CppSrcCode where
instance OOFunctionSym CppSrcCode where
func :: ClassName
-> State ValueState (CppSrcCode TypeData)
-> [SrcState ValueState Value]
-> SrcState ValueState FuncData
func = ClassName
-> State ValueState (CppSrcCode TypeData)
-> [SrcState ValueState Value]
-> SrcState ValueState FuncData
forall (r :: * -> *).
(RenderFunction r, ValueElim r, ValueExpression r) =>
ClassName -> VS (r TypeData) -> [SValue r] -> VS (r FuncData)
G.func
objAccess :: SrcState ValueState Value
-> SrcState ValueState FuncData -> SrcState ValueState Value
objAccess = SrcState ValueState Value
-> SrcState ValueState FuncData -> SrcState ValueState Value
forall (r :: * -> *).
(FunctionElim r, RenderValue r, ValueElim r) =>
SValue r -> VS (r FuncData) -> SValue r
G.objAccess
instance GetSet CppSrcCode where
get :: SrcState ValueState Value
-> SrcState ValueState Variable -> SrcState ValueState Value
get = SrcState ValueState Value
-> SrcState ValueState Variable -> SrcState ValueState Value
forall (r :: * -> *).
(InternalGetSet r, OOFunctionSym r) =>
SValue r -> SVariable r -> SValue r
G.get
set :: SrcState ValueState Value
-> SrcState ValueState Variable
-> SrcState ValueState Value
-> SrcState ValueState Value
set = SrcState ValueState Value
-> SrcState ValueState Variable
-> SrcState ValueState Value
-> SrcState ValueState Value
forall (r :: * -> *).
(InternalGetSet r, OOFunctionSym r) =>
SValue r -> SVariable r -> SValue r -> SValue r
G.set
instance IndexTranslator CppSrcCode where
intToIndex :: SrcState ValueState Value -> SrcState ValueState Value
intToIndex = SrcState ValueState Value -> SrcState ValueState Value
forall (r :: * -> *). SValue r -> SValue r
CP.intToIndex
indexToInt :: SrcState ValueState Value -> SrcState ValueState Value
indexToInt = SrcState ValueState Value -> SrcState ValueState Value
forall (r :: * -> *). SValue r -> SValue r
CP.indexToInt
instance Reference CppSrcCode where
makeRef :: SrcState ValueState Value -> SrcState ValueState Value
makeRef SrcState ValueState Value
vl = do
CppSrcCode Value
vl' <- SrcState ValueState Value
vl
let vlTyp :: CodeType
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 (r :: * -> *). ValueSym r => r Value -> r TypeData
valueType CppSrcCode Value
vl'
vlDoc :: Doc
vlDoc = CppSrcCode Value -> Doc
forall (r :: * -> *). ValueElim r => r Value -> Doc
RC.value CppSrcCode Value
vl'
State ValueState (CppSrcCode TypeData)
-> Doc -> SrcState ValueState Value
forall (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal (CodeType -> State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). OOTypeSym r => CodeType -> VS (r TypeData)
convTypeOO (CodeType -> State ValueState (CppSrcCode TypeData))
-> CodeType -> State ValueState (CppSrcCode TypeData)
forall a b. (a -> b) -> a -> b
$ CodeType -> CodeType
Reference CodeType
vlTyp) (Doc
cppPtr Doc -> Doc -> Doc
<> Doc
vlDoc)
maybeDeref :: SrcState ValueState Value -> SrcState ValueState Value
maybeDeref SrcState ValueState Value
vl = do
CppSrcCode Value
vl' <- SrcState ValueState Value
vl
let vlTyp :: CodeType
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 (r :: * -> *). ValueSym r => r Value -> r TypeData
valueType CppSrcCode Value
vl'
vlDoc :: Doc
vlDoc = CppSrcCode Value -> Doc
forall (r :: * -> *). ValueElim r => r Value -> Doc
RC.value CppSrcCode Value
vl'
case CodeType
vlTyp of
(Reference CodeType
tp) -> State ValueState (CppSrcCode TypeData)
-> Doc -> SrcState ValueState Value
forall (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal (CodeType -> State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). OOTypeSym r => CodeType -> VS (r TypeData)
convTypeOO CodeType
tp) (Doc
cppDeref Doc -> Doc -> Doc
<> Doc
vlDoc)
CodeType
_ -> SrcState ValueState Value
vl
instance Array CppSrcCode where
arrayElem :: SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Variable
arrayElem = SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Variable
forall (r :: * -> *).
(IndexTranslator r, RenderVariable r, ValueElim r) =>
SValue r -> SValue r -> SVariable r
G.arrayElem
arrayLength :: SrcState ValueState Value -> SrcState ValueState Value
arrayLength = SrcState ValueState Value -> SrcState ValueState Value
forall (r :: * -> *) smt. List r smt => SValue r -> SValue r
listSize
arrayCopy :: SrcState ValueState Value -> SrcState ValueState Value
arrayCopy = SrcState ValueState Value -> SrcState ValueState Value
forall a. a -> a
id
instance List CppSrcCode (Doc, Terminator) where
listSize :: SrcState ValueState Value -> SrcState ValueState Value
listSize SrcState ValueState Value
v = State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Value -> SrcState ValueState Value
forall (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> SValue r -> SValue r
cast State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
int (ClassName -> SrcState ValueState Value -> SrcState ValueState Value
forall (r :: * -> *).
InternalValueExp r =>
ClassName -> SValue r -> SValue r
C.listSize ClassName
"size" SrcState ValueState Value
v)
listAdd :: SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
listAdd SrcState ValueState Value
list SrcState ValueState Value
idx SrcState ValueState Value
vl = SrcState ValueState Value -> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
StatementSym r smt =>
SValue r -> MS (r smt)
valStmt (SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator))
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall a b. (a -> b) -> a -> b
$
State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Value
-> ClassName
-> [SrcState ValueState Value]
-> SrcState ValueState Value
forall (r :: * -> *).
InternalValueExp r =>
VS (r TypeData) -> SValue r -> ClassName -> [SValue r] -> SValue r
objMethodCall State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void SrcState ValueState Value
list ClassName
cppListAdd [SrcState ValueState Value -> SrcState ValueState Value
iterBegin SrcState ValueState Value
list SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Value
forall (r :: * -> *).
NumericExpression r =>
SValue r -> SValue r -> SValue r
#+ SrcState ValueState Value
idx, SrcState ValueState Value
vl]
listAppend :: SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
listAppend = ClassName
-> SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
(InternalValueExp r, StatementSym r smt) =>
ClassName -> SValue r -> SValue r -> MS (r smt)
CG.listAppend ClassName
cppListAppend
listAccess :: SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Value
listAccess = SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Value
forall (r :: * -> *).
(IndexTranslator r, InternalListFunc r, FunctionElim r,
RenderFunction r, RenderValue r, TypeElim r, ValueElim r) =>
SValue r -> SValue r -> SValue r
G.listAccess
listSet :: SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
listSet SrcState ValueState Value
list SrcState ValueState Value
idx SrcState ValueState Value
vl = do
CppSrcCode Value
listAccessVal <- LensLike'
(Zoomed (StateT ValueState Identity) (CppSrcCode Value))
MethodState
ValueState
-> SrcState ValueState 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 (SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Value
forall (r :: * -> *) smt.
List r smt =>
SValue r -> SValue r -> SValue r
listAccess SrcState ValueState Value
list SrcState ValueState Value
idx)
let listAccessVar :: SrcState ValueState Variable
listAccessVar =
ClassName
-> CppSrcCode TypeData -> Doc -> SrcState ValueState Variable
forall (r :: * -> *).
RenderVariable r =>
ClassName -> r TypeData -> Doc -> SVariable r
mkVar (Doc -> ClassName
render (Doc -> ClassName) -> Doc -> ClassName
forall a b. (a -> b) -> a -> b
$ CppSrcCode Value -> Doc
forall (r :: * -> *). ValueElim r => r Value -> Doc
RC.value CppSrcCode Value
listAccessVal) (CppSrcCode Value -> CppSrcCode TypeData
forall (r :: * -> *). ValueSym r => r Value -> r TypeData
valueType CppSrcCode Value
listAccessVal) (CppSrcCode Value -> Doc
forall (r :: * -> *). ValueElim r => r Value -> Doc
RC.value CppSrcCode Value
listAccessVal)
SrcState ValueState Variable
listAccessVar SrcState ValueState Variable
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
AssignStatement r smt =>
SVariable r -> SValue r -> MS (r smt)
&= SrcState ValueState Value
vl
indexOf :: SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Value
indexOf SrcState ValueState Value
l SrcState ValueState Value
v = SrcState ValueState Value -> SrcState ValueState Value
forall a. VS a -> VS a
addAlgorithmImportVS (SrcState ValueState Value -> SrcState ValueState Value)
-> SrcState ValueState Value -> SrcState ValueState Value
forall a b. (a -> b) -> a -> b
$ SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Value
cppIndexFunc SrcState ValueState Value
l SrcState ValueState Value
v SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Value
forall (r :: * -> *).
NumericExpression r =>
SValue r -> SValue r -> SValue r
#- SrcState ValueState Value -> SrcState ValueState Value
iterBegin SrcState ValueState Value
l
instance Set CppSrcCode where
contains :: SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Value
contains = ClassName
-> ClassName
-> SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState ValueState Value
forall (r :: * -> *).
(Comparison r, OOFunctionSym r) =>
ClassName -> ClassName -> SValue r -> SValue r -> SValue r
CP.containsInt ClassName
cppIndex ClassName
cppIterEnd
setAdd :: SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Value
setAdd = ClassName
-> SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState ValueState Value
forall (r :: * -> *).
InternalValueExp r =>
ClassName -> SValue r -> SValue r -> SValue r
CP.setMethodCall ClassName
cppListAdd
setRemove :: SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Value
setRemove = ClassName
-> SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState ValueState Value
forall (r :: * -> *).
InternalValueExp r =>
ClassName -> SValue r -> SValue r -> SValue r
CP.setMethodCall ClassName
cppListRemove
setUnion :: SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Value
setUnion = ClassName
-> SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState ValueState Value
forall a. HasCallStack => ClassName -> a
error ClassName
"not done yet"
instance InternalList CppSrcCode where
listSlice' :: Maybe (SrcState ValueState Value)
-> Maybe (SrcState ValueState Value)
-> Maybe (SrcState ValueState Value)
-> SrcState ValueState Variable
-> SrcState ValueState Value
-> SrcState MethodState Doc
listSlice' = Maybe (SrcState ValueState Value)
-> Maybe (SrcState ValueState Value)
-> Maybe (SrcState ValueState Value)
-> SrcState ValueState Variable
-> SrcState ValueState Value
-> SrcState MethodState Doc
forall (r :: * -> *) smt.
(SharedStatement r smt, ValueElim r, VariableElim r) =>
Maybe (SValue r)
-> Maybe (SValue r)
-> Maybe (SValue r)
-> SVariable r
-> SValue r
-> MS (r Doc)
M.listSlice
instance InternalGetSet CppSrcCode where
getFunc :: SrcState ValueState Variable -> SrcState ValueState FuncData
getFunc = SrcState ValueState Variable -> SrcState ValueState FuncData
forall (r :: * -> *).
(OOFunctionSym r, VariableElim r) =>
SVariable r -> VS (r FuncData)
G.getFunc
setFunc :: State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable
-> SrcState ValueState Value
-> SrcState ValueState FuncData
setFunc = State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable
-> SrcState ValueState Value
-> SrcState ValueState FuncData
forall (r :: * -> *).
(OOFunctionSym r, VariableElim r) =>
VS (r TypeData) -> SVariable r -> SValue r -> VS (r FuncData)
G.setFunc
instance InternalListFunc CppSrcCode where
listAccessFunc :: State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Value -> SrcState ValueState FuncData
listAccessFunc = ClassName
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Value
-> SrcState ValueState FuncData
forall (r :: * -> *).
(OOFunctionSym r, TypeElim r) =>
ClassName -> VS (r TypeData) -> SValue r -> VS (r FuncData)
CP.listAccessFunc' ClassName
cppListAccess
instance BinderSym CppSrcCode where
binder :: ClassName
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState BinderD
binder ClassName
nm State ValueState (CppSrcCode TypeData)
tp = (TypeData -> BinderD) -> CppSrcCode TypeData -> CppSrcCode BinderD
forall (r :: * -> *) a b. Functor r => (a -> b) -> r a -> r b
onCodeValue (ClassName -> TypeData -> BinderD
bindFormD ClassName
nm) (CppSrcCode TypeData -> CppSrcCode BinderD)
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState BinderD
forall (r :: * -> *) a b. Functor r => (a -> b) -> r a -> r b
<$> State ValueState (CppSrcCode TypeData)
tp
instance BinderElim CppSrcCode where
binderName :: CppSrcCode BinderD -> ClassName
binderName = BinderD -> ClassName
bindName (BinderD -> ClassName)
-> (CppSrcCode BinderD -> BinderD)
-> CppSrcCode BinderD
-> ClassName
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 (r :: * -> *) a b. Functor r => (a -> b) -> r a -> r b
onCodeValue BinderD -> TypeData
bindType
instance InternalBinderElim CppSrcCode where
binderElim :: CppSrcCode BinderD -> Doc
binderElim = ClassName -> Doc
text (ClassName -> Doc)
-> (CppSrcCode BinderD -> ClassName) -> CppSrcCode BinderD -> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. BinderD -> ClassName
bindName (BinderD -> ClassName)
-> (CppSrcCode BinderD -> BinderD)
-> CppSrcCode BinderD
-> ClassName
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppSrcCode BinderD -> BinderD
forall a. CppSrcCode a -> a
unCPPSC
instance RenderFunction CppSrcCode 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 (r :: * -> *) a b. Functor r => (a -> b) -> r a -> r b
onCodeValue (TypeData -> Doc -> FuncData
`fd` Doc
d))
instance FunctionElim CppSrcCode where
functionType :: CppSrcCode FuncData -> CppSrcCode TypeData
functionType = (FuncData -> TypeData)
-> CppSrcCode FuncData -> CppSrcCode TypeData
forall (r :: * -> *) a b. Functor r => (a -> b) -> r a -> r 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 (Doc, Terminator) where
multiAssign :: [SrcState ValueState Variable]
-> [SrcState ValueState Value]
-> SrcState MethodState (Doc, Terminator)
multiAssign [SrcState ValueState Variable]
_ [SrcState ValueState Value]
_ = ClassName -> SrcState MethodState (Doc, Terminator)
forall a. HasCallStack => ClassName -> a
error (ClassName -> SrcState MethodState (Doc, Terminator))
-> ClassName -> SrcState MethodState (Doc, Terminator)
forall a b. (a -> b) -> a -> b
$ ClassName -> ClassName
C.multiAssignError ClassName
cppName
instance InternalIOStmt CppSrcCode (Doc, Terminator) where
printSt :: Bool
-> Maybe (SrcState ValueState Value)
-> SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
printSt Bool
nl Maybe (SrcState ValueState Value)
_ = Bool
-> SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
(RenderStatement r smt, ValueElim r) =>
Bool -> SValue r -> SValue r -> MS (r smt)
cppPrint Bool
nl
instance InternalControlStmt CppSrcCode (Doc, Terminator) where
multiReturn :: [SrcState ValueState Value]
-> SrcState MethodState (Doc, Terminator)
multiReturn [SrcState ValueState Value]
_ = ClassName -> SrcState MethodState (Doc, Terminator)
forall a. HasCallStack => ClassName -> a
error (ClassName -> SrcState MethodState (Doc, Terminator))
-> ClassName -> SrcState MethodState (Doc, Terminator)
forall a b. (a -> b) -> a -> b
$ ClassName -> ClassName
C.multiReturnError ClassName
cppName
instance RenderStatement CppSrcCode (Doc, Terminator) where
stmt :: SrcState MethodState (Doc, Terminator)
-> SrcState MethodState (Doc, Terminator)
stmt = SrcState MethodState (Doc, Terminator)
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
(RenderStatement r smt, StatementElim r smt) =>
MS (r smt) -> MS (r smt)
G.stmt
loopStmt :: SrcState MethodState (Doc, Terminator)
-> SrcState MethodState (Doc, Terminator)
loopStmt = SrcState MethodState (Doc, Terminator)
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
(RenderStatement r smt, StatementElim r smt) =>
MS (r smt) -> MS (r smt)
G.loopStmt
stmtFromData :: Doc -> Terminator -> SrcState MethodState (Doc, Terminator)
stmtFromData Doc
d Terminator
t = CppSrcCode (Doc, Terminator)
-> SrcState MethodState (Doc, Terminator)
forall a s. a -> State s a
toState (CppSrcCode (Doc, Terminator)
-> SrcState MethodState (Doc, Terminator))
-> CppSrcCode (Doc, Terminator)
-> SrcState MethodState (Doc, Terminator)
forall a b. (a -> b) -> a -> b
$ (Doc, Terminator) -> CppSrcCode (Doc, Terminator)
forall (r :: * -> *) a. Monad r => a -> r a
toCode (Doc
d, Terminator
t)
instance StatementElim CppSrcCode (Doc, Terminator) where
statement :: CppSrcCode (Doc, Terminator) -> Doc
statement = (Doc, Terminator) -> Doc
forall a b. (a, b) -> a
fst ((Doc, Terminator) -> Doc)
-> (CppSrcCode (Doc, Terminator) -> (Doc, Terminator))
-> CppSrcCode (Doc, Terminator)
-> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppSrcCode (Doc, Terminator) -> (Doc, Terminator)
forall a. CppSrcCode a -> a
unCPPSC
statementTerm :: CppSrcCode (Doc, Terminator) -> Terminator
statementTerm = (Doc, Terminator) -> Terminator
forall a b. (a, b) -> b
snd ((Doc, Terminator) -> Terminator)
-> (CppSrcCode (Doc, Terminator) -> (Doc, Terminator))
-> CppSrcCode (Doc, Terminator)
-> Terminator
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppSrcCode (Doc, Terminator) -> (Doc, Terminator)
forall a. CppSrcCode a -> a
unCPPSC
instance StatementSym CppSrcCode (Doc, Terminator) where
valStmt :: SrcState ValueState Value -> SrcState MethodState (Doc, Terminator)
valStmt = Terminator
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
(RenderStatement r smt, ValueElim r) =>
Terminator -> SValue r -> MS (r smt)
G.valStmt Terminator
Semi
emptyStmt :: SrcState MethodState (Doc, Terminator)
emptyStmt = SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. RenderStatement r smt => MS (r smt)
G.emptyStmt
multi :: [SrcState MethodState (Doc, Terminator)]
-> SrcState MethodState (Doc, Terminator)
multi = ([CppSrcCode (Doc, Terminator)] -> CppSrcCode (Doc, Terminator))
-> [SrcState MethodState (Doc, Terminator)]
-> SrcState MethodState (Doc, Terminator)
forall a b s. ([a] -> b) -> [State s a] -> State s b
onStateList (([(Doc, Terminator)] -> (Doc, Terminator))
-> [CppSrcCode (Doc, Terminator)] -> CppSrcCode (Doc, Terminator)
forall (m :: * -> *) a b. Monad m => ([a] -> b) -> [m a] -> m b
onCodeList [(Doc, Terminator)] -> (Doc, Terminator)
R.multiStmt)
instance AssignStatement CppSrcCode (Doc, Terminator) where
assign :: SrcState ValueState Variable
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
assign = Terminator
-> SrcState ValueState Variable
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
(InternalVarElim r, RenderStatement r smt, ValueElim r) =>
Terminator -> SVariable r -> SValue r -> MS (r smt)
G.assign Terminator
Semi
&-= :: SrcState ValueState Variable
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
(&-=) = Terminator
-> SrcState ValueState Variable
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
(InternalVarElim r, RenderStatement r smt, ValueElim r) =>
Terminator -> SVariable r -> SValue r -> MS (r smt)
G.subAssign Terminator
Semi
&+= :: SrcState ValueState Variable
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
(&+=) = SrcState ValueState Variable
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
(InternalVarElim r, RenderStatement r smt, ValueElim r) =>
SVariable r -> SValue r -> MS (r smt)
C.increment
&++ :: SrcState ValueState Variable
-> SrcState MethodState (Doc, Terminator)
(&++) = SrcState ValueState Variable
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
(InternalVarElim r, RenderStatement r smt) =>
SVariable r -> MS (r smt)
C.increment1
&-- :: SrcState ValueState Variable
-> SrcState MethodState (Doc, Terminator)
(&--) = SrcState ValueState Variable
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
(InternalVarElim r, RenderStatement r smt) =>
SVariable r -> MS (r smt)
C.decrement1
instance DeclStatement CppSrcCode (Doc, Terminator) where
varDec :: SrcState ValueState Variable
-> CppSrcCode ScopeData -> SrcState MethodState (Doc, Terminator)
varDec SrcState ValueState Variable
vr CppSrcCode ScopeData
scp = do
CppSrcCode Variable
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 :: CodeType
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 (r :: * -> *). VariableElim r => r Variable -> r TypeData
variableType) CppSrcCode Variable
vr'
case CodeType
tp of
(Array CodeType
_) -> ClassName -> SrcState MethodState (Doc, Terminator)
forall a. HasCallStack => ClassName -> a
error ClassName
"Can't use `varDec` for C++ arrays; use `arrayDec`"
CodeType
_ -> CppSrcCode AttachmentData
-> CppSrcCode AttachmentData
-> Doc
-> SrcState ValueState Variable
-> CppSrcCode ScopeData
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) att smt.
(InternalVarElim r, PermElim r att, RenderStatement r smt,
ScopeElim r, UnRepr r TypeData, TypeElim r, VariableElim r) =>
r att -> r att -> Doc -> SVariable r -> r ScopeData -> MS (r smt)
C.varDec CppSrcCode AttachmentData
forall (r :: * -> *) att. AttachmentSym r att => r att
classLevel CppSrcCode AttachmentData
forall (r :: * -> *) att. AttachmentSym r att => r att
instanceLevel Doc
empty SrcState ValueState Variable
vr CppSrcCode ScopeData
scp
varDecDef :: SrcState ValueState Variable
-> CppSrcCode ScopeData
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
varDecDef = Terminator
-> SrcState ValueState Variable
-> CppSrcCode ScopeData
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
(DeclStatement r smt, RenderStatement r smt, StatementElim r smt,
ValueElim r) =>
Terminator -> SVariable r -> r ScopeData -> SValue r -> MS (r smt)
C.varDecDef Terminator
Semi
setDec :: SrcState ValueState Variable
-> CppSrcCode ScopeData -> SrcState MethodState (Doc, Terminator)
setDec = SrcState ValueState Variable
-> CppSrcCode ScopeData -> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
DeclStatement r smt =>
SVariable r -> r ScopeData -> MS (r smt)
varDec
setDecDef :: SrcState ValueState Variable
-> CppSrcCode ScopeData
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
setDecDef = SrcState ValueState Variable
-> CppSrcCode ScopeData
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
DeclStatement r smt =>
SVariable r -> r ScopeData -> SValue r -> MS (r smt)
varDecDef
listDec :: Integer
-> SrcState ValueState Variable
-> CppSrcCode ScopeData
-> SrcState MethodState (Doc, Terminator)
listDec Integer
n = (CppSrcCode Value -> Doc)
-> SrcState ValueState Value
-> SrcState ValueState Variable
-> CppSrcCode ScopeData
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
(DeclStatement r smt, RenderStatement r smt,
StatementElim r smt) =>
(r Value -> Doc)
-> SValue r -> SVariable r -> r ScopeData -> MS (r smt)
C.listDec CppSrcCode Value -> Doc
forall (r :: * -> *). ValueElim r => r Value -> Doc
cppListDecDoc (Integer -> SrcState ValueState Value
forall (r :: * -> *). Literal r => Integer -> SValue r
litInt Integer
n)
listDecDef :: SrcState ValueState Variable
-> CppSrcCode ScopeData
-> [SrcState ValueState Value]
-> SrcState MethodState (Doc, Terminator)
listDecDef = ([CppSrcCode Value] -> Doc)
-> SrcState ValueState Variable
-> CppSrcCode ScopeData
-> [SrcState ValueState Value]
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
(DeclStatement r smt, RenderStatement r smt,
StatementElim r smt) =>
([r Value] -> Doc)
-> SVariable r -> r ScopeData -> [SValue r] -> MS (r smt)
cppListDecDef [CppSrcCode Value] -> Doc
forall (r :: * -> *). ValueElim r => [r Value] -> Doc
cppListDecDefDoc
arrayDec :: Integer
-> SrcState ValueState Value
-> SrcState ValueState Variable
-> CppSrcCode ScopeData
-> SrcState MethodState (Doc, Terminator)
arrayDec Integer
n SrcState ValueState Value
_ SrcState ValueState Variable
vr CppSrcCode ScopeData
scp = do
Doc
decBase <- SrcState ValueState Variable -> CppSrcCode ScopeData -> MS Doc
arrayDecBase SrcState ValueState Variable
vr CppSrcCode ScopeData
scp
let sz' :: SrcState ValueState Value
sz' = Integer -> SrcState ValueState Value
forall (r :: * -> *). Literal r => Integer -> SValue r
litInt Integer
n :: SValue CppSrcCode
CppSrcCode Value
sz <- LensLike'
(Zoomed (StateT ValueState Identity) (CppSrcCode Value))
MethodState
ValueState
-> SrcState ValueState 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 SrcState ValueState Value
sz'
Doc -> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
RenderStatement r smt =>
Doc -> MS (r smt)
mkStmt (Doc -> SrcState MethodState (Doc, Terminator))
-> Doc -> SrcState MethodState (Doc, Terminator)
forall a b. (a -> b) -> a -> b
$ Doc
decBase Doc -> Doc -> Doc
<> Doc -> Doc
parens (CppSrcCode Value -> Doc
forall (r :: * -> *). ValueElim r => r Value -> Doc
RC.value CppSrcCode Value
sz)
arrayDecDef :: SrcState ValueState Variable
-> CppSrcCode ScopeData
-> [SrcState ValueState Value]
-> SrcState MethodState (Doc, Terminator)
arrayDecDef SrcState ValueState Variable
vr CppSrcCode ScopeData
scp [SrcState ValueState Value]
vals = do
Doc
decBase <- SrcState ValueState Variable -> CppSrcCode ScopeData -> MS Doc
arrayDecBase SrcState ValueState Variable
vr CppSrcCode ScopeData
scp
[CppSrcCode Value]
vs <- (SrcState ValueState Value
-> StateT MethodState Identity (CppSrcCode Value))
-> [SrcState ValueState 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
-> SrcState ValueState 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) [SrcState ValueState Value]
vals
Doc -> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
RenderStatement r smt =>
Doc -> MS (r smt)
mkStmt (Doc -> SrcState MethodState (Doc, Terminator))
-> Doc -> SrcState MethodState (Doc, Terminator)
forall a b. (a -> b) -> a -> b
$ Doc
decBase Doc -> Doc -> Doc
<+> Doc -> Doc
braces ([CppSrcCode Value] -> Doc
forall (r :: * -> *). ValueElim r => [r Value] -> Doc
valueList [CppSrcCode Value]
vs)
constDecDef :: SrcState ValueState Variable
-> CppSrcCode ScopeData
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
constDecDef = SrcState ValueState Variable
-> CppSrcCode ScopeData
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
(InternalVarElim r, RenderStatement r smt, ScopeElim r,
UnRepr r TypeData, ValueElim r, VariableElim r) =>
SVariable r -> r ScopeData -> SValue r -> MS (r smt)
CG.constDecDef
funcDecDef :: SrcState ValueState Variable
-> CppSrcCode ScopeData
-> [SrcState ValueState Variable]
-> SrcState MethodState Doc
-> SrcState MethodState (Doc, Terminator)
funcDecDef = SrcState ValueState Variable
-> CppSrcCode ScopeData
-> [SrcState ValueState Variable]
-> SrcState MethodState Doc
-> SrcState MethodState (Doc, Terminator)
cppFuncDecDef
instance OODeclStatement CppSrcCode (Doc, Terminator) where
objDecDef :: SrcState ValueState Variable
-> CppSrcCode ScopeData
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
objDecDef = SrcState ValueState Variable
-> CppSrcCode ScopeData
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
DeclStatement r smt =>
SVariable r -> r ScopeData -> SValue r -> MS (r smt)
varDecDef
objDecNew :: SrcState ValueState Variable
-> CppSrcCode ScopeData
-> [SrcState ValueState Value]
-> SrcState MethodState (Doc, Terminator)
objDecNew = SrcState ValueState Variable
-> CppSrcCode ScopeData
-> [SrcState ValueState Value]
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
(DeclStatement r smt, OOValueExpression r, VariableElim r) =>
SVariable r -> r ScopeData -> [SValue r] -> MS (r smt)
G.objDecNew
extObjDecNew :: ClassName
-> SrcState ValueState Variable
-> CppSrcCode ScopeData
-> [SrcState ValueState Value]
-> SrcState MethodState (Doc, Terminator)
extObjDecNew = ClassName
-> SrcState ValueState Variable
-> CppSrcCode ScopeData
-> [SrcState ValueState Value]
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
(DeclStatement r smt, OOValueExpression r, VariableElim r) =>
ClassName -> SVariable r -> r ScopeData -> [SValue r] -> MS (r smt)
C.extObjDecNew
instance IOStatement CppSrcCode (Doc, Terminator) where
print :: SrcState ValueState Value -> SrcState MethodState (Doc, Terminator)
print = Bool
-> Maybe (SrcState ValueState Value)
-> SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
(InternalIOStmt r smt, SharedStatement r smt, TypeElim r) =>
Bool -> Maybe (SValue r) -> SValue r -> SValue r -> MS (r smt)
G.print Bool
False Maybe (SrcState ValueState Value)
forall a. Maybe a
Nothing SrcState ValueState Value
forall (r :: * -> *). RenderValue r => SValue r
printFunc
printLn :: SrcState ValueState Value -> SrcState MethodState (Doc, Terminator)
printLn = Bool
-> Maybe (SrcState ValueState Value)
-> SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
(InternalIOStmt r smt, SharedStatement r smt, TypeElim r) =>
Bool -> Maybe (SValue r) -> SValue r -> SValue r -> MS (r smt)
G.print Bool
True Maybe (SrcState ValueState Value)
forall a. Maybe a
Nothing SrcState ValueState Value
forall (r :: * -> *). RenderValue r => SValue r
printLnFunc
printStr :: ClassName -> SrcState MethodState (Doc, Terminator)
printStr = Bool
-> Maybe (SrcState ValueState Value)
-> SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
(InternalIOStmt r smt, SharedStatement r smt, TypeElim r) =>
Bool -> Maybe (SValue r) -> SValue r -> SValue r -> MS (r smt)
G.print Bool
False Maybe (SrcState ValueState Value)
forall a. Maybe a
Nothing SrcState ValueState Value
forall (r :: * -> *). RenderValue r => SValue r
printFunc (SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator))
-> (ClassName -> SrcState ValueState Value)
-> ClassName
-> SrcState MethodState (Doc, Terminator)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ClassName -> SrcState ValueState Value
forall (r :: * -> *). Literal r => ClassName -> SValue r
litString
printStrLn :: ClassName -> SrcState MethodState (Doc, Terminator)
printStrLn = Bool
-> Maybe (SrcState ValueState Value)
-> SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
(InternalIOStmt r smt, SharedStatement r smt, TypeElim r) =>
Bool -> Maybe (SValue r) -> SValue r -> SValue r -> MS (r smt)
G.print Bool
True Maybe (SrcState ValueState Value)
forall a. Maybe a
Nothing SrcState ValueState Value
forall (r :: * -> *). RenderValue r => SValue r
printLnFunc (SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator))
-> (ClassName -> SrcState ValueState Value)
-> ClassName
-> SrcState MethodState (Doc, Terminator)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ClassName -> SrcState ValueState Value
forall (r :: * -> *). Literal r => ClassName -> SValue r
litString
printFile :: SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
printFile SrcState ValueState Value
f = Bool
-> Maybe (SrcState ValueState Value)
-> SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
(InternalIOStmt r smt, SharedStatement r smt, TypeElim r) =>
Bool -> Maybe (SValue r) -> SValue r -> SValue r -> MS (r smt)
G.print Bool
False (SrcState ValueState Value -> Maybe (SrcState ValueState Value)
forall a. a -> Maybe a
Just SrcState ValueState Value
f) (SrcState ValueState Value -> SrcState ValueState Value
forall (r :: * -> *). RenderValue r => SValue r -> SValue r
printFileFunc SrcState ValueState Value
f)
printFileLn :: SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
printFileLn SrcState ValueState Value
f = Bool
-> Maybe (SrcState ValueState Value)
-> SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
(InternalIOStmt r smt, SharedStatement r smt, TypeElim r) =>
Bool -> Maybe (SValue r) -> SValue r -> SValue r -> MS (r smt)
G.print Bool
True (SrcState ValueState Value -> Maybe (SrcState ValueState Value)
forall a. a -> Maybe a
Just SrcState ValueState Value
f) (SrcState ValueState Value -> SrcState ValueState Value
forall (r :: * -> *). RenderValue r => SValue r -> SValue r
printFileLnFunc SrcState ValueState Value
f)
printFileStr :: SrcState ValueState Value
-> ClassName -> SrcState MethodState (Doc, Terminator)
printFileStr SrcState ValueState Value
f = Bool
-> Maybe (SrcState ValueState Value)
-> SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
(InternalIOStmt r smt, SharedStatement r smt, TypeElim r) =>
Bool -> Maybe (SValue r) -> SValue r -> SValue r -> MS (r smt)
G.print Bool
False (SrcState ValueState Value -> Maybe (SrcState ValueState Value)
forall a. a -> Maybe a
Just SrcState ValueState Value
f) (SrcState ValueState Value -> SrcState ValueState Value
forall (r :: * -> *). RenderValue r => SValue r -> SValue r
printFileFunc SrcState ValueState Value
f) (SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator))
-> (ClassName -> SrcState ValueState Value)
-> ClassName
-> SrcState MethodState (Doc, Terminator)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ClassName -> SrcState ValueState Value
forall (r :: * -> *). Literal r => ClassName -> SValue r
litString
printFileStrLn :: SrcState ValueState Value
-> ClassName -> SrcState MethodState (Doc, Terminator)
printFileStrLn SrcState ValueState Value
f = Bool
-> Maybe (SrcState ValueState Value)
-> SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
(InternalIOStmt r smt, SharedStatement r smt, TypeElim r) =>
Bool -> Maybe (SValue r) -> SValue r -> SValue r -> MS (r smt)
G.print Bool
True (SrcState ValueState Value -> Maybe (SrcState ValueState Value)
forall a. a -> Maybe a
Just SrcState ValueState Value
f) (SrcState ValueState Value -> SrcState ValueState Value
forall (r :: * -> *). RenderValue r => SValue r -> SValue r
printFileLnFunc SrcState ValueState Value
f) (SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator))
-> (ClassName -> SrcState ValueState Value)
-> ClassName
-> SrcState MethodState (Doc, Terminator)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ClassName -> SrcState ValueState Value
forall (r :: * -> *). Literal r => ClassName -> SValue r
litString
getInput :: SrcState ValueState Variable
-> SrcState MethodState (Doc, Terminator)
getInput SrcState ValueState Variable
v = SrcState ValueState Variable
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
cppInput SrcState ValueState Variable
v SrcState ValueState Value
forall (r :: * -> *). RenderValue r => SValue r
inputFunc
discardInput :: SrcState MethodState (Doc, Terminator)
discardInput = SrcState MethodState (Doc, Terminator)
-> SrcState MethodState (Doc, Terminator)
forall a. MS a -> MS a
addAlgorithmImport (SrcState MethodState (Doc, Terminator)
-> SrcState MethodState (Doc, Terminator))
-> SrcState MethodState (Doc, Terminator)
-> SrcState MethodState (Doc, Terminator)
forall a b. (a -> b) -> a -> b
$ SrcState MethodState (Doc, Terminator)
-> SrcState MethodState (Doc, Terminator)
forall a. MS a -> MS a
addLimitsImport (SrcState MethodState (Doc, Terminator)
-> SrcState MethodState (Doc, Terminator))
-> SrcState MethodState (Doc, Terminator)
-> SrcState MethodState (Doc, Terminator)
forall a b. (a -> b) -> a -> b
$ Char
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
cppDiscardInput Char
'\n'
SrcState ValueState Value
forall (r :: * -> *). RenderValue r => SValue r
inputFunc
getFileInput :: SrcState ValueState Value
-> SrcState ValueState Variable
-> SrcState MethodState (Doc, Terminator)
getFileInput SrcState ValueState Value
f SrcState ValueState Variable
v = SrcState ValueState Variable
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
cppInput SrcState ValueState Variable
v SrcState ValueState Value
f
discardFileInput :: SrcState ValueState Value -> SrcState MethodState (Doc, Terminator)
discardFileInput SrcState ValueState Value
f = SrcState MethodState (Doc, Terminator)
-> SrcState MethodState (Doc, Terminator)
forall a. MS a -> MS a
addAlgorithmImport (SrcState MethodState (Doc, Terminator)
-> SrcState MethodState (Doc, Terminator))
-> SrcState MethodState (Doc, Terminator)
-> SrcState MethodState (Doc, Terminator)
forall a b. (a -> b) -> a -> b
$ SrcState MethodState (Doc, Terminator)
-> SrcState MethodState (Doc, Terminator)
forall a. MS a -> MS a
addLimitsImport (SrcState MethodState (Doc, Terminator)
-> SrcState MethodState (Doc, Terminator))
-> SrcState MethodState (Doc, Terminator)
-> SrcState MethodState (Doc, Terminator)
forall a b. (a -> b) -> a -> b
$
Char
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
cppDiscardInput Char
' ' SrcState ValueState Value
f
openFileR :: SrcState ValueState Variable
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
openFileR = ClassName
-> SrcState ValueState Variable
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
cppOpenFile ClassName
cppR
openFileW :: SrcState ValueState Variable
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
openFileW = ClassName
-> SrcState ValueState Variable
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
cppOpenFile ClassName
cppW
openFileA :: SrcState ValueState Variable
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
openFileA = ClassName
-> SrcState ValueState Variable
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
cppOpenFile ClassName
cppA
closeFile :: SrcState ValueState Value -> SrcState MethodState (Doc, Terminator)
closeFile = ClassName
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
(InternalValueExp r, StatementSym r smt) =>
ClassName -> SValue r -> MS (r smt)
G.closeFile ClassName
cppClose
getFileInputLine :: SrcState ValueState Value
-> SrcState ValueState Variable
-> SrcState MethodState (Doc, Terminator)
getFileInputLine SrcState ValueState Value
f SrcState ValueState Variable
v = SrcState ValueState Value -> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
StatementSym r smt =>
SValue r -> MS (r smt)
valStmt (SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator))
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall a b. (a -> b) -> a -> b
$ SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Value
getLineFunc SrcState ValueState Value
f (SrcState ValueState Variable -> SrcState ValueState Value
forall (r :: * -> *). VariableValue r => SVariable r -> SValue r
valueOf SrcState ValueState Variable
v)
discardFileLine :: SrcState ValueState Value -> SrcState MethodState (Doc, Terminator)
discardFileLine SrcState ValueState Value
f = SrcState MethodState (Doc, Terminator)
-> SrcState MethodState (Doc, Terminator)
forall a. MS a -> MS a
addLimitsImport (SrcState MethodState (Doc, Terminator)
-> SrcState MethodState (Doc, Terminator))
-> SrcState MethodState (Doc, Terminator)
-> SrcState MethodState (Doc, Terminator)
forall a b. (a -> b) -> a -> b
$ Char
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
cppDiscardInput Char
'\n' SrcState ValueState Value
f
getFileInputAll :: SrcState ValueState Value
-> SrcState ValueState Variable
-> SrcState MethodState (Doc, Terminator)
getFileInputAll SrcState ValueState Value
f SrcState ValueState Variable
v = do
CppSrcCode Variable
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
ScopeData
scpData <- ClassName -> MS ScopeData
getVarScope (ClassName -> MS ScopeData) -> ClassName -> MS ScopeData
forall a b. (a -> b) -> a -> b
$ CppSrcCode Variable -> ClassName
forall (r :: * -> *). VariableElim r => r Variable -> ClassName
variableName CppSrcCode Variable
v'
let scp :: CppSrcCode ScopeData
scp = ScopeData -> CppSrcCode ScopeData
forall (r :: * -> *). ScopeSym r => ScopeData -> r ScopeData
convScope ScopeData
scpData
l_line :: ClassName
l_line = ClassName
"nextLine"
var_line :: SrcState ValueState Variable
var_line = ClassName
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable
forall (r :: * -> *).
VariableSym r =>
ClassName -> VS (r TypeData) -> SVariable r
var ClassName
l_line State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
string
v_line :: SrcState ValueState Value
v_line = SrcState ValueState Variable -> SrcState ValueState Value
forall (r :: * -> *). VariableValue r => SVariable r -> SValue r
valueOf SrcState ValueState Variable
var_line
[SrcState MethodState (Doc, Terminator)]
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
StatementSym r smt =>
[MS (r smt)] -> MS (r smt)
multi [SrcState ValueState Variable
-> CppSrcCode ScopeData -> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
DeclStatement r smt =>
SVariable r -> r ScopeData -> MS (r smt)
varDec SrcState ValueState Variable
var_line CppSrcCode ScopeData
scp,
SrcState ValueState Value
-> SrcState MethodState Doc
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
ControlStatement r smt =>
SValue r -> MS (r Doc) -> MS (r smt)
while (SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Value
getLineFunc SrcState ValueState Value
f SrcState ValueState Value
v_line)
(SrcState MethodState (Doc, Terminator) -> SrcState MethodState Doc
forall (r :: * -> *) smt. BodySym r smt => MS (r smt) -> MS (r Doc)
oneLiner (SrcState MethodState (Doc, Terminator)
-> SrcState MethodState Doc)
-> SrcState MethodState (Doc, Terminator)
-> SrcState MethodState Doc
forall a b. (a -> b) -> a -> b
$ SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
List r smt =>
SValue r -> SValue r -> MS (r smt)
listAppend (SrcState ValueState Variable -> SrcState ValueState Value
forall (r :: * -> *). VariableValue r => SVariable r -> SValue r
valueOf SrcState ValueState Variable
v) SrcState ValueState Value
v_line)]
instance StringStatement CppSrcCode (Doc, Terminator) where
stringSplit :: Char
-> SrcState ValueState Variable
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
stringSplit Char
d SrcState ValueState Variable
vnew SrcState ValueState Value
s = do
CppSrcCode Variable
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
ScopeData
scpData <- ClassName -> MS ScopeData
getVarScope (ClassName -> MS ScopeData) -> ClassName -> MS ScopeData
forall a b. (a -> b) -> a -> b
$ CppSrcCode Variable -> ClassName
forall (r :: * -> *). VariableElim r => r Variable -> ClassName
variableName CppSrcCode Variable
vn
let scp :: CppSrcCode ScopeData
scp = ScopeData -> CppSrcCode ScopeData
forall (r :: * -> *). ScopeSym r => ScopeData -> r ScopeData
convScope ScopeData
scpData
l_ss :: ClassName
l_ss = ClassName
"ss"
var_ss :: SrcState ValueState Variable
var_ss = ClassName
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable
forall (r :: * -> *).
VariableSym r =>
ClassName -> VS (r TypeData) -> SVariable r
var ClassName
l_ss (ClassName -> State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). OOTypeSym r => ClassName -> VS (r TypeData)
obj ClassName
stringstream)
v_ss :: SrcState ValueState Value
v_ss = SrcState ValueState Variable -> SrcState ValueState Value
forall (r :: * -> *). VariableValue r => SVariable r -> SValue r
valueOf SrcState ValueState Variable
var_ss
l_word :: ClassName
l_word = ClassName
"word"
var_word :: SrcState ValueState Variable
var_word = ClassName
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable
forall (r :: * -> *).
VariableSym r =>
ClassName -> VS (r TypeData) -> SVariable r
var ClassName
l_word State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
string
v_word :: SrcState ValueState Value
v_word = SrcState ValueState Variable -> SrcState ValueState Value
forall (r :: * -> *). VariableValue r => SVariable r -> SValue r
valueOf SrcState ValueState Variable
var_word
(MethodState -> MethodState) -> StateT MethodState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (ClassName -> MethodState -> MethodState
addLangImport ClassName
sstream) StateT MethodState Identity ()
-> SrcState MethodState (Doc, Terminator)
-> SrcState MethodState (Doc, Terminator)
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
>> [SrcState MethodState (Doc, Terminator)]
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
StatementSym r smt =>
[MS (r smt)] -> MS (r smt)
multi [
SrcState ValueState Value -> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
StatementSym r smt =>
SValue r -> MS (r smt)
valStmt (SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator))
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall a b. (a -> b) -> a -> b
$ SrcState ValueState Variable -> SrcState ValueState Value
forall (r :: * -> *). VariableValue r => SVariable r -> SValue r
valueOf SrcState ValueState Variable
vnew SrcState ValueState Value
-> SrcState ValueState FuncData -> SrcState ValueState Value
forall (r :: * -> *).
OOFunctionSym r =>
SValue r -> VS (r FuncData) -> SValue r
$. SrcState ValueState FuncData
clearFunc,
SrcState ValueState Variable
-> CppSrcCode ScopeData -> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
DeclStatement r smt =>
SVariable r -> r ScopeData -> MS (r smt)
varDec SrcState ValueState Variable
var_ss CppSrcCode ScopeData
scp,
SrcState ValueState Value -> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
StatementSym r smt =>
SValue r -> MS (r smt)
valStmt (SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator))
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall a b. (a -> b) -> a -> b
$ SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Value
strFunc SrcState ValueState Value
v_ss SrcState ValueState Value
s,
SrcState ValueState Variable
-> CppSrcCode ScopeData -> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
DeclStatement r smt =>
SVariable r -> r ScopeData -> MS (r smt)
varDec SrcState ValueState Variable
var_word CppSrcCode ScopeData
scp,
SrcState ValueState Value
-> SrcState MethodState Doc
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
ControlStatement r smt =>
SValue r -> MS (r Doc) -> MS (r smt)
while (SrcState ValueState Value
-> SrcState ValueState Value -> Char -> SrcState ValueState Value
getLine3ArgFunc SrcState ValueState Value
v_ss SrcState ValueState Value
v_word Char
d)
(SrcState MethodState (Doc, Terminator) -> SrcState MethodState Doc
forall (r :: * -> *) smt. BodySym r smt => MS (r smt) -> MS (r Doc)
oneLiner (SrcState MethodState (Doc, Terminator)
-> SrcState MethodState Doc)
-> SrcState MethodState (Doc, Terminator)
-> SrcState MethodState Doc
forall a b. (a -> b) -> a -> b
$ SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
List r smt =>
SValue r -> SValue r -> MS (r smt)
listAppend (SrcState ValueState Variable -> SrcState ValueState Value
forall (r :: * -> *). VariableValue r => SVariable r -> SValue r
valueOf SrcState ValueState Variable
vnew) SrcState ValueState Value
v_word)
]
stringListVals :: [SrcState ValueState Variable]
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
stringListVals = [SrcState ValueState Variable]
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
(AssignStatement r smt, List r smt, Literal r, RenderValue r,
TypeElim r, VariableElim r) =>
[SVariable r] -> SValue r -> MS (r smt)
M.stringListVals
stringListLists :: [SrcState ValueState Variable]
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
stringListLists = [SrcState ValueState Variable]
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
(RenderValue r, SharedStatement r smt, TypeElim r,
VariableElim r) =>
[SVariable r] -> SValue r -> MS (r smt)
M.stringListLists
instance FuncAppStatement CppSrcCode (Doc, Terminator) where
inOutCall :: InOutCall CppSrcCode (Doc, Terminator)
inOutCall = (ClassName
-> State ValueState (CppSrcCode TypeData)
-> [SrcState ValueState Value]
-> SrcState ValueState Value)
-> InOutCall CppSrcCode (Doc, Terminator)
cppInOutCall ClassName
-> State ValueState (CppSrcCode TypeData)
-> [SrcState ValueState Value]
-> SrcState ValueState Value
forall (r :: * -> *). ValueExpression r => PosCall r
funcApp
extInOutCall :: ClassName -> InOutCall CppSrcCode (Doc, Terminator)
extInOutCall ClassName
m = (ClassName
-> State ValueState (CppSrcCode TypeData)
-> [SrcState ValueState Value]
-> SrcState ValueState Value)
-> InOutCall CppSrcCode (Doc, Terminator)
cppInOutCall (ClassName
-> ClassName
-> State ValueState (CppSrcCode TypeData)
-> [SrcState ValueState Value]
-> SrcState ValueState Value
forall (r :: * -> *). ValueExpression r => ClassName -> PosCall r
extFuncApp ClassName
m)
instance OOFuncAppStatement CppSrcCode (Doc, Terminator) where
selfInOutCall :: InOutCall CppSrcCode (Doc, Terminator)
selfInOutCall = (ClassName
-> State ValueState (CppSrcCode TypeData)
-> [SrcState ValueState Value]
-> SrcState ValueState Value)
-> InOutCall CppSrcCode (Doc, Terminator)
cppInOutCall ClassName
-> State ValueState (CppSrcCode TypeData)
-> [SrcState ValueState Value]
-> SrcState ValueState Value
forall (r :: * -> *).
(InternalValueExp r, VariableValue r, SelfSym r) =>
PosCall r
selfMethodCall
instance CommentStatement CppSrcCode (Doc, Terminator) where
comment :: ClassName -> SrcState MethodState (Doc, Terminator)
comment = Doc -> ClassName -> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
RenderStatement r smt =>
Doc -> ClassName -> MS (r smt)
G.comment Doc
commentStart
instance ControlStatement CppSrcCode (Doc, Terminator) where
break :: SrcState MethodState (Doc, Terminator)
break = Doc -> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
RenderStatement r smt =>
Doc -> MS (r smt)
mkStmt Doc
R.break
continue :: SrcState MethodState (Doc, Terminator)
continue = Doc -> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
RenderStatement r smt =>
Doc -> MS (r smt)
mkStmt Doc
R.continue
returnStmt :: SrcState ValueState Value -> SrcState MethodState (Doc, Terminator)
returnStmt = Terminator
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
(RenderStatement r smt, ValueElim r) =>
Terminator -> SValue r -> MS (r smt)
G.returnStmt Terminator
Semi
throw :: ClassName -> SrcState MethodState (Doc, Terminator)
throw = (CppSrcCode Value -> Doc)
-> Terminator
-> ClassName
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
(Literal r, RenderStatement r smt) =>
(r Value -> Doc) -> Terminator -> ClassName -> MS (r smt)
G.throw CppSrcCode Value -> Doc
forall (r :: * -> *). ValueElim r => r Value -> Doc
cppThrowDoc Terminator
Semi
ifCond :: [(SrcState ValueState Value, SrcState MethodState Doc)]
-> SrcState MethodState Doc
-> SrcState MethodState (Doc, Terminator)
ifCond = (Doc -> Doc)
-> Doc
-> OptionalSpace
-> Doc
-> Doc
-> Doc
-> [(SrcState ValueState Value, SrcState MethodState Doc)]
-> SrcState MethodState Doc
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
(BodyElim r, RenderStatement r smt, ValueElim r) =>
(Doc -> Doc)
-> Doc
-> OptionalSpace
-> Doc
-> Doc
-> Doc
-> [(SValue r, MS (r Doc))]
-> MS (r Doc)
-> MS (r smt)
G.ifCond Doc -> Doc
parens Doc
bodyStart OptionalSpace
G.defaultOptSpace Doc
elseIfLabel Doc
bodyEnd Doc
empty
switch :: SrcState ValueState Value
-> [(SrcState ValueState Value, SrcState MethodState Doc)]
-> SrcState MethodState Doc
-> SrcState MethodState (Doc, Terminator)
switch = (Doc -> Doc)
-> SrcState MethodState (Doc, Terminator)
-> SrcState ValueState Value
-> [(SrcState ValueState Value, SrcState MethodState Doc)]
-> SrcState MethodState Doc
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
(BodyElim r, RenderStatement r smt, StatementElim r smt,
ValueElim r) =>
(Doc -> Doc)
-> MS (r smt)
-> SValue r
-> [(SValue r, MS (r Doc))]
-> MS (r Doc)
-> MS (r smt)
C.switch Doc -> Doc
parens SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. ControlStatement r smt => MS (r smt)
break
ifExists :: SrcState ValueState Value
-> SrcState MethodState Doc
-> SrcState MethodState Doc
-> SrcState MethodState (Doc, Terminator)
ifExists SrcState ValueState Value
_ SrcState MethodState Doc
ifBody SrcState MethodState Doc
_ = do
CppSrcCode Doc
ifb <- SrcState MethodState Doc
ifBody
Doc -> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
RenderStatement r smt =>
Doc -> MS (r smt)
mkStmtNoEnd (CppSrcCode Doc -> Doc
forall (r :: * -> *). BodyElim r => r Doc -> Doc
RC.body CppSrcCode Doc
ifb)
for :: SrcState MethodState (Doc, Terminator)
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
-> SrcState MethodState Doc
-> SrcState MethodState (Doc, Terminator)
for = Doc
-> Doc
-> SrcState MethodState (Doc, Terminator)
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
-> SrcState MethodState Doc
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
(BodyElim r, RenderStatement r smt, StatementElim r smt,
ValueElim r) =>
Doc
-> Doc
-> MS (r smt)
-> SValue r
-> MS (r smt)
-> MS (r Doc)
-> MS (r smt)
C.for Doc
bodyStart Doc
bodyEnd
forRange :: SrcState ValueState Variable
-> SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState MethodState Doc
-> SrcState MethodState (Doc, Terminator)
forRange = SrcState ValueState Variable
-> SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState MethodState Doc
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
SharedStatement r smt =>
SVariable r
-> SValue r -> SValue r -> SValue r -> MS (r Doc) -> MS (r smt)
M.forRange
forEach :: SrcState ValueState Variable
-> SrcState ValueState Value
-> SrcState MethodState Doc
-> SrcState MethodState (Doc, Terminator)
forEach = Doc
-> Doc
-> Doc
-> Doc
-> SrcState ValueState Variable
-> SrcState ValueState Value
-> SrcState MethodState Doc
-> SrcState MethodState (Doc, Terminator)
cppForEach Doc
bodyStart Doc
bodyEnd (ClassName -> Doc
text ClassName
cppFor) (ClassName -> Doc
text ClassName
cppIn)
while :: SrcState ValueState Value
-> SrcState MethodState Doc
-> SrcState MethodState (Doc, Terminator)
while = (Doc -> Doc)
-> Doc
-> Doc
-> SrcState ValueState Value
-> SrcState MethodState Doc
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
(BodyElim r, RenderStatement r smt, ValueElim r) =>
(Doc -> Doc) -> Doc -> Doc -> SValue r -> MS (r Doc) -> MS (r smt)
C.while Doc -> Doc
parens Doc
bodyStart Doc
bodyEnd
tryCatch :: SrcState MethodState Doc
-> SrcState MethodState Doc
-> SrcState MethodState (Doc, Terminator)
tryCatch = (CppSrcCode Doc -> CppSrcCode Doc -> Doc)
-> SrcState MethodState Doc
-> SrcState MethodState Doc
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
RenderStatement r smt =>
(r Doc -> r Doc -> Doc) -> MS (r Doc) -> MS (r Doc) -> MS (r smt)
G.tryCatch CppSrcCode Doc -> CppSrcCode Doc -> Doc
forall (r :: * -> *). BodyElim r => r Doc -> r Doc -> Doc
cppTryCatch
assert :: SrcState ValueState Value
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
assert SrcState ValueState Value
condition SrcState ValueState Value
errorMessage = do
SrcState MethodState (Doc, Terminator)
-> SrcState MethodState (Doc, Terminator)
forall a. MS a -> MS a
addCAssertImport (SrcState MethodState (Doc, Terminator)
-> SrcState MethodState (Doc, Terminator))
-> SrcState MethodState (Doc, Terminator)
-> SrcState MethodState (Doc, Terminator)
forall a b. (a -> b) -> a -> b
$ do
CppSrcCode Value
cond <- LensLike'
(Zoomed (StateT ValueState Identity) (CppSrcCode Value))
MethodState
ValueState
-> SrcState ValueState 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 SrcState ValueState Value
condition
CppSrcCode Value
errMsg <- LensLike'
(Zoomed (StateT ValueState Identity) (CppSrcCode Value))
MethodState
ValueState
-> SrcState ValueState 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 SrcState ValueState Value
errorMessage
Doc -> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
RenderStatement r smt =>
Doc -> MS (r smt)
mkStmtNoEnd (CppSrcCode Value -> CppSrcCode Value -> Doc
forall (r :: * -> *). ValueElim r => r Value -> r Value -> Doc
cppAssert CppSrcCode Value
cond CppSrcCode Value
errMsg)
instance ObserverPattern CppSrcCode (Doc, Terminator) where
notifyObservers :: SrcState ValueState FuncData
-> State ValueState (CppSrcCode TypeData)
-> SrcState MethodState (Doc, Terminator)
notifyObservers = SrcState ValueState FuncData
-> State ValueState (CppSrcCode TypeData)
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
OOStatement r smt =>
VS (r FuncData) -> VS (r TypeData) -> MS (r smt)
M.notifyObservers
instance StrategyPattern CppSrcCode (Doc, Terminator) where
runStrategy :: ClassName
-> [(ClassName, SrcState MethodState Doc)]
-> Maybe (SrcState ValueState Value)
-> Maybe (SrcState ValueState Variable)
-> SrcState MethodState Doc
runStrategy = ClassName
-> [(ClassName, SrcState MethodState Doc)]
-> Maybe (SrcState ValueState Value)
-> Maybe (SrcState ValueState Variable)
-> SrcState MethodState Doc
forall (r :: * -> *) smt.
(AssignStatement r smt, BodyElim r, Monad r, RenderStatement r smt,
StatementElim r smt) =>
ClassName
-> [(ClassName, MS (r Doc))]
-> Maybe (SValue r)
-> Maybe (SVariable r)
-> 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 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 where
construct :: ClassName -> SrcState MethodState TypeData
construct = ClassName -> SrcState MethodState TypeData
forall (r :: * -> *). Monad r => ClassName -> MS (r TypeData)
G.construct
instance ParameterSym CppSrcCode where
param :: SrcState ValueState Variable -> SrcState MethodState ParamData
param = (CppSrcCode Variable -> Doc)
-> SrcState ValueState Variable -> SrcState MethodState ParamData
forall (r :: * -> *).
(RenderParam r, VariableElim r) =>
(r Variable -> Doc) -> SVariable r -> MS (r ParamData)
G.param CppSrcCode Variable -> Doc
forall (r :: * -> *).
(InternalVarElim r, UnRepr r TypeData, VariableElim r) =>
r Variable -> Doc
renderParam
pointerParam :: SrcState ValueState Variable -> SrcState MethodState ParamData
pointerParam = (CppSrcCode Variable -> Doc)
-> SrcState ValueState Variable -> SrcState MethodState ParamData
forall (r :: * -> *).
(RenderParam r, VariableElim r) =>
(r Variable -> Doc) -> SVariable r -> MS (r ParamData)
G.param CppSrcCode Variable -> Doc
forall (r :: * -> *).
(InternalVarElim r, UnRepr r TypeData, VariableElim r) =>
r Variable -> Doc
cppPointerParamDoc
instance RenderParam CppSrcCode where
paramFromData :: SrcState ValueState Variable
-> Doc -> SrcState MethodState ParamData
paramFromData SrcState ValueState Variable
v' Doc
d = do
CppSrcCode Variable
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'
CppSrcCode ParamData -> SrcState MethodState ParamData
forall a s. a -> State s a
toState (CppSrcCode ParamData -> SrcState MethodState ParamData)
-> CppSrcCode ParamData -> SrcState MethodState ParamData
forall a b. (a -> b) -> a -> b
$ (Variable -> Doc -> ParamData)
-> CppSrcCode Variable -> CppSrcCode Doc -> CppSrcCode ParamData
forall (r :: * -> *) a b c.
Applicative r =>
(a -> b -> c) -> r a -> r b -> r c
on2CodeValues Variable -> Doc -> ParamData
pd CppSrcCode Variable
v (Doc -> CppSrcCode Doc
forall (r :: * -> *) a. Monad r => a -> r a
toCode Doc
d)
instance ParamElim CppSrcCode where
parameterName :: CppSrcCode ParamData -> ClassName
parameterName = CppSrcCode Variable -> ClassName
forall (r :: * -> *). VariableElim r => r Variable -> ClassName
variableName (CppSrcCode Variable -> ClassName)
-> (CppSrcCode ParamData -> CppSrcCode Variable)
-> CppSrcCode ParamData
-> ClassName
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ParamData -> Variable)
-> CppSrcCode ParamData -> CppSrcCode Variable
forall (r :: * -> *) a b. Functor r => (a -> b) -> r a -> r b
onCodeValue ParamData -> Variable
paramVar
parameterType :: CppSrcCode ParamData -> CppSrcCode TypeData
parameterType = CppSrcCode Variable -> CppSrcCode TypeData
forall (r :: * -> *). VariableElim r => r Variable -> r TypeData
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 (r :: * -> *) a b. Functor r => (a -> b) -> r a -> r 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 (Doc, VisibilityTag) (Doc, Terminator) MethodData where
docMain :: SrcState MethodState Doc -> SrcState MethodState MethodData
docMain SrcState MethodState Doc
b = SrcState MethodState Doc
-> SrcState MethodState MethodData
-> SrcState MethodState MethodData
forall (r :: * -> *) md.
RenderMethod r md =>
MS (r Doc) -> MS (r md) -> MS (r md)
commentedFunc (State MethodState [ClassName] -> SrcState MethodState Doc
forall a. State a [ClassName] -> State a (CppSrcCode Doc)
forall (r :: * -> *) a.
BlockCommentSym r =>
State a [ClassName] -> State a (r Doc)
docComment (State MethodState [ClassName] -> SrcState MethodState Doc)
-> State MethodState [ClassName] -> SrcState MethodState Doc
forall a b. (a -> b) -> a -> b
$ [ClassName] -> State MethodState [ClassName]
forall a s. a -> State s a
toState ([ClassName] -> State MethodState [ClassName])
-> [ClassName] -> State MethodState [ClassName]
forall a b. (a -> b) -> a -> b
$ FuncDocRenderer
functionDox ClassName
mainDesc
[(ClassName
argc, ClassName
argcDesc), (ClassName
argv, ClassName
argvDesc)] [ClassName
mainReturnDesc]) (SrcState MethodState Doc -> SrcState MethodState MethodData
forall (r :: * -> *) vis smt md.
MethodSym r vis smt md =>
MS (r Doc) -> MS (r md)
mainFunction SrcState MethodState Doc
b)
function :: ClassName
-> CppSrcCode (Doc, VisibilityTag)
-> State ValueState (CppSrcCode TypeData)
-> [SrcState MethodState ParamData]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData
function = ClassName
-> CppSrcCode (Doc, VisibilityTag)
-> State ValueState (CppSrcCode TypeData)
-> [SrcState MethodState ParamData]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData
forall (r :: * -> *) att vis md.
(AttachmentSym r att, OORenderMethod r vis md att) =>
ClassName
-> r vis
-> VS (r TypeData)
-> [MS (r ParamData)]
-> MS (r Doc)
-> MS (r md)
G.function
mainFunction :: SrcState MethodState Doc -> SrcState MethodState MethodData
mainFunction SrcState MethodState Doc
b = Bool
-> ClassName
-> CppSrcCode (Doc, VisibilityTag)
-> CppSrcCode AttachmentData
-> SrcState MethodState TypeData
-> [SrcState MethodState ParamData]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData
forall (r :: * -> *) vis md att.
OORenderMethod r vis md att =>
Bool
-> ClassName
-> r vis
-> r att
-> MSMthdType r
-> [MS (r ParamData)]
-> MS (r Doc)
-> MS (r md)
intFunc Bool
True ClassName
mainFunc CppSrcCode (Doc, VisibilityTag)
forall (r :: * -> *) vis. VisibilitySym r vis => r vis
public CppSrcCode AttachmentData
forall (r :: * -> *) att. AttachmentSym r att => r att
classLevel (State ValueState (CppSrcCode TypeData)
-> SrcState MethodState TypeData
forall (r :: * -> *).
MethodTypeSym r =>
VS (r TypeData) -> MSMthdType r
mType State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
int)
[SrcState ValueState Variable -> SrcState MethodState ParamData
forall (r :: * -> *).
ParameterSym r =>
SVariable r -> MS (r ParamData)
param SrcState ValueState Variable
argcVar, SrcState ValueState Variable -> SrcState MethodState ParamData
forall (r :: * -> *).
ParameterSym r =>
SVariable r -> MS (r ParamData)
param SrcState ValueState Variable
argvVar]
((CppSrcCode Doc -> CppSrcCode (Doc, Terminator) -> CppSrcCode Doc)
-> SrcState MethodState Doc
-> SrcState MethodState (Doc, Terminator)
-> SrcState MethodState Doc
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues ((Doc -> (Doc, Terminator) -> Doc)
-> CppSrcCode Doc -> CppSrcCode (Doc, Terminator) -> CppSrcCode Doc
forall (r :: * -> *) a b c.
Applicative r =>
(a -> b -> c) -> r a -> r b -> r c
on2CodeValues Doc -> (Doc, Terminator) -> Doc
appendToBody) SrcState MethodState Doc
b (SrcState ValueState Value -> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
ControlStatement r smt =>
SValue r -> MS (r smt)
returnStmt (SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator))
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall a b. (a -> b) -> a -> b
$ Integer -> SrcState ValueState Value
forall (r :: * -> *). Literal r => Integer -> SValue r
litInt Integer
0))
where argcVar :: SrcState ValueState Variable
argcVar = ClassName
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Variable
forall (r :: * -> *).
VariableSym r =>
ClassName -> VS (r TypeData) -> SVariable r
var ClassName
argc State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
int
argvVar :: SrcState ValueState Variable
argvVar = do
CppSrcCode TypeData
t <- CodeType
-> ClassName -> Doc -> State ValueState (CppSrcCode TypeData)
forall (r :: * -> *).
Monad r =>
CodeType -> ClassName -> Doc -> VS (r TypeData)
typeFromData (CodeType -> CodeType
List CodeType
String)
(ClassName
constDec ClassName -> ClassName -> ClassName
forall a. [a] -> [a] -> [a]
++ ClassName
" " ClassName -> ClassName -> ClassName
forall a. [a] -> [a] -> [a]
++ ClassName
C.charRender) (Doc
constDec' Doc -> Doc -> Doc
<+> ClassName -> Doc
text
ClassName
C.charRender)
ClassName
-> CppSrcCode TypeData -> Doc -> SrcState ValueState Variable
forall (r :: * -> *).
RenderVariable r =>
ClassName -> r TypeData -> Doc -> SVariable r
mkVar ClassName
argv CppSrcCode TypeData
t (Doc
cppDeref Doc -> Doc -> Doc
<> ClassName -> Doc
text ClassName
argv Doc -> Doc -> Doc
<> Doc
array')
docFunc :: ClassName
-> [ClassName]
-> Maybe ClassName
-> SrcState MethodState MethodData
-> SrcState MethodState MethodData
docFunc = ClassName
-> [ClassName]
-> Maybe ClassName
-> SrcState MethodState MethodData
-> SrcState MethodState MethodData
forall (r :: * -> *) md.
RenderMethod r md =>
ClassName
-> [ClassName] -> Maybe ClassName -> MS (r md) -> MS (r md)
CP.doxFunc
inOutFunc :: ClassName
-> CppSrcCode (Doc, VisibilityTag)
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData
inOutFunc ClassName
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 md.
(State ValueState (CppSrcCode TypeData)
-> [SrcState MethodState ParamData]
-> SrcState MethodState Doc
-> MS (CppSrcCode md))
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> SrcState MethodState Doc
-> MS (CppSrcCode md)
cppsInOut (ClassName
-> CppSrcCode (Doc, VisibilityTag)
-> State ValueState (CppSrcCode TypeData)
-> [SrcState MethodState ParamData]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData
forall (r :: * -> *) vis smt md.
MethodSym r vis smt md =>
ClassName
-> r vis
-> VS (r TypeData)
-> [MS (r ParamData)]
-> MS (r Doc)
-> MS (r md)
function ClassName
n CppSrcCode (Doc, VisibilityTag)
s)
docInOutFunc :: ClassName
-> CppSrcCode (Doc, VisibilityTag)
-> DocInOutFunc CppSrcCode MethodData
docInOutFunc ClassName
n CppSrcCode (Doc, VisibilityTag)
s = ([SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData)
-> DocInOutFunc CppSrcCode MethodData
forall (r :: * -> *) md.
RenderMethod r md =>
([SVariable r]
-> [SVariable r] -> [SVariable r] -> MS (r Doc) -> MS (r md))
-> ClassName
-> [(ClassName, SVariable r)]
-> [(ClassName, SVariable r)]
-> [(ClassName, SVariable r)]
-> MS (r Doc)
-> MS (r md)
CP.docInOutFunc (ClassName
-> CppSrcCode (Doc, VisibilityTag)
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData
forall (r :: * -> *) vis smt md.
MethodSym r vis smt md =>
ClassName -> r vis -> InOutFunc r md
inOutFunc ClassName
n CppSrcCode (Doc, VisibilityTag)
s)
instance OOMethodSym CppSrcCode (Doc, VisibilityTag) (Doc, Terminator) MethodData AttachmentData where
method :: ClassName
-> CppSrcCode (Doc, VisibilityTag)
-> CppSrcCode AttachmentData
-> State ValueState (CppSrcCode TypeData)
-> [SrcState MethodState ParamData]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData
method = ClassName
-> CppSrcCode (Doc, VisibilityTag)
-> CppSrcCode AttachmentData
-> State ValueState (CppSrcCode TypeData)
-> [SrcState MethodState ParamData]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData
forall (r :: * -> *) vis md att.
OORenderMethod r vis md att =>
ClassName
-> r vis
-> r att
-> VS (r TypeData)
-> [MS (r ParamData)]
-> MS (r Doc)
-> MS (r md)
G.method
getMethod :: SrcState ValueState Variable -> SrcState MethodState MethodData
getMethod = SrcState ValueState Variable -> SrcState MethodState MethodData
forall (r :: * -> *) vis smt md svr att.
OORenderSym r vis smt md svr att =>
SVariable r -> MS (r md)
G.getMethod
setMethod :: SrcState ValueState Variable -> SrcState MethodState MethodData
setMethod = SrcState ValueState Variable -> SrcState MethodState MethodData
forall (r :: * -> *) vis smt md svr att.
OORenderSym r vis smt md svr att =>
SVariable r -> MS (r md)
G.setMethod
constructor :: [SrcState MethodState ParamData]
-> [(SrcState ValueState Variable, SrcState ValueState Value)]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData
constructor = [SrcState MethodState ParamData]
-> [(SrcState ValueState Variable, SrcState ValueState Value)]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData
cppConstructor
inOutMethod :: ClassName
-> CppSrcCode (Doc, VisibilityTag)
-> CppSrcCode AttachmentData
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData
inOutMethod ClassName
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 md.
(State ValueState (CppSrcCode TypeData)
-> [SrcState MethodState ParamData]
-> SrcState MethodState Doc
-> MS (CppSrcCode md))
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> SrcState MethodState Doc
-> MS (CppSrcCode md)
cppsInOut (ClassName
-> CppSrcCode (Doc, VisibilityTag)
-> CppSrcCode AttachmentData
-> State ValueState (CppSrcCode TypeData)
-> [SrcState MethodState ParamData]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData
forall (r :: * -> *) vis smt md att.
OOMethodSym r vis smt md att =>
ClassName
-> r vis
-> r att
-> VS (r TypeData)
-> [MS (r ParamData)]
-> MS (r Doc)
-> MS (r md)
method ClassName
n CppSrcCode (Doc, VisibilityTag)
s CppSrcCode AttachmentData
p)
docInOutMethod :: ClassName
-> CppSrcCode (Doc, VisibilityTag)
-> CppSrcCode AttachmentData
-> DocInOutFunc CppSrcCode MethodData
docInOutMethod ClassName
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
forall (r :: * -> *) md.
RenderMethod r md =>
([SVariable r]
-> [SVariable r] -> [SVariable r] -> MS (r Doc) -> MS (r md))
-> ClassName
-> [(ClassName, SVariable r)]
-> [(ClassName, SVariable r)]
-> [(ClassName, SVariable r)]
-> MS (r Doc)
-> MS (r md)
CP.docInOutFunc (ClassName
-> CppSrcCode (Doc, VisibilityTag)
-> CppSrcCode AttachmentData
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData
forall (r :: * -> *) vis smt md att.
OOMethodSym r vis smt md att =>
ClassName -> r vis -> r att -> InOutFunc r md
inOutMethod ClassName
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 (Doc, VisibilityTag) MethodData AttachmentData where
intMethod :: Bool
-> ClassName
-> CppSrcCode (Doc, VisibilityTag)
-> CppSrcCode AttachmentData
-> SrcState MethodState TypeData
-> [SrcState MethodState ParamData]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData
intMethod Bool
m ClassName
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)
ClassName
c <- StateT MethodState Identity ClassName
getClassName
(CppSrcCode TypeData
-> [CppSrcCode ParamData] -> CppSrcCode Doc -> Doc)
-> CppSrcCode (Doc, VisibilityTag)
-> SrcState MethodState TypeData
-> [SrcState MethodState ParamData]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData
cppsIntFunc ([Doc]
-> ClassName
-> ClassName
-> CppSrcCode TypeData
-> [CppSrcCode ParamData]
-> CppSrcCode Doc
-> Doc
cppsMethod [] ClassName
n ClassName
c) CppSrcCode (Doc, VisibilityTag)
s SrcState MethodState TypeData
t [SrcState MethodState ParamData]
ps SrcState MethodState Doc
b
intFunc :: Bool
-> ClassName
-> CppSrcCode (Doc, VisibilityTag)
-> CppSrcCode AttachmentData
-> SrcState MethodState TypeData
-> [SrcState MethodState ParamData]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData
intFunc Bool
m ClassName
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 (ClassName
-> CppSrcCode TypeData
-> [CppSrcCode ParamData]
-> CppSrcCode Doc
-> Doc
cppsFunction ClassName
n) CppSrcCode (Doc, VisibilityTag)
s SrcState MethodState TypeData
t [SrcState MethodState ParamData]
ps SrcState MethodState Doc
b
destructor :: forall svr.
[CSStateVar CppSrcCode svr] -> SrcState MethodState MethodData
destructor = ClassName
-> [CSStateVar CppSrcCode svr] -> SrcState MethodState MethodData
forall a. HasCallStack => ClassName -> a
error (ClassName
-> [CSStateVar CppSrcCode svr] -> SrcState MethodState MethodData)
-> ClassName
-> [CSStateVar CppSrcCode svr]
-> SrcState MethodState MethodData
forall a b. (a -> b) -> a -> b
$ ClassName -> ClassName
CP.destructorError ClassName
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 (Doc, VisibilityTag) StateVarData AttachmentData 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 (m :: * -> *) a. Monad m => a -> m a
return (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 (m :: * -> *) a. Monad m => a -> m a
return (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
-> SrcState ValueState Value
-> SrcState ClassState StateVarData
stateVarDef = Doc
-> CppSrcCode (Doc, VisibilityTag)
-> CppSrcCode AttachmentData
-> SrcState ValueState Variable
-> SrcState ValueState Value
-> SrcState ClassState StateVarData
cppsStateVarDef Doc
empty
constVar :: CppSrcCode (Doc, VisibilityTag)
-> SrcState ValueState Variable
-> SrcState ValueState Value
-> SrcState ClassState StateVarData
constVar CppSrcCode (Doc, VisibilityTag)
s = Doc
-> CppSrcCode (Doc, VisibilityTag)
-> CppSrcCode AttachmentData
-> SrcState ValueState Variable
-> SrcState ValueState Value
-> SrcState ClassState StateVarData
cppsStateVarDef Doc
constDec' CppSrcCode (Doc, VisibilityTag)
s CppSrcCode AttachmentData
forall (r :: * -> *) att. AttachmentSym r att => r att
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 (Doc, VisibilityTag) (Doc, Terminator) MethodData StateVarData AttachmentData where
buildClass :: Maybe ClassName
-> [SrcState ClassState StateVarData]
-> [SrcState MethodState MethodData]
-> [SrcState MethodState MethodData]
-> SrcState ClassState Doc
buildClass = Maybe ClassName
-> [SrcState ClassState StateVarData]
-> [SrcState MethodState MethodData]
-> [SrcState MethodState MethodData]
-> SrcState ClassState Doc
forall (r :: * -> *) vis md svr.
(RenderClass r vis md svr, VisibilitySym r vis) =>
Maybe ClassName
-> [CSStateVar r svr] -> [MS (r md)] -> [MS (r md)] -> CS (r Doc)
G.buildClass
extraClass :: ClassName
-> Maybe ClassName
-> [SrcState ClassState StateVarData]
-> [SrcState MethodState MethodData]
-> [SrcState MethodState MethodData]
-> SrcState ClassState Doc
extraClass = ClassName
-> Maybe ClassName
-> [SrcState ClassState StateVarData]
-> [SrcState MethodState MethodData]
-> [SrcState MethodState MethodData]
-> SrcState ClassState Doc
forall (r :: * -> *) vis md svr.
(RenderClass r vis md svr, VisibilitySym r vis) =>
ClassName
-> Maybe ClassName
-> [CSStateVar r svr]
-> [MS (r md)]
-> [MS (r md)]
-> CS (r Doc)
CP.extraClass
implementingClass :: ClassName
-> [ClassName]
-> [SrcState ClassState StateVarData]
-> [SrcState MethodState MethodData]
-> [SrcState MethodState MethodData]
-> SrcState ClassState Doc
implementingClass = ClassName
-> [ClassName]
-> [SrcState ClassState StateVarData]
-> [SrcState MethodState MethodData]
-> [SrcState MethodState MethodData]
-> SrcState ClassState Doc
forall (r :: * -> *) vis md svr.
(RenderClass r vis md svr, VisibilitySym r vis) =>
ClassName
-> [ClassName]
-> [CSStateVar r svr]
-> [MS (r md)]
-> [MS (r md)]
-> CS (r Doc)
G.implementingClass
docClass :: ClassName -> SrcState ClassState Doc -> SrcState ClassState Doc
docClass = ClassName -> SrcState ClassState Doc -> SrcState ClassState Doc
forall (r :: * -> *) vis md svr.
RenderClass r vis md svr =>
ClassName -> CS (r Doc) -> CS (r Doc)
CP.doxClass
instance RenderClass CppSrcCode (Doc, VisibilityTag) MethodData StateVarData where
intClass :: ClassName
-> CppSrcCode (Doc, VisibilityTag)
-> CppSrcCode Doc
-> [SrcState ClassState StateVarData]
-> [SrcState MethodState MethodData]
-> [SrcState MethodState MethodData]
-> SrcState ClassState Doc
intClass ClassName
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 (ClassName -> ClassState -> ClassState
setClassName ClassName
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 ((SrcState MethodState MethodData
-> State ClassState (CppSrcCode MethodData))
-> [SrcState MethodState MethodData]
-> [State ClassState (CppSrcCode MethodData)]
forall a b. (a -> b) -> [a] -> [b]
map (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 a b. (a -> b) -> a -> b
$ [SrcState MethodState MethodData]
cs [SrcState MethodState MethodData]
-> [SrcState MethodState MethodData]
-> [SrcState MethodState MethodData]
forall a. [a] -> [a] -> [a]
++ [SrcState MethodState MethodData]
fs)
inherit :: Maybe ClassName -> CppSrcCode Doc
inherit Maybe ClassName
n = ((Doc, VisibilityTag) -> Doc)
-> CppSrcCode (Doc, VisibilityTag) -> CppSrcCode Doc
forall (r :: * -> *) a b. Functor r => (a -> b) -> r a -> r b
onCodeValue (Maybe ClassName -> Doc -> Doc
cppInherit Maybe ClassName
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 (r :: * -> *) vis. VisibilitySym r vis => r vis
public
implements :: [ClassName] -> CppSrcCode Doc
implements [ClassName]
is = ((Doc, VisibilityTag) -> Doc)
-> CppSrcCode (Doc, VisibilityTag) -> CppSrcCode Doc
forall (r :: * -> *) a b. Functor r => (a -> b) -> r a -> r b
onCodeValue ((\Doc
p -> Doc
colon Doc -> Doc -> Doc
<+> [Doc] -> Doc
hcat ((ClassName -> Doc) -> [ClassName] -> [Doc]
forall a b. (a -> b) -> [a] -> [b]
map ((Doc
p <+>) (Doc -> Doc) -> (ClassName -> Doc) -> ClassName -> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ClassName -> Doc
text) [ClassName]
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 (r :: * -> *) vis. 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 where
class' :: CppSrcCode Doc -> Doc
class' = CppSrcCode Doc -> Doc
forall a. CppSrcCode a -> a
unCPPSC
instance ModuleSym CppSrcCode (Doc, VisibilityTag) (Doc, Terminator) MethodData StateVarData AttachmentData where
buildModule :: ClassName
-> [ClassName]
-> [SrcState MethodState MethodData]
-> [SrcState ClassState Doc]
-> SrcState FileState Module
buildModule ClassName
n [ClassName]
is [SrcState MethodState MethodData]
ms [SrcState ClassState Doc]
cs = ClassName
-> FS Doc
-> FS Doc
-> FS Doc
-> [SrcState MethodState MethodData]
-> [SrcState ClassState Doc]
-> SrcState FileState Module
forall (r :: * -> *) md.
(ClassElim r, MethodElim r md, RenderMod r) =>
ClassName
-> FS Doc
-> FS Doc
-> FS Doc
-> [MS (r md)]
-> [CS (r Doc)]
-> FS (r Module)
CP.buildModule ClassName
n (do
[ClassName]
ds <- FS [ClassName]
getDefines
[ClassName]
lis <- FS [ClassName]
getLangImports
[ClassName]
libis <- FS [ClassName]
getLibImports
[ClassName]
mis <- FS [ClassName]
getModuleImports
[ClassName]
us <- FS [ClassName]
getUsing
Bool
mn <- State FileState Bool
getCurrMain
Doc -> FS Doc
forall a. a -> StateT FileState Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Doc -> FS Doc) -> Doc -> FS Doc
forall a b. (a -> b) -> a -> b
$ [Doc] -> Doc
vibcat [
if Bool
mn Bool -> Bool -> Bool
&& [SrcState MethodState MethodData] -> Int
forall a. [a] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length [SrcState MethodState MethodData]
ms Int -> Int -> Int
forall a. Num a => a -> a -> a
+ [SrcState ClassState Doc] -> Int
forall a. [a] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length [SrcState ClassState Doc]
cs Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
1 then Doc
empty else CppSrcCode Doc -> Doc
forall (r :: * -> *). UnRepr r Doc => r Doc -> Doc
RC.import' (CppSrcCode Doc -> Doc) -> CppSrcCode Doc -> Doc
forall a b. (a -> b) -> a -> b
$ ClassName -> CppSrcCode Doc
mi ClassName
n,
[Doc] -> Doc
vcat ((ClassName -> Doc) -> [ClassName] -> [Doc]
forall a b. (a -> b) -> [a] -> [b]
map ((Doc
define <+>) (Doc -> Doc) -> (ClassName -> Doc) -> ClassName -> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ClassName -> Doc
text) [ClassName]
ds),
[Doc] -> Doc
vcat ((ClassName -> Doc) -> [ClassName] -> [Doc]
forall a b. (a -> b) -> [a] -> [b]
map (CppSrcCode Doc -> Doc
forall (r :: * -> *). UnRepr r Doc => r Doc -> Doc
RC.import' (CppSrcCode Doc -> Doc)
-> (ClassName -> CppSrcCode Doc) -> ClassName -> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ClassName -> CppSrcCode Doc
li) [ClassName]
lis),
[Doc] -> Doc
vcat ((ClassName -> Doc) -> [ClassName] -> [Doc]
forall a b. (a -> b) -> [a] -> [b]
map (CppSrcCode Doc -> Doc
forall (r :: * -> *). UnRepr r Doc => r Doc -> Doc
RC.import' (CppSrcCode Doc -> Doc)
-> (ClassName -> CppSrcCode Doc) -> ClassName -> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ClassName -> CppSrcCode Doc
mi) ([ClassName] -> [ClassName]
forall a. Ord a => [a] -> [a]
sort ([ClassName]
is [ClassName] -> [ClassName] -> [ClassName]
forall a. [a] -> [a] -> [a]
++ [ClassName]
libis) [ClassName] -> [ClassName] -> [ClassName]
forall a. [a] -> [a] -> [a]
++ [ClassName]
mis)),
[Doc] -> Doc
vcat ((ClassName -> Doc) -> [ClassName] -> [Doc]
forall a b. (a -> b) -> [a] -> [b]
map (ClassName -> Maybe ClassName -> Doc
usingNameSpace ClassName
std (Maybe ClassName -> Doc)
-> (ClassName -> Maybe ClassName) -> ClassName -> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ClassName -> Maybe ClassName
forall a. a -> Maybe a
Just) [ClassName]
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 :: ClassName -> CppSrcCode Doc
mi = ClassName -> CppSrcCode Doc
forall (r :: * -> *). ImportSym r => ClassName -> r Doc
modImport
li :: ClassName -> CppSrcCode Doc
li = ClassName -> CppSrcCode Doc
forall (r :: * -> *). ImportSym r => ClassName -> r Doc
langImport
instance RenderMod CppSrcCode where
modFromData :: ClassName -> FS Doc -> SrcState FileState Module
modFromData ClassName
n = ClassName
-> (Doc -> CppSrcCode Module)
-> FS Doc
-> SrcState FileState Module
forall (r :: * -> *).
ClassName -> (Doc -> r Module) -> FS Doc -> FS (r Module)
G.modFromData ClassName
n (Module -> CppSrcCode Module
forall (r :: * -> *) a. Monad r => a -> r a
toCode (Module -> CppSrcCode Module)
-> (Doc -> Module) -> Doc -> CppSrcCode Module
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ClassName -> Doc -> Module
md ClassName
n)
updateModuleDoc :: (Doc -> Doc) -> CppSrcCode Module -> CppSrcCode Module
updateModuleDoc Doc -> Doc
f = (Module -> Module) -> CppSrcCode Module -> CppSrcCode Module
forall (r :: * -> *) a b. Functor r => (a -> b) -> r a -> r b
onCodeValue ((Doc -> Doc) -> Module -> Module
updateMod Doc -> Doc
f)
instance ModuleElim CppSrcCode where
module' :: CppSrcCode Module -> Doc
module' = Module -> Doc
modDoc (Module -> Doc)
-> (CppSrcCode Module -> Module) -> CppSrcCode Module -> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppSrcCode Module -> Module
forall a. CppSrcCode a -> a
unCPPSC
instance BlockCommentSym CppSrcCode where
blockComment :: [ClassName] -> CppSrcCode Doc
blockComment [ClassName]
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
$ [ClassName] -> Doc -> Doc -> Doc
R.blockCmt [ClassName]
lns Doc
blockCmtStart Doc
blockCmtEnd
docComment :: forall a. State a [ClassName] -> State a (CppSrcCode Doc)
docComment = ([ClassName] -> CppSrcCode Doc)
-> State a [ClassName] -> State a (CppSrcCode Doc)
forall a b s. (a -> b) -> State s a -> State s b
onStateValue (\[ClassName]
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
$ [ClassName] -> Doc -> Doc -> Doc
R.docCmt [ClassName]
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 (Doc, VisibilityTag) (Doc, Terminator) MethodData
instance OORenderSym CppHdrCode (Doc, VisibilityTag) (Doc, Terminator) MethodData StateVarData AttachmentData
instance SharedStatement CppHdrCode (Doc, Terminator) where
instance OOStatement CppHdrCode (Doc, Terminator) where
instance UnRepr CppHdrCode contents where
unRepr :: CppHdrCode contents -> contents
unRepr = CppHdrCode contents -> contents
forall a. CppHdrCode a -> a
unCPPHC
instance FileSym CppHdrCode (Doc, VisibilityTag) (Doc, Terminator) MethodData StateVarData AttachmentData where
fileDoc :: HdrState FileState Module -> HdrState FileState File
fileDoc HdrState FileState Module
m = do
(FileState -> FileState) -> StateT FileState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (FileType -> FileState -> FileState
setFileType FileType
Header)
ClassName
-> (CppHdrCode Module -> CppHdrCode Doc)
-> CppHdrCode Doc
-> HdrState FileState Module
-> HdrState FileState File
forall (r :: * -> *).
(BlockElim r, RenderMod r, RenderFile r) =>
ClassName
-> (r Module -> r Doc) -> r Doc -> FS (r Module) -> FS (r File)
G.fileDoc ClassName
cppHdrExt CppHdrCode Module -> CppHdrCode Doc
forall (r :: * -> *). RenderFile r => r Module -> r Doc
top CppHdrCode Doc
forall (r :: * -> *). RenderFile r => r Doc
bottom HdrState FileState Module
m
docMod :: ClassName
-> ClassName
-> [ClassName]
-> ClassName
-> HdrState FileState File
-> HdrState FileState File
docMod = ClassName
-> ClassName
-> ClassName
-> [ClassName]
-> ClassName
-> HdrState FileState File
-> HdrState FileState File
forall (r :: * -> *).
RenderFile r =>
ClassName
-> ClassName
-> ClassName
-> [ClassName]
-> ClassName
-> FS (r File)
-> FS (r File)
CP.doxMod ClassName
cppHdrExt
instance RenderFile CppHdrCode where
top :: CppHdrCode Module -> CppHdrCode Doc
top = (Module -> Doc) -> CppHdrCode Module -> CppHdrCode Doc
forall (r :: * -> *) a b. Functor r => (a -> b) -> r a -> r b
onCodeValue Module -> Doc
cpphtop
bottom :: CppHdrCode Doc
bottom = Doc -> CppHdrCode Doc
forall (r :: * -> *) a. Monad r => a -> r a
toCode Doc
endif
commentedMod :: HdrState FileState File
-> HdrState FileState Doc -> HdrState FileState File
commentedMod = (CppHdrCode File -> CppHdrCode Doc -> CppHdrCode File)
-> HdrState FileState File
-> HdrState FileState Doc
-> HdrState FileState File
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues (\CppHdrCode File
m CppHdrCode Doc
cmt -> if Doc -> Bool
isEmpty (CppHdrCode Module -> Doc
forall (r :: * -> *). ModuleElim r => r Module -> Doc
RC.module' (CppHdrCode Module -> Doc) -> CppHdrCode Module -> Doc
forall a b. (a -> b) -> a -> b
$
(File -> Module) -> CppHdrCode File -> CppHdrCode Module
forall (r :: * -> *) a b. Functor r => (a -> b) -> r a -> r b
onCodeValue File -> Module
fileMod CppHdrCode File
m) then CppHdrCode File
m else (File -> Doc -> File)
-> CppHdrCode File -> CppHdrCode Doc -> CppHdrCode File
forall (r :: * -> *) a b c.
Applicative r =>
(a -> b -> c) -> r a -> r b -> r c
on2CodeValues File -> Doc -> File
R.commentedMod CppHdrCode File
m CppHdrCode Doc
cmt)
fileFromData :: ClassName -> HdrState FileState Module -> HdrState FileState File
fileFromData = (ClassName -> CppHdrCode Module -> CppHdrCode File)
-> ClassName
-> HdrState FileState Module
-> HdrState FileState File
forall (r :: * -> *).
ModuleElim r =>
(ClassName -> r Module -> r File)
-> ClassName -> FS (r Module) -> FS (r File)
G.fileFromData ((Module -> File) -> CppHdrCode Module -> CppHdrCode File
forall (r :: * -> *) a b. Functor r => (a -> b) -> r a -> r b
onCodeValue ((Module -> File) -> CppHdrCode Module -> CppHdrCode File)
-> (ClassName -> Module -> File)
-> ClassName
-> CppHdrCode Module
-> CppHdrCode File
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ClassName -> Module -> File
fileD)
instance ImportSym CppHdrCode where
langImport :: ClassName -> CppHdrCode Doc
langImport ClassName
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 (ClassName -> Doc
text ClassName
n)
modImport :: ClassName -> CppHdrCode Doc
modImport ClassName
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
<+> ClassName -> Doc
doubleQuotedText (ClassName -> ClassName -> ClassName
addExt ClassName
cppHdrExt ClassName
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 (Doc, Terminator) 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 :: ClassName -> HdrState MethodState Doc -> HdrState MethodState Doc
addComments ClassName
_ 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 where
multiBody :: [HdrState MethodState Doc] -> HdrState MethodState Doc
multiBody = [HdrState MethodState Doc] -> HdrState MethodState Doc
forall (r :: * -> *).
(BodyElim r, Monad r) =>
[MS (r Doc)] -> MS (r Doc)
G.multiBody
instance BodyElim CppHdrCode where
body :: CppHdrCode Doc -> Doc
body = CppHdrCode Doc -> Doc
forall a. CppHdrCode a -> a
unCPPHC
instance BlockSym CppHdrCode (Doc, Terminator) where
block :: [HdrState MethodState (Doc, Terminator)]
-> HdrState MethodState Doc
block [HdrState MethodState (Doc, Terminator)]
_ = 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 where
multiBlock :: [HdrState MethodState Doc] -> HdrState MethodState Doc
multiBlock = [HdrState MethodState Doc] -> HdrState MethodState Doc
forall (r :: * -> *).
(BlockElim r, Monad r) =>
[MS (r Doc)] -> MS (r Doc)
G.multiBlock
instance BlockElim CppHdrCode where
block :: CppHdrCode Doc -> Doc
block = CppHdrCode Doc -> Doc
forall a. CppHdrCode a -> a
unCPPHC
instance TypeSym CppHdrCode 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 (ClassName -> ValueState -> ValueState
addHeaderUsing ClassName
cppString (ValueState -> ValueState)
-> (ValueState -> ValueState) -> ValueState -> ValueState
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ClassName -> ValueState -> ValueState
addHeaderLangImport ClassName
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 (ClassName -> ValueState -> ValueState
addHeaderUsing ClassName
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 (ClassName -> ValueState -> ValueState
addHeaderUsing ClassName
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, 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 (ClassName -> ValueState -> ValueState
addHeaderUsing ClassName
vector (ValueState -> ValueState)
-> (ValueState -> ValueState) -> ValueState -> ValueState
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ClassName -> ValueState -> ValueState
addHeaderLangImport ClassName
vector)
ClassName
-> State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData)
forall (r :: * -> *).
(Monad r, TypeElim r, UnRepr r TypeData) =>
ClassName -> VS (r TypeData) -> VS (r TypeData)
C.listType ClassName
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 (ClassName -> ValueState -> ValueState
addHeaderUsing ClassName
cppSet (ValueState -> ValueState)
-> (ValueState -> ValueState) -> ValueState -> ValueState
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ClassName -> ValueState -> ValueState
addHeaderLangImport ClassName
cppSet)
ClassName
-> State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData)
forall (r :: * -> *).
(Monad r, TypeElim r, UnRepr r TypeData) =>
ClassName -> VS (r TypeData) -> VS (r TypeData)
C.setType ClassName
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 (r :: * -> *).
TypeSym r =>
VS (r TypeData) -> VS (r TypeData)
listType
innerType :: State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData)
innerType = State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData)
forall (r :: * -> *).
(TypeElim r, OOTypeSym r) =>
VS (r TypeData) -> VS (r TypeData)
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) =>
[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 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 where
obj :: ClassName -> State ValueState (CppHdrCode TypeData)
obj ClassName
n = VS (Map ClassName ClassName)
getClassMap VS (Map ClassName ClassName)
-> (Map ClassName ClassName
-> 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 ClassName ClassName
cm -> (State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData))
-> (ClassName
-> State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData))
-> Maybe ClassName
-> 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))
-> (ClassName -> StateT ValueState Identity ())
-> ClassName
-> 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 ())
-> (ClassName -> ValueState -> ValueState)
-> ClassName
-> StateT ValueState Identity ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ClassName -> ValueState -> ValueState
addHeaderModImport)
(ClassName -> Map ClassName ClassName -> Maybe ClassName
forall k a. Ord k => k -> Map k a -> Maybe a
Map.lookup ClassName
n Map ClassName ClassName
cm) (State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData))
-> State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData)
forall a b. (a -> b) -> a -> b
$ ClassName -> State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). Monad r => ClassName -> VS (r TypeData)
G.obj ClassName
n)
instance RenderType CppHdrCode where
multiType :: [State ValueState (CppHdrCode TypeData)]
-> State ValueState (CppHdrCode TypeData)
multiType [State ValueState (CppHdrCode TypeData)]
_ = ClassName -> State ValueState (CppHdrCode TypeData)
forall a. HasCallStack => ClassName -> a
error (ClassName -> State ValueState (CppHdrCode TypeData))
-> ClassName -> State ValueState (CppHdrCode TypeData)
forall a b. (a -> b) -> a -> b
$ ClassName -> ClassName
C.multiTypeError ClassName
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 where
global :: CppHdrCode ScopeData
global = CppHdrCode ScopeData
forall (r :: * -> *). Monad r => r ScopeData
CP.global
mainFn :: CppHdrCode ScopeData
mainFn = CppHdrCode ScopeData
forall (r :: * -> *). ScopeSym r => r ScopeData
local
local :: CppHdrCode ScopeData
local = CppHdrCode ScopeData
forall (r :: * -> *). Monad r => r ScopeData
G.local
instance ScopeElim CppHdrCode where
scopeData :: CppHdrCode ScopeData -> ScopeData
scopeData = CppHdrCode ScopeData -> ScopeData
forall a. CppHdrCode a -> a
unCPPHC
instance VariableSym CppHdrCode where
var :: ClassName
-> State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Variable
var = ClassName
-> State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Variable
forall (r :: * -> *).
RenderVariable r =>
ClassName -> VS (r TypeData) -> SVariable r
G.var
constant :: ClassName
-> State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Variable
constant ClassName
_ State ValueState (CppHdrCode TypeData)
_ = ClassName
-> State ValueState (CppHdrCode TypeData)
-> Doc
-> HdrState ValueState Variable
forall (r :: * -> *).
RenderVariable r =>
ClassName -> VS (r TypeData) -> Doc -> SVariable r
mkStateVar ClassName
"" State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void Doc
empty
extVar :: ClassName
-> ClassName
-> State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Variable
extVar ClassName
_ ClassName
_ State ValueState (CppHdrCode TypeData)
_ = ClassName
-> State ValueState (CppHdrCode TypeData)
-> Doc
-> HdrState ValueState Variable
forall (r :: * -> *).
RenderVariable r =>
ClassName -> VS (r TypeData) -> Doc -> SVariable r
mkStateVar ClassName
"" State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void Doc
empty
instance OOVariableSym CppHdrCode where
classVar :: ClassName
-> State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Variable
classVar = ClassName
-> State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Variable
forall (r :: * -> *).
RenderVariable r =>
ClassName -> VS (r TypeData) -> SVariable r
G.classVar
classConst :: ClassName
-> State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Variable
classConst = ClassName
-> State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Variable
forall (r :: * -> *).
OOVariableSym r =>
ClassName -> VS (r TypeData) -> SVariable r
classVar
classVarAccess :: State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Variable -> HdrState ValueState Variable
classVarAccess State ValueState (CppHdrCode TypeData)
_ HdrState ValueState Variable
_ = ClassName
-> State ValueState (CppHdrCode TypeData)
-> Doc
-> HdrState ValueState Variable
forall (r :: * -> *).
RenderVariable r =>
ClassName -> VS (r TypeData) -> Doc -> SVariable r
mkStateVar ClassName
"" State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void Doc
empty
extClassVarAccess :: State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Variable -> HdrState ValueState Variable
extClassVarAccess State ValueState (CppHdrCode TypeData)
_ HdrState ValueState Variable
_ = ClassName
-> State ValueState (CppHdrCode TypeData)
-> Doc
-> HdrState ValueState Variable
forall (r :: * -> *).
RenderVariable r =>
ClassName -> VS (r TypeData) -> Doc -> SVariable r
mkStateVar ClassName
"" State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void Doc
empty
instanceVarAccess :: HdrState ValueState Value
-> HdrState ValueState Variable -> HdrState ValueState Variable
instanceVarAccess = HdrState ValueState Value
-> HdrState ValueState Variable -> HdrState ValueState Variable
forall (r :: * -> *).
(InternalVarElim r, RenderVariable r, ValueElim r,
VariableElim r) =>
SValue r -> SVariable r -> SVariable r
G.instanceVarAccess
instance SelfSym CppHdrCode where
self :: HdrState ValueState Variable
self = ClassName
-> State ValueState (CppHdrCode TypeData)
-> Doc
-> HdrState ValueState Variable
forall (r :: * -> *).
RenderVariable r =>
ClassName -> VS (r TypeData) -> Doc -> SVariable r
mkStateVar ClassName
"" State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void Doc
empty
instance VariableElim CppHdrCode where
variableName :: CppHdrCode Variable -> ClassName
variableName = Variable -> ClassName
varName (Variable -> ClassName)
-> (CppHdrCode Variable -> Variable)
-> CppHdrCode Variable
-> ClassName
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 (r :: * -> *) a b. Functor r => (a -> b) -> r a -> r b
onCodeValue Variable -> TypeData
varType
instance InternalVarElim CppHdrCode 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 where
varFromData :: AttachmentTag
-> ClassName
-> State ValueState (CppHdrCode TypeData)
-> Doc
-> HdrState ValueState Variable
varFromData AttachmentTag
b ClassName
n State ValueState (CppHdrCode TypeData)
t' Doc
d = do
CppHdrCode TypeData
t <- State ValueState (CppHdrCode TypeData)
t'
CppHdrCode Variable -> HdrState ValueState Variable
forall a s. a -> State s a
toState (CppHdrCode Variable -> HdrState ValueState Variable)
-> CppHdrCode Variable -> HdrState ValueState Variable
forall a b. (a -> b) -> a -> b
$ (TypeData -> Doc -> Variable)
-> CppHdrCode TypeData -> CppHdrCode Doc -> CppHdrCode Variable
forall (r :: * -> *) a b c.
Applicative r =>
(a -> b -> c) -> r a -> r b -> r c
on2CodeValues (AttachmentTag -> ClassName -> TypeData -> Doc -> Variable
vard AttachmentTag
b ClassName
n) CppHdrCode TypeData
t (Doc -> CppHdrCode Doc
forall (r :: * -> *) a. Monad r => a -> r a
toCode Doc
d)
instance ValueSym CppHdrCode where
valueType :: CppHdrCode Value -> CppHdrCode TypeData
valueType = (Value -> TypeData) -> CppHdrCode Value -> CppHdrCode TypeData
forall (r :: * -> *) a b. Functor r => (a -> b) -> r a -> r b
onCodeValue Value -> TypeData
valType
instance OOValueSym CppHdrCode where
instance Argument CppHdrCode where
pointerArg :: HdrState ValueState Value -> HdrState ValueState Value
pointerArg = HdrState ValueState Value -> HdrState ValueState Value
forall a. a -> a
id
instance Literal CppHdrCode where
litTrue :: HdrState ValueState Value
litTrue = HdrState ValueState Value
forall (r :: * -> *). (RenderValue r, TypeSym r) => SValue r
C.litTrue
litFalse :: HdrState ValueState Value
litFalse = HdrState ValueState Value
forall (r :: * -> *). (RenderValue r, TypeSym r) => SValue r
C.litFalse
litChar :: Char -> HdrState ValueState Value
litChar = (Doc -> Doc) -> Char -> HdrState ValueState Value
forall (r :: * -> *).
(RenderValue r, TypeSym r) =>
(Doc -> Doc) -> Char -> SValue r
G.litChar Doc -> Doc
quotes
litDouble :: Double -> HdrState ValueState Value
litDouble = Double -> HdrState ValueState Value
forall (r :: * -> *).
(RenderValue r, TypeSym r) =>
Double -> SValue r
G.litDouble
litFloat :: Float -> HdrState ValueState Value
litFloat = Float -> HdrState ValueState Value
forall (r :: * -> *).
(RenderValue r, TypeSym r) =>
Float -> SValue r
C.litFloat
litInt :: Integer -> HdrState ValueState Value
litInt = Integer -> HdrState ValueState Value
forall (r :: * -> *).
(RenderValue r, TypeSym r) =>
Integer -> SValue r
G.litInt
litString :: ClassName -> HdrState ValueState Value
litString = ClassName -> HdrState ValueState Value
forall (r :: * -> *).
(RenderValue r, TypeSym r) =>
ClassName -> SValue r
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 (r :: * -> *).
Literal r =>
VS (r TypeData) -> [SValue r] -> SValue r
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 (r :: * -> *).
(RenderValue r, ValueElim r) =>
(VS (r TypeData) -> VS (r TypeData))
-> VS (r TypeData) -> [SValue r] -> SValue r
cppLitSet State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData)
forall (r :: * -> *).
TypeSym r =>
VS (r TypeData) -> VS (r TypeData)
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 (r :: * -> *).
(RenderValue r, TypeSym r, ValueElim r) =>
(Doc -> Doc) -> VS (r TypeData) -> [SValue r] -> SValue r
CP.litArray Doc -> Doc
braces
instance MathConstant CppHdrCode where
pi :: HdrState ValueState Value
pi = do
(ValueState -> ValueState) -> StateT ValueState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (ClassName -> ValueState -> ValueState
addHeaderDefine ClassName
mathDefines (ValueState -> ValueState)
-> (ValueState -> ValueState) -> ValueState -> ValueState
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ClassName -> ValueState -> ValueState
addHeaderLangImport ClassName
mathh)
State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
double Doc
cppPi
instance VariableValue CppHdrCode where
valueOf :: HdrState ValueState Variable -> HdrState ValueState Value
valueOf = HdrState ValueState Variable -> HdrState ValueState Value
forall (r :: * -> *).
(InternalVarElim r, RenderValue r, VariableElim r) =>
SVariable r -> SValue r
G.valueOf
instance OOVariableValue CppHdrCode
instance CommandLineArgs CppHdrCode where
arg :: Integer -> HdrState ValueState Value
arg Integer
n = HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Value
forall (r :: * -> *).
(RenderValue r, TypeSym r, ValueElim r) =>
SValue r -> SValue r -> SValue r
G.arg (Integer -> HdrState ValueState Value
forall (r :: * -> *). Literal r => Integer -> SValue r
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 (r :: * -> *). CommandLineArgs r => SValue r
argsList
argsList :: HdrState ValueState Value
argsList = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). Monad r => VS (r TypeData)
argvType (ClassName -> Doc
text ClassName
argv)
argExists :: Integer -> HdrState ValueState Value
argExists Integer
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void Doc
empty
instance NumericExpression CppHdrCode where
#~ :: HdrState ValueState Value -> HdrState ValueState Value
(#~) HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void Doc
empty
#/^ :: HdrState ValueState Value -> HdrState ValueState Value
(#/^) HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void Doc
empty
#| :: HdrState ValueState Value -> HdrState ValueState Value
(#|) HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
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 (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
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 (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
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 (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
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 (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
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 (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
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 (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void Doc
empty
log :: HdrState ValueState Value -> HdrState ValueState Value
log HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void Doc
empty
ln :: HdrState ValueState Value -> HdrState ValueState Value
ln HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void Doc
empty
exp :: HdrState ValueState Value -> HdrState ValueState Value
exp HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void Doc
empty
sin :: HdrState ValueState Value -> HdrState ValueState Value
sin HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void Doc
empty
cos :: HdrState ValueState Value -> HdrState ValueState Value
cos HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void Doc
empty
tan :: HdrState ValueState Value -> HdrState ValueState Value
tan HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void Doc
empty
csc :: HdrState ValueState Value -> HdrState ValueState Value
csc HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void Doc
empty
sec :: HdrState ValueState Value -> HdrState ValueState Value
sec HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void Doc
empty
cot :: HdrState ValueState Value -> HdrState ValueState Value
cot HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void Doc
empty
arcsin :: HdrState ValueState Value -> HdrState ValueState Value
arcsin HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void Doc
empty
arccos :: HdrState ValueState Value -> HdrState ValueState Value
arccos HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void Doc
empty
arctan :: HdrState ValueState Value -> HdrState ValueState Value
arctan HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void Doc
empty
floor :: HdrState ValueState Value -> HdrState ValueState Value
floor HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void Doc
empty
ceil :: HdrState ValueState Value -> HdrState ValueState Value
ceil HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void Doc
empty
instance BooleanExpression CppHdrCode where
?! :: HdrState ValueState Value -> HdrState ValueState Value
(?!) HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
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 (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
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 (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void Doc
empty
instance Comparison CppHdrCode 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 (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
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 (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
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 (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
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 (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
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 (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
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 (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void Doc
empty
instance ValueExpression CppHdrCode 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 (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void Doc
empty
funcAppMixedArgs :: MixedCall CppHdrCode
funcAppMixedArgs ClassName
_ State ValueState (CppHdrCode TypeData)
_ [HdrState ValueState Value]
_ [(HdrState ValueState Variable, HdrState ValueState Value)]
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void Doc
empty
extFuncAppMixedArgs :: ClassName -> MixedCall CppHdrCode
extFuncAppMixedArgs ClassName
_ ClassName
_ State ValueState (CppHdrCode TypeData)
_ [HdrState ValueState Value]
_ [(HdrState ValueState Variable, HdrState ValueState Value)]
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void Doc
empty
libFuncAppMixedArgs :: ClassName -> MixedCall CppHdrCode
libFuncAppMixedArgs ClassName
_ ClassName
_ State ValueState (CppHdrCode TypeData)
_ [HdrState ValueState Value]
_ [(HdrState ValueState Variable, HdrState ValueState Value)]
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
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 (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void Doc
empty
notNull :: HdrState ValueState Value -> HdrState ValueState Value
notNull HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void Doc
empty
instance OOValueExpression CppHdrCode 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 (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void Doc
empty
extNewObjMixedArgs :: MixedCall CppHdrCode
extNewObjMixedArgs ClassName
_ State ValueState (CppHdrCode TypeData)
_ [HdrState ValueState Value]
_ [(HdrState ValueState Variable, HdrState ValueState Value)]
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void Doc
empty
libNewObjMixedArgs :: MixedCall CppHdrCode
libNewObjMixedArgs ClassName
_ State ValueState (CppHdrCode TypeData)
_ [HdrState ValueState Value]
_ [(HdrState ValueState Variable, HdrState ValueState Value)]
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void Doc
empty
instance RenderValue CppHdrCode where
inputFunc :: HdrState ValueState Value
inputFunc = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void Doc
empty
printFunc :: HdrState ValueState Value
printFunc = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void Doc
empty
printLnFunc :: HdrState ValueState Value
printLnFunc = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void Doc
empty
printFileFunc :: HdrState ValueState Value -> HdrState ValueState Value
printFileFunc HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void Doc
empty
printFileLnFunc :: HdrState ValueState Value -> HdrState ValueState Value
printFileLnFunc HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
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 (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void Doc
empty
call :: Maybe ClassName -> Maybe Doc -> MixedCall CppHdrCode
call Maybe ClassName
_ Maybe Doc
_ ClassName
_ State ValueState (CppHdrCode TypeData)
_ [HdrState ValueState Value]
_ [(HdrState ValueState Variable, HdrState ValueState Value)]
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
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
CppHdrCode TypeData
t <- State ValueState (CppHdrCode TypeData)
t'
CppHdrCode Value -> HdrState ValueState Value
forall a s. a -> State s a
toState (CppHdrCode Value -> HdrState ValueState Value)
-> CppHdrCode Value -> HdrState ValueState Value
forall a b. (a -> b) -> a -> b
$ (TypeData -> Doc -> Value)
-> CppHdrCode TypeData -> CppHdrCode Doc -> CppHdrCode Value
forall (r :: * -> *) a b c.
Applicative r =>
(a -> b -> c) -> r a -> r b -> r c
on2CodeValues (Maybe Int -> Maybe Integer -> TypeData -> Doc -> Value
vd Maybe Int
p Maybe Integer
i) CppHdrCode TypeData
t (Doc -> CppHdrCode Doc
forall (r :: * -> *) a. Monad r => a -> r a
toCode Doc
d)
instance ValueElim CppHdrCode 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 where
objMethodCallMixedArgs' :: ClassName
-> State ValueState (CppHdrCode TypeData)
-> HdrState ValueState Value
-> [HdrState ValueState Value]
-> [(HdrState ValueState Variable, HdrState ValueState Value)]
-> HdrState ValueState Value
objMethodCallMixedArgs' ClassName
_ 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 (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void Doc
empty
classMethodCallMixedArgs' :: ClassName
-> State ValueState (CppHdrCode TypeData)
-> State ValueState (CppHdrCode TypeData)
-> [HdrState ValueState Value]
-> [(HdrState ValueState Variable, HdrState ValueState Value)]
-> HdrState ValueState Value
classMethodCallMixedArgs' ClassName
_ 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 (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void Doc
empty
instance FunctionSym CppHdrCode where
instance OOFunctionSym CppHdrCode where
func :: ClassName
-> State ValueState (CppHdrCode TypeData)
-> [HdrState ValueState Value]
-> HdrState ValueState FuncData
func ClassName
_ State ValueState (CppHdrCode TypeData)
_ [HdrState ValueState Value]
_ = Doc
-> State ValueState (CppHdrCode TypeData)
-> HdrState ValueState FuncData
forall (r :: * -> *).
RenderFunction r =>
Doc -> VS (r TypeData) -> VS (r FuncData)
funcFromData Doc
empty State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
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 (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void Doc
empty
instance GetSet CppHdrCode 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 (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
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 (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void Doc
empty
instance IndexTranslator CppHdrCode where
intToIndex :: HdrState ValueState Value -> HdrState ValueState Value
intToIndex HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void Doc
empty
indexToInt :: HdrState ValueState Value -> HdrState ValueState Value
indexToInt HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void Doc
empty
instance Reference CppHdrCode 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 where
arrayElem :: HdrState ValueState Value
-> HdrState ValueState Value -> HdrState ValueState Variable
arrayElem HdrState ValueState Value
_ HdrState ValueState Value
_ = ClassName
-> State ValueState (CppHdrCode TypeData)
-> Doc
-> HdrState ValueState Variable
forall (r :: * -> *).
RenderVariable r =>
ClassName -> VS (r TypeData) -> Doc -> SVariable r
mkStateVar ClassName
"" State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void Doc
empty
arrayLength :: HdrState ValueState Value -> HdrState ValueState Value
arrayLength = HdrState ValueState Value -> HdrState ValueState Value
forall (r :: * -> *) smt. List r smt => SValue r -> SValue r
listSize
arrayCopy :: HdrState ValueState Value -> HdrState ValueState Value
arrayCopy = HdrState ValueState Value -> HdrState ValueState Value
forall a. a -> a
id
instance List CppHdrCode (Doc, Terminator) where
listSize :: HdrState ValueState Value -> HdrState ValueState Value
listSize HdrState ValueState Value
_ = State ValueState (CppHdrCode TypeData)
-> Doc -> HdrState ValueState Value
forall (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void Doc
empty
listAdd :: HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator)
listAdd HdrState ValueState Value
_ HdrState ValueState Value
_ HdrState ValueState Value
_ = Doc -> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
RenderStatement r smt =>
Doc -> MS (r smt)
mkStmt Doc
empty
listAppend :: HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator)
listAppend HdrState ValueState Value
_ HdrState ValueState Value
_ = Doc -> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
RenderStatement r smt =>
Doc -> MS (r smt)
mkStmt 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 (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void Doc
empty
listSet :: HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator)
listSet HdrState ValueState Value
_ HdrState ValueState Value
_ HdrState ValueState Value
_ = Doc -> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
RenderStatement r smt =>
Doc -> MS (r smt)
mkStmtNoEnd 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 (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void Doc
empty
instance Set CppHdrCode 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 (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
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 (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
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 (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
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 (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void Doc
empty
instance InternalList CppHdrCode 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 where
getFunc :: HdrState ValueState Variable -> HdrState ValueState FuncData
getFunc HdrState ValueState Variable
_ = Doc
-> State ValueState (CppHdrCode TypeData)
-> HdrState ValueState FuncData
forall (r :: * -> *).
RenderFunction r =>
Doc -> VS (r TypeData) -> VS (r FuncData)
funcFromData Doc
empty State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
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 :: * -> *).
RenderFunction r =>
Doc -> VS (r TypeData) -> VS (r FuncData)
funcFromData Doc
empty State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void
instance InternalListFunc CppHdrCode 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 :: * -> *).
RenderFunction r =>
Doc -> VS (r TypeData) -> VS (r FuncData)
funcFromData Doc
empty State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void
instance BinderSym CppHdrCode where
binder :: ClassName
-> State ValueState (CppHdrCode TypeData)
-> HdrState ValueState BinderD
binder ClassName
nm State ValueState (CppHdrCode TypeData)
tp = (TypeData -> BinderD) -> CppHdrCode TypeData -> CppHdrCode BinderD
forall (r :: * -> *) a b. Functor r => (a -> b) -> r a -> r b
onCodeValue (ClassName -> TypeData -> BinderD
bindFormD ClassName
nm) (CppHdrCode TypeData -> CppHdrCode BinderD)
-> State ValueState (CppHdrCode TypeData)
-> HdrState ValueState BinderD
forall (r :: * -> *) a b. Functor r => (a -> b) -> r a -> r b
<$> State ValueState (CppHdrCode TypeData)
tp
instance BinderElim CppHdrCode where
binderName :: CppHdrCode BinderD -> ClassName
binderName = BinderD -> ClassName
bindName (BinderD -> ClassName)
-> (CppHdrCode BinderD -> BinderD)
-> CppHdrCode BinderD
-> ClassName
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 (r :: * -> *) a b. Functor r => (a -> b) -> r a -> r b
onCodeValue BinderD -> TypeData
bindType
instance InternalBinderElim CppHdrCode where
binderElim :: CppHdrCode BinderD -> Doc
binderElim = ClassName -> Doc
text (ClassName -> Doc)
-> (CppHdrCode BinderD -> ClassName) -> CppHdrCode BinderD -> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. BinderD -> ClassName
bindName (BinderD -> ClassName)
-> (CppHdrCode BinderD -> BinderD)
-> CppHdrCode BinderD
-> ClassName
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppHdrCode BinderD -> BinderD
forall a. CppHdrCode a -> a
unCPPHC
instance RenderFunction CppHdrCode 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 (r :: * -> *) a b. Functor r => (a -> b) -> r a -> r b
onCodeValue (TypeData -> Doc -> FuncData
`fd` Doc
d))
instance FunctionElim CppHdrCode where
functionType :: CppHdrCode FuncData -> CppHdrCode TypeData
functionType = (FuncData -> TypeData)
-> CppHdrCode FuncData -> CppHdrCode TypeData
forall (r :: * -> *) a b. Functor r => (a -> b) -> r a -> r 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 (Doc, Terminator) where
multiAssign :: [HdrState ValueState Variable]
-> [HdrState ValueState Value]
-> HdrState MethodState (Doc, Terminator)
multiAssign [HdrState ValueState Variable]
_ [HdrState ValueState Value]
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
instance InternalIOStmt CppHdrCode (Doc, Terminator) where
printSt :: Bool
-> Maybe (HdrState ValueState Value)
-> HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator)
printSt Bool
_ Maybe (HdrState ValueState Value)
_ HdrState ValueState Value
_ HdrState ValueState Value
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
instance InternalControlStmt CppHdrCode (Doc, Terminator) where
multiReturn :: [HdrState ValueState Value]
-> HdrState MethodState (Doc, Terminator)
multiReturn [HdrState ValueState Value]
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
instance RenderStatement CppHdrCode (Doc, Terminator) where
stmt :: HdrState MethodState (Doc, Terminator)
-> HdrState MethodState (Doc, Terminator)
stmt = HdrState MethodState (Doc, Terminator)
-> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
(RenderStatement r smt, StatementElim r smt) =>
MS (r smt) -> MS (r smt)
G.stmt
loopStmt :: HdrState MethodState (Doc, Terminator)
-> HdrState MethodState (Doc, Terminator)
loopStmt HdrState MethodState (Doc, Terminator)
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
stmtFromData :: Doc -> Terminator -> HdrState MethodState (Doc, Terminator)
stmtFromData Doc
d Terminator
t = CppHdrCode (Doc, Terminator)
-> HdrState MethodState (Doc, Terminator)
forall a s. a -> State s a
toState (CppHdrCode (Doc, Terminator)
-> HdrState MethodState (Doc, Terminator))
-> CppHdrCode (Doc, Terminator)
-> HdrState MethodState (Doc, Terminator)
forall a b. (a -> b) -> a -> b
$ (Doc, Terminator) -> CppHdrCode (Doc, Terminator)
forall (r :: * -> *) a. Monad r => a -> r a
toCode (Doc
d, Terminator
t)
instance StatementElim CppHdrCode (Doc, Terminator) where
statement :: CppHdrCode (Doc, Terminator) -> Doc
statement = (Doc, Terminator) -> Doc
forall a b. (a, b) -> a
fst ((Doc, Terminator) -> Doc)
-> (CppHdrCode (Doc, Terminator) -> (Doc, Terminator))
-> CppHdrCode (Doc, Terminator)
-> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppHdrCode (Doc, Terminator) -> (Doc, Terminator)
forall a. CppHdrCode a -> a
unCPPHC
statementTerm :: CppHdrCode (Doc, Terminator) -> Terminator
statementTerm = (Doc, Terminator) -> Terminator
forall a b. (a, b) -> b
snd ((Doc, Terminator) -> Terminator)
-> (CppHdrCode (Doc, Terminator) -> (Doc, Terminator))
-> CppHdrCode (Doc, Terminator)
-> Terminator
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppHdrCode (Doc, Terminator) -> (Doc, Terminator)
forall a. CppHdrCode a -> a
unCPPHC
instance StatementSym CppHdrCode (Doc, Terminator) where
valStmt :: HdrState ValueState Value -> HdrState MethodState (Doc, Terminator)
valStmt HdrState ValueState Value
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
emptyStmt :: HdrState MethodState (Doc, Terminator)
emptyStmt = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. RenderStatement r smt => MS (r smt)
G.emptyStmt
multi :: [HdrState MethodState (Doc, Terminator)]
-> HdrState MethodState (Doc, Terminator)
multi [HdrState MethodState (Doc, Terminator)]
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
instance AssignStatement CppHdrCode (Doc, Terminator) where
assign :: HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator)
assign HdrState ValueState Variable
_ HdrState ValueState Value
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
&-= :: HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator)
(&-=) HdrState ValueState Variable
_ HdrState ValueState Value
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
&+= :: HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator)
(&+=) HdrState ValueState Variable
_ HdrState ValueState Value
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
&++ :: HdrState ValueState Variable
-> HdrState MethodState (Doc, Terminator)
(&++) HdrState ValueState Variable
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
&-- :: HdrState ValueState Variable
-> HdrState MethodState (Doc, Terminator)
(&--) HdrState ValueState Variable
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
instance DeclStatement CppHdrCode (Doc, Terminator) where
varDec :: HdrState ValueState Variable
-> CppHdrCode ScopeData -> HdrState MethodState (Doc, Terminator)
varDec HdrState ValueState Variable
vr CppHdrCode ScopeData
scp = do
CppHdrCode Variable
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 :: CodeType
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 (r :: * -> *). VariableElim r => r Variable -> r TypeData
variableType) CppHdrCode Variable
vr'
case CodeType
tp of
(Array CodeType
_) -> ClassName -> HdrState MethodState (Doc, Terminator)
forall a. HasCallStack => ClassName -> a
error ClassName
"Can't use `varDec` for C++ arrays; use `arrayDec`"
CodeType
_ -> CppHdrCode AttachmentData
-> CppHdrCode AttachmentData
-> Doc
-> HdrState ValueState Variable
-> CppHdrCode ScopeData
-> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) att smt.
(InternalVarElim r, PermElim r att, RenderStatement r smt,
ScopeElim r, UnRepr r TypeData, TypeElim r, VariableElim r) =>
r att -> r att -> Doc -> SVariable r -> r ScopeData -> MS (r smt)
C.varDec CppHdrCode AttachmentData
forall (r :: * -> *) att. AttachmentSym r att => r att
classLevel CppHdrCode AttachmentData
forall (r :: * -> *) att. AttachmentSym r att => r att
instanceLevel Doc
empty HdrState ValueState Variable
vr CppHdrCode ScopeData
scp
varDecDef :: HdrState ValueState Variable
-> CppHdrCode ScopeData
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator)
varDecDef = Terminator
-> HdrState ValueState Variable
-> CppHdrCode ScopeData
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
(DeclStatement r smt, RenderStatement r smt, StatementElim r smt,
ValueElim r) =>
Terminator -> SVariable r -> r ScopeData -> SValue r -> MS (r smt)
C.varDecDef Terminator
Semi
setDec :: HdrState ValueState Variable
-> CppHdrCode ScopeData -> HdrState MethodState (Doc, Terminator)
setDec = HdrState ValueState Variable
-> CppHdrCode ScopeData -> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
DeclStatement r smt =>
SVariable r -> r ScopeData -> MS (r smt)
varDec
setDecDef :: HdrState ValueState Variable
-> CppHdrCode ScopeData
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator)
setDecDef = HdrState ValueState Variable
-> CppHdrCode ScopeData
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
DeclStatement r smt =>
SVariable r -> r ScopeData -> SValue r -> MS (r smt)
varDecDef
listDec :: Integer
-> HdrState ValueState Variable
-> CppHdrCode ScopeData
-> HdrState MethodState (Doc, Terminator)
listDec Integer
_ HdrState ValueState Variable
_ CppHdrCode ScopeData
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
listDecDef :: HdrState ValueState Variable
-> CppHdrCode ScopeData
-> [HdrState ValueState Value]
-> HdrState MethodState (Doc, Terminator)
listDecDef HdrState ValueState Variable
_ CppHdrCode ScopeData
_ [HdrState ValueState Value]
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
arrayDec :: Integer
-> HdrState ValueState Value
-> HdrState ValueState Variable
-> CppHdrCode ScopeData
-> HdrState MethodState (Doc, Terminator)
arrayDec Integer
_ HdrState ValueState Value
_ HdrState ValueState Variable
_ CppHdrCode ScopeData
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
arrayDecDef :: HdrState ValueState Variable
-> CppHdrCode ScopeData
-> [HdrState ValueState Value]
-> HdrState MethodState (Doc, Terminator)
arrayDecDef HdrState ValueState Variable
_ CppHdrCode ScopeData
_ [HdrState ValueState Value]
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
constDecDef :: HdrState ValueState Variable
-> CppHdrCode ScopeData
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator)
constDecDef = HdrState ValueState Variable
-> CppHdrCode ScopeData
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
(InternalVarElim r, RenderStatement r smt, ScopeElim r,
UnRepr r TypeData, ValueElim r, VariableElim r) =>
SVariable r -> r ScopeData -> SValue r -> MS (r smt)
CG.constDecDef
funcDecDef :: HdrState ValueState Variable
-> CppHdrCode ScopeData
-> [HdrState ValueState Variable]
-> HdrState MethodState Doc
-> HdrState MethodState (Doc, Terminator)
funcDecDef HdrState ValueState Variable
_ CppHdrCode ScopeData
_ [HdrState ValueState Variable]
_ HdrState MethodState Doc
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
instance OODeclStatement CppHdrCode (Doc, Terminator) where
objDecDef :: HdrState ValueState Variable
-> CppHdrCode ScopeData
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator)
objDecDef HdrState ValueState Variable
_ CppHdrCode ScopeData
_ HdrState ValueState Value
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
objDecNew :: HdrState ValueState Variable
-> CppHdrCode ScopeData
-> [HdrState ValueState Value]
-> HdrState MethodState (Doc, Terminator)
objDecNew HdrState ValueState Variable
_ CppHdrCode ScopeData
_ [HdrState ValueState Value]
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
extObjDecNew :: ClassName
-> HdrState ValueState Variable
-> CppHdrCode ScopeData
-> [HdrState ValueState Value]
-> HdrState MethodState (Doc, Terminator)
extObjDecNew ClassName
_ HdrState ValueState Variable
_ CppHdrCode ScopeData
_ [HdrState ValueState Value]
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
instance IOStatement CppHdrCode (Doc, Terminator) where
print :: HdrState ValueState Value -> HdrState MethodState (Doc, Terminator)
print HdrState ValueState Value
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
printLn :: HdrState ValueState Value -> HdrState MethodState (Doc, Terminator)
printLn HdrState ValueState Value
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
printStr :: ClassName -> HdrState MethodState (Doc, Terminator)
printStr ClassName
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
printStrLn :: ClassName -> HdrState MethodState (Doc, Terminator)
printStrLn ClassName
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
printFile :: HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator)
printFile HdrState ValueState Value
_ HdrState ValueState Value
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
printFileLn :: HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator)
printFileLn HdrState ValueState Value
_ HdrState ValueState Value
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
printFileStr :: HdrState ValueState Value
-> ClassName -> HdrState MethodState (Doc, Terminator)
printFileStr HdrState ValueState Value
_ ClassName
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
printFileStrLn :: HdrState ValueState Value
-> ClassName -> HdrState MethodState (Doc, Terminator)
printFileStrLn HdrState ValueState Value
_ ClassName
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
getInput :: HdrState ValueState Variable
-> HdrState MethodState (Doc, Terminator)
getInput HdrState ValueState Variable
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
discardInput :: HdrState MethodState (Doc, Terminator)
discardInput = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
getFileInput :: HdrState ValueState Value
-> HdrState ValueState Variable
-> HdrState MethodState (Doc, Terminator)
getFileInput HdrState ValueState Value
_ HdrState ValueState Variable
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
discardFileInput :: HdrState ValueState Value -> HdrState MethodState (Doc, Terminator)
discardFileInput HdrState ValueState Value
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
openFileR :: HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator)
openFileR HdrState ValueState Variable
_ HdrState ValueState Value
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
openFileW :: HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator)
openFileW HdrState ValueState Variable
_ HdrState ValueState Value
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
openFileA :: HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator)
openFileA HdrState ValueState Variable
_ HdrState ValueState Value
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
closeFile :: HdrState ValueState Value -> HdrState MethodState (Doc, Terminator)
closeFile HdrState ValueState Value
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
getFileInputLine :: HdrState ValueState Value
-> HdrState ValueState Variable
-> HdrState MethodState (Doc, Terminator)
getFileInputLine HdrState ValueState Value
_ HdrState ValueState Variable
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
discardFileLine :: HdrState ValueState Value -> HdrState MethodState (Doc, Terminator)
discardFileLine HdrState ValueState Value
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
getFileInputAll :: HdrState ValueState Value
-> HdrState ValueState Variable
-> HdrState MethodState (Doc, Terminator)
getFileInputAll HdrState ValueState Value
_ HdrState ValueState Variable
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
instance StringStatement CppHdrCode (Doc, Terminator) where
stringSplit :: Char
-> HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator)
stringSplit Char
_ HdrState ValueState Variable
_ HdrState ValueState Value
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
stringListVals :: [HdrState ValueState Variable]
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator)
stringListVals [HdrState ValueState Variable]
_ HdrState ValueState Value
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
stringListLists :: [HdrState ValueState Variable]
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator)
stringListLists [HdrState ValueState Variable]
_ HdrState ValueState Value
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
instance FuncAppStatement CppHdrCode (Doc, Terminator) where
inOutCall :: InOutCall CppHdrCode (Doc, Terminator)
inOutCall ClassName
_ [HdrState ValueState Value]
_ [HdrState ValueState Variable]
_ [HdrState ValueState Variable]
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
extInOutCall :: ClassName -> InOutCall CppHdrCode (Doc, Terminator)
extInOutCall ClassName
_ ClassName
_ [HdrState ValueState Value]
_ [HdrState ValueState Variable]
_ [HdrState ValueState Variable]
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
instance OOFuncAppStatement CppHdrCode (Doc, Terminator) where
selfInOutCall :: InOutCall CppHdrCode (Doc, Terminator)
selfInOutCall ClassName
_ [HdrState ValueState Value]
_ [HdrState ValueState Variable]
_ [HdrState ValueState Variable]
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
instance CommentStatement CppHdrCode (Doc, Terminator) where
comment :: ClassName -> HdrState MethodState (Doc, Terminator)
comment ClassName
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
instance ControlStatement CppHdrCode (Doc, Terminator) where
break :: HdrState MethodState (Doc, Terminator)
break = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
continue :: HdrState MethodState (Doc, Terminator)
continue = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
returnStmt :: HdrState ValueState Value -> HdrState MethodState (Doc, Terminator)
returnStmt HdrState ValueState Value
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
throw :: ClassName -> HdrState MethodState (Doc, Terminator)
throw ClassName
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
ifCond :: [(HdrState ValueState Value, HdrState MethodState Doc)]
-> HdrState MethodState Doc
-> HdrState MethodState (Doc, Terminator)
ifCond [(HdrState ValueState Value, HdrState MethodState Doc)]
_ HdrState MethodState Doc
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
switch :: HdrState ValueState Value
-> [(HdrState ValueState Value, HdrState MethodState Doc)]
-> HdrState MethodState Doc
-> HdrState MethodState (Doc, Terminator)
switch HdrState ValueState Value
_ [(HdrState ValueState Value, HdrState MethodState Doc)]
_ HdrState MethodState Doc
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
ifExists :: HdrState ValueState Value
-> HdrState MethodState Doc
-> HdrState MethodState Doc
-> HdrState MethodState (Doc, Terminator)
ifExists HdrState ValueState Value
_ HdrState MethodState Doc
_ HdrState MethodState Doc
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
for :: HdrState MethodState (Doc, Terminator)
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator)
-> HdrState MethodState Doc
-> HdrState MethodState (Doc, Terminator)
for HdrState MethodState (Doc, Terminator)
_ HdrState ValueState Value
_ HdrState MethodState (Doc, Terminator)
_ HdrState MethodState Doc
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
forRange :: HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState MethodState Doc
-> HdrState MethodState (Doc, Terminator)
forRange HdrState ValueState Variable
_ HdrState ValueState Value
_ HdrState ValueState Value
_ HdrState ValueState Value
_ HdrState MethodState Doc
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
forEach :: HdrState ValueState Variable
-> HdrState ValueState Value
-> HdrState MethodState Doc
-> HdrState MethodState (Doc, Terminator)
forEach HdrState ValueState Variable
_ HdrState ValueState Value
_ HdrState MethodState Doc
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
while :: HdrState ValueState Value
-> HdrState MethodState Doc
-> HdrState MethodState (Doc, Terminator)
while HdrState ValueState Value
_ HdrState MethodState Doc
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
tryCatch :: HdrState MethodState Doc
-> HdrState MethodState Doc
-> HdrState MethodState (Doc, Terminator)
tryCatch HdrState MethodState Doc
_ HdrState MethodState Doc
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
assert :: HdrState ValueState Value
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator)
assert HdrState ValueState Value
_ HdrState ValueState Value
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
instance ObserverPattern CppHdrCode (Doc, Terminator) where
notifyObservers :: HdrState ValueState FuncData
-> State ValueState (CppHdrCode TypeData)
-> HdrState MethodState (Doc, Terminator)
notifyObservers HdrState ValueState FuncData
_ State ValueState (CppHdrCode TypeData)
_ = HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
instance StrategyPattern CppHdrCode (Doc, Terminator) where
runStrategy :: ClassName
-> [(ClassName, HdrState MethodState Doc)]
-> Maybe (HdrState ValueState Value)
-> Maybe (HdrState ValueState Variable)
-> HdrState MethodState Doc
runStrategy ClassName
_ [(ClassName, 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 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 where
construct :: ClassName -> HdrState MethodState TypeData
construct = ClassName -> HdrState MethodState TypeData
forall (r :: * -> *). Monad r => ClassName -> MS (r TypeData)
G.construct
instance ParameterSym CppHdrCode where
param :: HdrState ValueState Variable -> HdrState MethodState ParamData
param HdrState ValueState Variable
v' = do
CppHdrCode 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'
HdrState ValueState Variable
-> Doc -> HdrState MethodState ParamData
forall (r :: * -> *).
RenderParam r =>
SVariable r -> Doc -> MS (r ParamData)
paramFromData HdrState ValueState Variable
v' (CppHdrCode Variable -> Doc
forall (r :: * -> *).
(InternalVarElim r, UnRepr r TypeData, VariableElim r) =>
r Variable -> Doc
renderParam CppHdrCode Variable
v)
pointerParam :: HdrState ValueState Variable -> HdrState MethodState ParamData
pointerParam HdrState ValueState Variable
v' = do
CppHdrCode 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'
HdrState ValueState Variable
-> Doc -> HdrState MethodState ParamData
forall (r :: * -> *).
RenderParam r =>
SVariable r -> Doc -> MS (r ParamData)
paramFromData HdrState ValueState Variable
v' (CppHdrCode Variable -> Doc
forall (r :: * -> *).
(InternalVarElim r, UnRepr r TypeData, VariableElim r) =>
r Variable -> Doc
cppPointerParamDoc CppHdrCode Variable
v)
instance RenderParam CppHdrCode where
paramFromData :: HdrState ValueState Variable
-> Doc -> HdrState MethodState ParamData
paramFromData HdrState ValueState Variable
v' Doc
d = do
CppHdrCode 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'
CppHdrCode ParamData -> HdrState MethodState ParamData
forall a s. a -> State s a
toState (CppHdrCode ParamData -> HdrState MethodState ParamData)
-> CppHdrCode ParamData -> HdrState MethodState ParamData
forall a b. (a -> b) -> a -> b
$ (Variable -> Doc -> ParamData)
-> CppHdrCode Variable -> CppHdrCode Doc -> CppHdrCode ParamData
forall (r :: * -> *) a b c.
Applicative r =>
(a -> b -> c) -> r a -> r b -> r c
on2CodeValues Variable -> Doc -> ParamData
pd CppHdrCode Variable
v (Doc -> CppHdrCode Doc
forall (r :: * -> *) a. Monad r => a -> r a
toCode Doc
d)
instance ParamElim CppHdrCode where
parameterName :: CppHdrCode ParamData -> ClassName
parameterName = CppHdrCode Variable -> ClassName
forall (r :: * -> *). VariableElim r => r Variable -> ClassName
variableName (CppHdrCode Variable -> ClassName)
-> (CppHdrCode ParamData -> CppHdrCode Variable)
-> CppHdrCode ParamData
-> ClassName
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ParamData -> Variable)
-> CppHdrCode ParamData -> CppHdrCode Variable
forall (r :: * -> *) a b. Functor r => (a -> b) -> r a -> r b
onCodeValue ParamData -> Variable
paramVar
parameterType :: CppHdrCode ParamData -> CppHdrCode TypeData
parameterType = CppHdrCode Variable -> CppHdrCode TypeData
forall (r :: * -> *). VariableElim r => r Variable -> r TypeData
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 (r :: * -> *) a b. Functor r => (a -> b) -> r a -> r 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 (Doc, VisibilityTag) (Doc, Terminator) MethodData where
docMain :: HdrState MethodState Doc -> HdrState MethodState MethodData
docMain = HdrState MethodState Doc -> HdrState MethodState MethodData
forall (r :: * -> *) vis smt md.
MethodSym r vis smt md =>
MS (r Doc) -> MS (r md)
mainFunction
function :: ClassName
-> CppHdrCode (Doc, VisibilityTag)
-> State ValueState (CppHdrCode TypeData)
-> [HdrState MethodState ParamData]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData
function = ClassName
-> CppHdrCode (Doc, VisibilityTag)
-> State ValueState (CppHdrCode TypeData)
-> [HdrState MethodState ParamData]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData
forall (r :: * -> *) att vis md.
(AttachmentSym r att, OORenderMethod r vis md att) =>
ClassName
-> r vis
-> VS (r TypeData)
-> [MS (r ParamData)]
-> MS (r Doc)
-> MS (r md)
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 :: ClassName
-> [ClassName]
-> Maybe ClassName
-> HdrState MethodState MethodData
-> HdrState MethodState MethodData
docFunc = ClassName
-> [ClassName]
-> Maybe ClassName
-> HdrState MethodState MethodData
-> HdrState MethodState MethodData
forall (r :: * -> *) md.
RenderMethod r md =>
ClassName
-> [ClassName] -> Maybe ClassName -> MS (r md) -> MS (r md)
CP.doxFunc
inOutFunc :: ClassName
-> CppHdrCode (Doc, VisibilityTag)
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData
inOutFunc ClassName
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 md.
(State ValueState (CppHdrCode TypeData)
-> [HdrState MethodState ParamData]
-> HdrState MethodState Doc
-> MS (CppHdrCode md))
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> HdrState MethodState Doc
-> MS (CppHdrCode md)
cpphInOut (ClassName
-> CppHdrCode (Doc, VisibilityTag)
-> State ValueState (CppHdrCode TypeData)
-> [HdrState MethodState ParamData]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData
forall (r :: * -> *) vis smt md.
MethodSym r vis smt md =>
ClassName
-> r vis
-> VS (r TypeData)
-> [MS (r ParamData)]
-> MS (r Doc)
-> MS (r md)
function ClassName
n CppHdrCode (Doc, VisibilityTag)
s)
docInOutFunc :: ClassName
-> CppHdrCode (Doc, VisibilityTag)
-> DocInOutFunc CppHdrCode MethodData
docInOutFunc ClassName
n CppHdrCode (Doc, VisibilityTag)
s = ([HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData)
-> DocInOutFunc CppHdrCode MethodData
forall (r :: * -> *) md.
RenderMethod r md =>
([SVariable r]
-> [SVariable r] -> [SVariable r] -> MS (r Doc) -> MS (r md))
-> ClassName
-> [(ClassName, SVariable r)]
-> [(ClassName, SVariable r)]
-> [(ClassName, SVariable r)]
-> MS (r Doc)
-> MS (r md)
CP.docInOutFunc (ClassName
-> CppHdrCode (Doc, VisibilityTag)
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData
forall (r :: * -> *) vis smt md.
MethodSym r vis smt md =>
ClassName -> r vis -> InOutFunc r md
inOutFunc ClassName
n CppHdrCode (Doc, VisibilityTag)
s)
instance OOMethodSym CppHdrCode (Doc, VisibilityTag) (Doc, Terminator) MethodData AttachmentData where
method :: ClassName
-> CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode AttachmentData
-> State ValueState (CppHdrCode TypeData)
-> [HdrState MethodState ParamData]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData
method = ClassName
-> CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode AttachmentData
-> State ValueState (CppHdrCode TypeData)
-> [HdrState MethodState ParamData]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData
forall (r :: * -> *) vis md att.
OORenderMethod r vis md att =>
ClassName
-> r vis
-> r att
-> VS (r TypeData)
-> [MS (r ParamData)]
-> MS (r Doc)
-> MS (r md)
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' -> ClassName
-> CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode AttachmentData
-> State ValueState (CppHdrCode TypeData)
-> [HdrState MethodState ParamData]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData
forall (r :: * -> *) vis smt md att.
OOMethodSym r vis smt md att =>
ClassName
-> r vis
-> r att
-> VS (r TypeData)
-> [MS (r ParamData)]
-> MS (r Doc)
-> MS (r md)
method (ClassName -> ClassName
getterName (ClassName -> ClassName) -> ClassName -> ClassName
forall a b. (a -> b) -> a -> b
$ CppHdrCode Variable -> ClassName
forall (r :: * -> *). VariableElim r => r Variable -> ClassName
variableName
CppHdrCode Variable
v') CppHdrCode (Doc, VisibilityTag)
forall (r :: * -> *) vis. VisibilitySym r vis => r vis
public CppHdrCode AttachmentData
forall (r :: * -> *) att. AttachmentSym r att => r att
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 (r :: * -> *). VariableElim r => r Variable -> r TypeData
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' -> ClassName
-> CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode AttachmentData
-> State ValueState (CppHdrCode TypeData)
-> [HdrState MethodState ParamData]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData
forall (r :: * -> *) vis smt md att.
OOMethodSym r vis smt md att =>
ClassName
-> r vis
-> r att
-> VS (r TypeData)
-> [MS (r ParamData)]
-> MS (r Doc)
-> MS (r md)
method (ClassName -> ClassName
setterName (ClassName -> ClassName) -> ClassName -> ClassName
forall a b. (a -> b) -> a -> b
$ CppHdrCode Variable -> ClassName
forall (r :: * -> *). VariableElim r => r Variable -> ClassName
variableName
CppHdrCode Variable
v') CppHdrCode (Doc, VisibilityTag)
forall (r :: * -> *) vis. VisibilitySym r vis => r vis
public CppHdrCode AttachmentData
forall (r :: * -> *) att. AttachmentSym r att => r att
instanceLevel State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void [HdrState ValueState Variable -> HdrState MethodState ParamData
forall (r :: * -> *).
ParameterSym r =>
SVariable r -> MS (r ParamData)
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 ClassName
getClassName StateT MethodState Identity ClassName
-> (ClassName -> 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
>>= (\ClassName
n -> ClassName
-> [HdrState MethodState ParamData]
-> [(HdrState ValueState Variable, HdrState ValueState Value)]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData
forall (r :: * -> *) vis smt md svr att.
(OORenderSym r vis smt md svr att, OOStatement r smt) =>
ClassName
-> [MS (r ParamData)] -> Initializers r -> MS (r Doc) -> MS (r md)
CP.constructor ClassName
n [HdrState MethodState ParamData]
ps [(HdrState ValueState Variable, HdrState ValueState Value)]
is HdrState MethodState Doc
b)
inOutMethod :: ClassName
-> CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode AttachmentData
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData
inOutMethod ClassName
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 md.
(State ValueState (CppHdrCode TypeData)
-> [HdrState MethodState ParamData]
-> HdrState MethodState Doc
-> MS (CppHdrCode md))
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> HdrState MethodState Doc
-> MS (CppHdrCode md)
cpphInOut (ClassName
-> CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode AttachmentData
-> State ValueState (CppHdrCode TypeData)
-> [HdrState MethodState ParamData]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData
forall (r :: * -> *) vis smt md att.
OOMethodSym r vis smt md att =>
ClassName
-> r vis
-> r att
-> VS (r TypeData)
-> [MS (r ParamData)]
-> MS (r Doc)
-> MS (r md)
method ClassName
n CppHdrCode (Doc, VisibilityTag)
s CppHdrCode AttachmentData
p)
docInOutMethod :: ClassName
-> CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode AttachmentData
-> DocInOutFunc CppHdrCode MethodData
docInOutMethod ClassName
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
forall (r :: * -> *) md.
RenderMethod r md =>
([SVariable r]
-> [SVariable r] -> [SVariable r] -> MS (r Doc) -> MS (r md))
-> ClassName
-> [(ClassName, SVariable r)]
-> [(ClassName, SVariable r)]
-> [(ClassName, SVariable r)]
-> MS (r Doc)
-> MS (r md)
CP.docInOutFunc (ClassName
-> CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode AttachmentData
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData
forall (r :: * -> *) vis smt md att.
OOMethodSym r vis smt md att =>
ClassName -> r vis -> r att -> InOutFunc r md
inOutMethod ClassName
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 (Doc, VisibilityTag) MethodData AttachmentData where
intMethod :: Bool
-> ClassName
-> CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode AttachmentData
-> HdrState MethodState TypeData
-> [HdrState MethodState ParamData]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData
intMethod Bool
_ ClassName
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))
CppHdrCode TypeData
tp <- HdrState MethodState TypeData
t
[CppHdrCode ParamData]
pms <- [HdrState MethodState ParamData]
-> StateT MethodState Identity [CppHdrCode 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 [HdrState MethodState ParamData]
ps
CppHdrCode MethodData -> HdrState MethodState MethodData
forall a. a -> StateT MethodState Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (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 ((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) (Doc -> MethodData) -> Doc -> MethodData
forall a b. (a -> b) -> a -> b
$ ClassName
-> CppHdrCode TypeData
-> CppHdrCode AttachmentData
-> [CppHdrCode ParamData]
-> Doc
cpphMethod ClassName
n CppHdrCode TypeData
tp CppHdrCode AttachmentData
a [CppHdrCode ParamData]
pms
intFunc :: Bool
-> ClassName
-> CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode AttachmentData
-> HdrState MethodState TypeData
-> [HdrState MethodState ParamData]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData
intFunc Bool
_ = ClassName
-> CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode AttachmentData
-> HdrState MethodState TypeData
-> [HdrState MethodState ParamData]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData
forall att.
ClassName
-> CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode att
-> HdrState MethodState TypeData
-> [HdrState MethodState ParamData]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData
cpphIntFunc
destructor :: forall svr.
[CSStateVar CppHdrCode svr] -> HdrState MethodState MethodData
destructor = ClassName
-> [CSStateVar CppHdrCode svr] -> HdrState MethodState MethodData
forall a. HasCallStack => ClassName -> a
error (ClassName
-> [CSStateVar CppHdrCode svr] -> HdrState MethodState MethodData)
-> ClassName
-> [CSStateVar CppHdrCode svr]
-> HdrState MethodState MethodData
forall a b. (a -> b) -> a -> b
$ ClassName -> ClassName
CP.destructorError ClassName
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 (Doc, VisibilityTag) StateVarData AttachmentData 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
CppHdrCode (Doc, Terminator)
dec <- LensLike'
(Zoomed
(StateT MethodState Identity) (CppHdrCode (Doc, Terminator)))
ClassState
MethodState
-> HdrState MethodState (Doc, Terminator)
-> StateT ClassState Identity (CppHdrCode (Doc, Terminator))
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 (Doc, Terminator)))
ClassState
MethodState
(MethodState
-> Focusing Identity (CppHdrCode (Doc, Terminator)) MethodState)
-> ClassState
-> Focusing Identity (CppHdrCode (Doc, Terminator)) ClassState
Lens' ClassState MethodState
lensCStoMS (HdrState MethodState (Doc, Terminator)
-> StateT ClassState Identity (CppHdrCode (Doc, Terminator)))
-> HdrState MethodState (Doc, Terminator)
-> StateT ClassState Identity (CppHdrCode (Doc, Terminator))
forall a b. (a -> b) -> a -> b
$ HdrState MethodState (Doc, Terminator)
-> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
RenderStatement r smt =>
MS (r smt) -> MS (r smt)
stmt (HdrState MethodState (Doc, Terminator)
-> HdrState MethodState (Doc, Terminator))
-> HdrState MethodState (Doc, Terminator)
-> HdrState MethodState (Doc, Terminator)
forall a b. (a -> b) -> a -> b
$ CppHdrCode AttachmentData
-> CppHdrCode AttachmentData
-> Doc
-> HdrState ValueState Variable
-> CppHdrCode ScopeData
-> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) att smt.
(InternalVarElim r, PermElim r att, RenderStatement r smt,
ScopeElim r, UnRepr r TypeData, TypeElim r, VariableElim r) =>
r att -> r att -> Doc -> SVariable r -> r ScopeData -> MS (r smt)
C.varDec CppHdrCode AttachmentData
forall (r :: * -> *) att. AttachmentSym r att => r att
classLevel CppHdrCode AttachmentData
forall (r :: * -> *) att. AttachmentSym r att => r att
instanceLevel Doc
empty HdrState ValueState Variable
v CppHdrCode ScopeData
forall (r :: * -> *). ScopeSym r => r ScopeData
local
CppHdrCode StateVarData -> HdrState ClassState StateVarData
forall a. a -> StateT ClassState Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (CppHdrCode StateVarData -> HdrState ClassState StateVarData)
-> CppHdrCode StateVarData -> HdrState ClassState StateVarData
forall a b. (a -> b) -> a -> b
$ (VisibilityTag -> Doc -> StateVarData)
-> CppHdrCode VisibilityTag
-> CppHdrCode Doc
-> CppHdrCode StateVarData
forall (r :: * -> *) a b c.
Applicative r =>
(a -> b -> c) -> r a -> r b -> r c
on2CodeValues VisibilityTag -> Doc -> StateVarData
svd (((Doc, VisibilityTag) -> VisibilityTag)
-> CppHdrCode (Doc, VisibilityTag) -> CppHdrCode VisibilityTag
forall (r :: * -> *) a b. Functor r => (a -> b) -> r a -> r b
onCodeValue (Doc, VisibilityTag) -> VisibilityTag
forall a b. (a, b) -> b
snd CppHdrCode (Doc, VisibilityTag)
s)
(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 -> Doc -> Doc -> Doc
R.stateVar Doc
empty (CppHdrCode AttachmentData -> Doc
forall (r :: * -> *) att. PermElim r att => r att -> Doc
RC.perm CppHdrCode AttachmentData
p) (CppHdrCode (Doc, Terminator) -> Doc
forall (r :: * -> *) smt. StatementElim r smt => r smt -> Doc
RC.statement CppHdrCode (Doc, Terminator)
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
Doc
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
CppHdrCode StateVarData -> HdrState ClassState StateVarData
forall a. a -> StateT ClassState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CppHdrCode StateVarData -> HdrState ClassState StateVarData)
-> CppHdrCode StateVarData -> HdrState ClassState StateVarData
forall a b. (a -> b) -> a -> b
$ StateVarData -> CppHdrCode StateVarData
forall a. a -> CppHdrCode a
forall (m :: * -> *) a. Monad m => a -> m a
return (StateVarData -> CppHdrCode StateVarData)
-> StateVarData -> CppHdrCode StateVarData
forall a b. (a -> b) -> a -> b
$ VisibilityTag -> Doc -> StateVarData
svd ((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) Doc
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
CppHdrCode Variable
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
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 (r :: * -> *) att. AttachmentSym r att => r att
classLevel)) (CppHdrCode Variable -> Variable
forall a. CppHdrCode a -> a
unCPPHC CppHdrCode Variable
vr')
CppHdrCode StateVarData -> HdrState ClassState StateVarData
forall a. a -> StateT ClassState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CppHdrCode StateVarData -> HdrState ClassState StateVarData)
-> CppHdrCode StateVarData -> HdrState ClassState StateVarData
forall a b. (a -> b) -> a -> b
$ StateVarData -> CppHdrCode StateVarData
forall a. a -> CppHdrCode a
forall (m :: * -> *) a. Monad m => a -> m a
return (StateVarData -> CppHdrCode StateVarData)
-> StateVarData -> CppHdrCode StateVarData
forall a b. (a -> b) -> a -> b
$ VisibilityTag -> Doc -> StateVarData
svd ((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) Doc
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 (Doc, VisibilityTag) (Doc, Terminator) MethodData StateVarData AttachmentData where
buildClass :: Maybe ClassName
-> [HdrState ClassState StateVarData]
-> [HdrState MethodState MethodData]
-> [HdrState MethodState MethodData]
-> HdrState ClassState Doc
buildClass = Maybe ClassName
-> [HdrState ClassState StateVarData]
-> [HdrState MethodState MethodData]
-> [HdrState MethodState MethodData]
-> HdrState ClassState Doc
forall (r :: * -> *) vis md svr.
(RenderClass r vis md svr, VisibilitySym r vis) =>
Maybe ClassName
-> [CSStateVar r svr] -> [MS (r md)] -> [MS (r md)] -> CS (r Doc)
G.buildClass
extraClass :: ClassName
-> Maybe ClassName
-> [HdrState ClassState StateVarData]
-> [HdrState MethodState MethodData]
-> [HdrState MethodState MethodData]
-> HdrState ClassState Doc
extraClass = ClassName
-> Maybe ClassName
-> [HdrState ClassState StateVarData]
-> [HdrState MethodState MethodData]
-> [HdrState MethodState MethodData]
-> HdrState ClassState Doc
forall (r :: * -> *) vis md svr.
(RenderClass r vis md svr, VisibilitySym r vis) =>
ClassName
-> Maybe ClassName
-> [CSStateVar r svr]
-> [MS (r md)]
-> [MS (r md)]
-> CS (r Doc)
CP.extraClass
implementingClass :: ClassName
-> [ClassName]
-> [HdrState ClassState StateVarData]
-> [HdrState MethodState MethodData]
-> [HdrState MethodState MethodData]
-> HdrState ClassState Doc
implementingClass = ClassName
-> [ClassName]
-> [HdrState ClassState StateVarData]
-> [HdrState MethodState MethodData]
-> [HdrState MethodState MethodData]
-> HdrState ClassState Doc
forall (r :: * -> *) vis md svr.
(RenderClass r vis md svr, VisibilitySym r vis) =>
ClassName
-> [ClassName]
-> [CSStateVar r svr]
-> [MS (r md)]
-> [MS (r md)]
-> CS (r Doc)
G.implementingClass
docClass :: ClassName -> HdrState ClassState Doc -> HdrState ClassState Doc
docClass = ClassName -> HdrState ClassState Doc -> HdrState ClassState Doc
forall (r :: * -> *) vis md svr.
RenderClass r vis md svr =>
ClassName -> CS (r Doc) -> CS (r Doc)
CP.doxClass
instance RenderClass CppHdrCode (Doc, VisibilityTag) MethodData StateVarData where
intClass :: ClassName
-> CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode Doc
-> [HdrState ClassState StateVarData]
-> [HdrState MethodState MethodData]
-> [HdrState MethodState MethodData]
-> HdrState ClassState Doc
intClass ClassName
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 (ClassName -> ClassState -> ClassState
setClassName ClassName
n)
[CppHdrCode StateVarData]
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
[CppHdrCode MethodData]
funcs <- [StateT ClassState Identity (CppHdrCode MethodData)]
-> StateT ClassState Identity [CppHdrCode MethodData]
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
forall (m :: * -> *) a. Monad m => [m a] -> m [a]
sequence [StateT ClassState Identity (CppHdrCode MethodData)]
fs
CppHdrCode Doc -> HdrState ClassState Doc
forall a. a -> StateT ClassState Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (CppHdrCode Doc -> HdrState ClassState Doc)
-> CppHdrCode Doc -> HdrState ClassState Doc
forall a b. (a -> b) -> a -> b
$ ClassName
-> CppHdrCode Doc
-> [CppHdrCode StateVarData]
-> [CppHdrCode MethodData]
-> CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode Doc
cpphClass ClassName
n CppHdrCode Doc
i [CppHdrCode StateVarData]
vars [CppHdrCode MethodData]
funcs CppHdrCode (Doc, VisibilityTag)
forall (r :: * -> *) vis. VisibilitySym r vis => r vis
public CppHdrCode (Doc, VisibilityTag)
forall (r :: * -> *) vis. VisibilitySym r vis => r vis
private
where fs :: [StateT ClassState Identity (CppHdrCode MethodData)]
fs = (HdrState MethodState MethodData
-> StateT ClassState Identity (CppHdrCode MethodData))
-> [HdrState MethodState MethodData]
-> [StateT ClassState Identity (CppHdrCode MethodData)]
forall a b. (a -> b) -> [a] -> [b]
map (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 a b. (a -> b) -> a -> b
$ [HdrState MethodState MethodData]
cstrs [HdrState MethodState MethodData]
-> [HdrState MethodState MethodData]
-> [HdrState MethodState MethodData]
forall a. [a] -> [a] -> [a]
++ [HdrState MethodState MethodData]
mths
inherit :: Maybe ClassName -> CppHdrCode Doc
inherit Maybe ClassName
n = ((Doc, VisibilityTag) -> Doc)
-> CppHdrCode (Doc, VisibilityTag) -> CppHdrCode Doc
forall (r :: * -> *) a b. Functor r => (a -> b) -> r a -> r b
onCodeValue (Maybe ClassName -> Doc -> Doc
cppInherit Maybe ClassName
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 (r :: * -> *) vis. VisibilitySym r vis => r vis
public
implements :: [ClassName] -> CppHdrCode Doc
implements [ClassName]
is = ((Doc, VisibilityTag) -> Doc)
-> CppHdrCode (Doc, VisibilityTag) -> CppHdrCode Doc
forall (r :: * -> *) a b. Functor r => (a -> b) -> r a -> r b
onCodeValue ((\Doc
p -> Doc
colon Doc -> Doc -> Doc
<+> [Doc] -> Doc
hcat ((ClassName -> Doc) -> [ClassName] -> [Doc]
forall a b. (a -> b) -> [a] -> [b]
map ((Doc
p <+>) (Doc -> Doc) -> (ClassName -> Doc) -> ClassName -> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ClassName -> Doc
text) [ClassName]
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 (r :: * -> *) vis. 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 :: * -> *).
(BlockCommentElim r, ClassElim r, Monad r) =>
CS (r Doc) -> CS (r Doc) -> CS (r Doc)
G.commentedClass
instance ClassElim CppHdrCode where
class' :: CppHdrCode Doc -> Doc
class' = CppHdrCode Doc -> Doc
forall a. CppHdrCode a -> a
unCPPHC
instance ModuleSym CppHdrCode (Doc, VisibilityTag) (Doc, Terminator) MethodData StateVarData AttachmentData where
buildModule :: ClassName
-> [ClassName]
-> [HdrState MethodState MethodData]
-> [HdrState ClassState Doc]
-> HdrState FileState Module
buildModule ClassName
n [ClassName]
is = ClassName
-> FS Doc
-> FS Doc
-> FS Doc
-> [HdrState MethodState MethodData]
-> [HdrState ClassState Doc]
-> HdrState FileState Module
forall (r :: * -> *) md.
(ClassElim r, MethodElim r md, RenderMod r) =>
ClassName
-> FS Doc
-> FS Doc
-> FS Doc
-> [MS (r md)]
-> [CS (r Doc)]
-> FS (r Module)
CP.buildModule ClassName
n (do
[ClassName]
ds <- FS [ClassName]
getHeaderDefines
[ClassName]
lis <- FS [ClassName]
getHeaderLangImports
[ClassName]
libis <- FS [ClassName]
getHeaderLibImports
[ClassName]
mis <- FS [ClassName]
getHeaderModImports
[ClassName]
us <- FS [ClassName]
getHeaderUsing
Doc -> FS Doc
forall a. a -> StateT FileState Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Doc -> FS Doc) -> Doc -> FS Doc
forall a b. (a -> b) -> a -> b
$ [Doc] -> Doc
vibcat [
[Doc] -> Doc
vcat ((ClassName -> Doc) -> [ClassName] -> [Doc]
forall a b. (a -> b) -> [a] -> [b]
map ((Doc
define <+>) (Doc -> Doc) -> (ClassName -> Doc) -> ClassName -> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ClassName -> Doc
text) [ClassName]
ds),
[Doc] -> Doc
vcat ((ClassName -> Doc) -> [ClassName] -> [Doc]
forall a b. (a -> b) -> [a] -> [b]
map (CppHdrCode Doc -> Doc
forall (r :: * -> *). UnRepr r Doc => r Doc -> Doc
RC.import' (CppHdrCode Doc -> Doc)
-> (ClassName -> CppHdrCode Doc) -> ClassName -> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ClassName -> CppHdrCode Doc
li) [ClassName]
lis),
[Doc] -> Doc
vcat ((ClassName -> Doc) -> [ClassName] -> [Doc]
forall a b. (a -> b) -> [a] -> [b]
map (CppHdrCode Doc -> Doc
forall (r :: * -> *). UnRepr r Doc => r Doc -> Doc
RC.import' (CppHdrCode Doc -> Doc)
-> (ClassName -> CppHdrCode Doc) -> ClassName -> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ClassName -> CppHdrCode Doc
mi) ([ClassName] -> [ClassName]
forall a. Ord a => [a] -> [a]
sort ([ClassName]
is [ClassName] -> [ClassName] -> [ClassName]
forall a. [a] -> [a] -> [a]
++ [ClassName]
libis) [ClassName] -> [ClassName] -> [ClassName]
forall a. [a] -> [a] -> [a]
++ [ClassName]
mis)),
[Doc] -> Doc
vcat ((ClassName -> Doc) -> [ClassName] -> [Doc]
forall a b. (a -> b) -> [a] -> [b]
map (ClassName -> Maybe ClassName -> Doc
usingNameSpace ClassName
std (Maybe ClassName -> Doc)
-> (ClassName -> Maybe ClassName) -> ClassName -> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ClassName -> Maybe ClassName
forall a. a -> Maybe a
Just) [ClassName]
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 :: ClassName -> CppHdrCode Doc
mi = ClassName -> CppHdrCode Doc
forall (r :: * -> *). ImportSym r => ClassName -> r Doc
modImport
li :: ClassName -> CppHdrCode Doc
li = ClassName -> CppHdrCode Doc
forall (r :: * -> *). ImportSym r => ClassName -> r Doc
langImport
instance RenderMod CppHdrCode where
modFromData :: ClassName -> FS Doc -> HdrState FileState Module
modFromData ClassName
n = ClassName
-> (Doc -> CppHdrCode Module)
-> FS Doc
-> HdrState FileState Module
forall (r :: * -> *).
ClassName -> (Doc -> r Module) -> FS Doc -> FS (r Module)
G.modFromData ClassName
n (Module -> CppHdrCode Module
forall (r :: * -> *) a. Monad r => a -> r a
toCode (Module -> CppHdrCode Module)
-> (Doc -> Module) -> Doc -> CppHdrCode Module
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ClassName -> Doc -> Module
md ClassName
n)
updateModuleDoc :: (Doc -> Doc) -> CppHdrCode Module -> CppHdrCode Module
updateModuleDoc Doc -> Doc
f = (Module -> Module) -> CppHdrCode Module -> CppHdrCode Module
forall (r :: * -> *) a b. Functor r => (a -> b) -> r a -> r b
onCodeValue ((Doc -> Doc) -> Module -> Module
updateMod Doc -> Doc
f)
instance ModuleElim CppHdrCode where
module' :: CppHdrCode Module -> Doc
module' = Module -> Doc
modDoc (Module -> Doc)
-> (CppHdrCode Module -> Module) -> CppHdrCode Module -> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppHdrCode Module -> Module
forall a. CppHdrCode a -> a
unCPPHC
instance BlockCommentSym CppHdrCode where
blockComment :: [ClassName] -> CppHdrCode Doc
blockComment [ClassName]
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
$ [ClassName] -> Doc -> Doc -> Doc
R.blockCmt [ClassName]
lns Doc
blockCmtStart Doc
blockCmtEnd
docComment :: forall a. State a [ClassName] -> State a (CppHdrCode Doc)
docComment = ([ClassName] -> CppHdrCode Doc)
-> State a [ClassName] -> State a (CppHdrCode Doc)
forall a b s. (a -> b) -> State s a -> State s b
onStateValue (\[ClassName]
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
$ [ClassName] -> Doc -> Doc -> Doc
R.docCmt [ClassName]
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 :: ClassName -> Bool
isDtor (Char
'~':ClassName
_) = Bool
True
isDtor ClassName
_ = Bool
False
getParam
:: (ParameterSym r, TypeElim r, VariableElim r)
=> SVariable r -> MS (r ParamData)
getParam :: forall (r :: * -> *).
(ParameterSym r, TypeElim r, VariableElim r) =>
SVariable r -> MS (r ParamData)
getParam SVariable r
v = LensLike'
(Zoomed (StateT ValueState Identity) (r Variable))
MethodState
ValueState
-> SVariable r -> StateT MethodState Identity (r 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) (r Variable))
MethodState
ValueState
(ValueState -> Focusing Identity (r Variable) ValueState)
-> MethodState -> Focusing Identity (r Variable) MethodState
Lens' MethodState ValueState
lensMStoVS SVariable r
v StateT MethodState Identity (r Variable)
-> (r Variable -> StateT MethodState Identity (r ParamData))
-> StateT MethodState Identity (r ParamData)
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 Variable
v' -> CodeType
-> SVariable r -> StateT MethodState Identity (r ParamData)
forall {r :: * -> *}.
ParameterSym r =>
CodeType -> SVariable r -> MS (r ParamData)
getParamFunc ((r TypeData -> CodeType
forall (r :: * -> *). TypeElim r => r TypeData -> CodeType
getCodeType (r TypeData -> CodeType)
-> (r Variable -> r TypeData) -> r Variable -> CodeType
forall b c a. (b -> c) -> (a -> b) -> a -> c
.
r Variable -> r TypeData
forall (r :: * -> *). VariableElim r => r Variable -> r TypeData
variableType) r Variable
v') SVariable r
v)
where getParamFunc :: CodeType -> SVariable r -> MS (r ParamData)
getParamFunc (List CodeType
_) = SVariable r -> MS (r ParamData)
forall (r :: * -> *).
ParameterSym r =>
SVariable r -> MS (r ParamData)
pointerParam
getParamFunc (Object ClassName
_) = SVariable r -> MS (r ParamData)
forall (r :: * -> *).
ParameterSym r =>
SVariable r -> MS (r ParamData)
pointerParam
getParamFunc CodeType
_ = SVariable r -> MS (r ParamData)
forall (r :: * -> *).
ParameterSym r =>
SVariable r -> MS (r ParamData)
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 (ClassName -> MethodState -> MethodState
addLangImport ClassName
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 (ClassName -> ValueState -> ValueState
addLangImportVS ClassName
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 (ClassName -> ValueState -> ValueState
addLangImportVS ClassName
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 (ClassName -> ValueState -> ValueState
addLangImportVS ClassName
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 (ClassName -> ValueState -> ValueState
addLangImportVS ClassName
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 (ClassName -> MethodState -> MethodState
addLangImport ClassName
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 (ClassName -> MethodState -> MethodState
addLangImport ClassName
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 (ClassName -> ValueState -> ValueState
addLangImportVS ClassName
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 (r :: * -> *).
TypeSym r =>
VS (r TypeData) -> VS (r TypeData)
listType State ValueState (CppSrcCode TypeData)
t
iterBegin :: SValue CppSrcCode -> SValue CppSrcCode
iterBegin :: SrcState ValueState Value -> SrcState ValueState Value
iterBegin SrcState ValueState Value
v = SrcState ValueState Value
v SrcState ValueState Value
-> SrcState ValueState FuncData -> SrcState ValueState Value
forall (r :: * -> *).
OOFunctionSym r =>
SValue r -> VS (r FuncData) -> SValue r
$. State ValueState (CppSrcCode TypeData)
-> SrcState ValueState FuncData
cppIterBeginFunc (State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData)
forall (r :: * -> *).
TypeSym r =>
VS (r TypeData) -> VS (r TypeData)
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)
-> SrcState ValueState Value
-> State ValueState (CppSrcCode TypeData)
forall a b s. (a -> b) -> State s a -> State s b
onStateValue CppSrcCode Value -> CppSrcCode TypeData
forall (r :: * -> *). ValueSym r => r Value -> r TypeData
valueType SrcState ValueState Value
v)
iterEnd :: SValue CppSrcCode -> SValue CppSrcCode
iterEnd :: SrcState ValueState Value -> SrcState ValueState Value
iterEnd SrcState ValueState Value
v = SrcState ValueState Value
v SrcState ValueState Value
-> SrcState ValueState FuncData -> SrcState ValueState Value
forall (r :: * -> *).
OOFunctionSym r =>
SValue r -> VS (r FuncData) -> SValue r
$. State ValueState (CppSrcCode TypeData)
-> SrcState ValueState FuncData
cppIterEndFunc (State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData)
forall (r :: * -> *).
TypeSym r =>
VS (r TypeData) -> VS (r TypeData)
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)
-> SrcState ValueState Value
-> State ValueState (CppSrcCode TypeData)
forall a b s. (a -> b) -> State s a -> State s b
onStateValue CppSrcCode Value -> CppSrcCode TypeData
forall (r :: * -> *). ValueSym r => r Value -> r TypeData
valueType SrcState ValueState Value
v)
arrayDecBase :: SVariable CppSrcCode -> CppSrcCode ScopeData -> MS Doc
arrayDecBase :: SrcState ValueState Variable -> CppSrcCode ScopeData -> MS Doc
arrayDecBase SrcState ValueState Variable
vr CppSrcCode ScopeData
scp = do
CppSrcCode Variable
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
(MethodState -> MethodState) -> StateT MethodState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify ((MethodState -> MethodState) -> StateT MethodState Identity ())
-> (MethodState -> MethodState) -> StateT MethodState Identity ()
forall a b. (a -> b) -> a -> b
$ ClassName -> MethodState -> MethodState
useVarName (ClassName -> MethodState -> MethodState)
-> ClassName -> MethodState -> MethodState
forall a b. (a -> b) -> a -> b
$ CppSrcCode Variable -> ClassName
forall (r :: * -> *). VariableElim r => r Variable -> ClassName
variableName CppSrcCode Variable
vr'
(MethodState -> MethodState) -> StateT MethodState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify ((MethodState -> MethodState) -> StateT MethodState Identity ())
-> (MethodState -> MethodState) -> StateT MethodState Identity ()
forall a b. (a -> b) -> a -> b
$ ClassName -> ScopeData -> MethodState -> MethodState
setVarScope (CppSrcCode Variable -> ClassName
forall (r :: * -> *). VariableElim r => r Variable -> ClassName
variableName CppSrcCode Variable
vr') (CppSrcCode ScopeData -> ScopeData
forall (r :: * -> *). ScopeElim r => r ScopeData -> ScopeData
scopeData CppSrcCode ScopeData
scp)
Doc -> MS Doc
forall a. a -> StateT MethodState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (Doc -> MS Doc) -> Doc -> MS Doc
forall a b. (a -> b) -> a -> b
$ CppSrcCode TypeData -> Doc
forall (r :: * -> *). UnRepr r TypeData => r TypeData -> Doc
renderType (CppSrcCode Variable -> CppSrcCode TypeData
forall (r :: * -> *). VariableElim r => r Variable -> r TypeData
variableType CppSrcCode Variable
vr') Doc -> Doc -> Doc
<+> CppSrcCode Variable -> Doc
forall (r :: * -> *). InternalVarElim r => r Variable -> Doc
RC.variable CppSrcCode Variable
vr'
cppReferenceType :: (Monad r, TypeElim r, UnRepr r TypeData) =>
VS (r TypeData) -> VS (r TypeData)
cppReferenceType :: forall (r :: * -> *).
(Monad r, TypeElim r, UnRepr r TypeData) =>
VS (r TypeData) -> VS (r TypeData)
cppReferenceType VS (r TypeData)
t = do
r TypeData
t' <- VS (r TypeData)
t
CodeType -> ClassName -> Doc -> VS (r TypeData)
forall (r :: * -> *).
Monad r =>
CodeType -> ClassName -> Doc -> VS (r TypeData)
typeFromData (CodeType -> CodeType
Reference (r TypeData -> CodeType
forall (r :: * -> *). TypeElim r => r TypeData -> CodeType
getCodeType r TypeData
t')) (r TypeData -> ClassName
forall (r :: * -> *). UnRepr r TypeData => r TypeData -> ClassName
getTypeString r TypeData
t' ClassName -> ClassName -> ClassName
forall a. [a] -> [a] -> [a]
++ ClassName
cppDeref') (r TypeData -> Doc
forall (r :: * -> *). UnRepr r TypeData => r TypeData -> Doc
renderType r TypeData
t' Doc -> Doc -> Doc
<> Doc
cppDeref)
cppName, cppVersion :: String
cppName :: ClassName
cppName = ClassName
"C++"
cppVersion :: ClassName
cppVersion = ClassName
"gcc 10.1"
guard, inc, ifndef, define, defineSuffix, endif, using, namespace, cppPtr,
cppDeref, streamL, streamR, cppLambdaDec, catchAll, cppPi,
ptrAccess' :: Doc
guard :: Doc
guard = ClassName -> Doc
text ClassName
"#"
inc :: Doc
inc = Doc
guard Doc -> Doc -> Doc
<> ClassName -> Doc
text ClassName
"include"
ifndef :: Doc
ifndef = Doc
guard Doc -> Doc -> Doc
<> ClassName -> Doc
text ClassName
"ifndef"
define :: Doc
define = Doc
guard Doc -> Doc -> Doc
<> ClassName -> Doc
text ClassName
"define"
defineSuffix :: Doc
defineSuffix = ClassName -> Doc
text ClassName
"_h"
endif :: Doc
endif = Doc
guard Doc -> Doc -> Doc
<> ClassName -> Doc
text ClassName
"endif"
using :: Doc
using = ClassName -> Doc
text ClassName
"using"
namespace :: Doc
namespace = ClassName -> Doc
text ClassName
"namespace"
cppPtr :: Doc
cppPtr = ClassName -> Doc
text ClassName
"&"
cppDeref :: Doc
cppDeref = ClassName -> Doc
text ClassName
cppDeref'
streamL :: Doc
streamL = ClassName -> Doc
text ClassName
"<<"
streamR :: Doc
streamR = ClassName -> Doc
text ClassName
">>"
cppLambdaDec :: Doc
cppLambdaDec = ClassName -> Doc
text ClassName
"[]"
catchAll :: Doc
catchAll = ClassName -> Doc
text ClassName
"..."
cppPi :: Doc
cppPi = ClassName -> Doc
text ClassName
"M_PI"
ptrAccess' :: Doc
ptrAccess' = ClassName -> Doc
text ClassName
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 :: ClassName
nmSpc = ClassName
"::"
ptrAccess :: ClassName
ptrAccess = ClassName
"->"
cppFor :: ClassName
cppFor = ClassName
"for"
std :: ClassName
std = ClassName
"std"
algorithm :: ClassName
algorithm = ClassName
"algorithm"
cppString :: ClassName
cppString = ClassName
"string"
vector :: ClassName
vector = ClassName
"vector"
fstream :: ClassName
fstream = ClassName
"fstream"
iostream :: ClassName
iostream = ClassName
"iostream"
sstream :: ClassName
sstream = ClassName
"sstream"
stringstream :: ClassName
stringstream = ClassName -> ClassName
stdAccess ClassName
"stringstream"
limits :: ClassName
limits = ClassName
"limits"
mathh :: ClassName
mathh = ClassName
"math.h"
cassert :: ClassName
cassert = ClassName
"cassert"
cppBool :: ClassName
cppBool = ClassName
"bool"
cppInfile :: ClassName
cppInfile = ClassName
"ifstream"
cppOutfile :: ClassName
cppOutfile = ClassName
"ofstream"
cppIterator :: ClassName
cppIterator = ClassName
"iterator"
cppOpen :: ClassName
cppOpen = ClassName
"open"
stod :: ClassName
stod = ClassName -> ClassName
stdAccess ClassName
"stod"
stof :: ClassName
stof = ClassName -> ClassName
stdAccess ClassName
"stof"
cppIgnore :: ClassName
cppIgnore = ClassName
"ignore"
numLimits :: ClassName
numLimits = ClassName -> ClassName
stdAccess ClassName
"numeric_limits"
streamsize :: ClassName
streamsize = ClassName -> ClassName
stdAccess ClassName
"streamsize"
max :: ClassName
max = ClassName
"max"
endl :: ClassName
endl = ClassName -> ClassName
stdAccess ClassName
"endl"
cin :: ClassName
cin = ClassName -> ClassName
stdAccess ClassName
"cin"
cout :: ClassName
cout = ClassName -> ClassName
stdAccess ClassName
"cout"
cppIndex :: ClassName
cppIndex= ClassName
"find"
cppListAccess :: ClassName
cppListAccess = ClassName
"at"
cppListAdd :: ClassName
cppListAdd = ClassName
"insert"
cppListRemove :: ClassName
cppListRemove = ClassName
"erase"
cppListAppend :: ClassName
cppListAppend = ClassName
"push_back"
cppIterBegin :: ClassName
cppIterBegin = ClassName
"begin"
cppIterEnd :: ClassName
cppIterEnd = ClassName
"end"
cppR :: ClassName
cppR = ClassName -> ClassName
stdAccess (ClassName
fstream ClassName -> ClassName -> ClassName
`nmSpcAccess` ClassName
"in")
cppW :: ClassName
cppW = ClassName -> ClassName
stdAccess (ClassName
fstream ClassName -> ClassName -> ClassName
`nmSpcAccess` ClassName
"out")
cppA :: ClassName
cppA = ClassName -> ClassName
stdAccess (ClassName
fstream ClassName -> ClassName -> ClassName
`nmSpcAccess` ClassName
"app")
cppGetLine :: ClassName
cppGetLine = ClassName -> ClassName
stdAccess ClassName
"getline"
cppClose :: ClassName
cppClose = ClassName
"close"
cppClear :: ClassName
cppClear = ClassName
"clear"
cppStr :: ClassName
cppStr = ClassName
"str"
mathDefines :: ClassName
mathDefines = ClassName
"_USE_MATH_DEFINES"
cppSet :: ClassName
cppSet = ClassName
"set"
cppIn :: ClassName
cppIn = ClassName
":"
cppConst :: ClassName
cppConst = ClassName
"const"
cppDeref' :: ClassName
cppDeref' = ClassName
"*"
nmSpcAccess :: String -> String -> String
nmSpcAccess :: ClassName -> ClassName -> ClassName
nmSpcAccess ClassName
ns ClassName
e = ClassName
ns ClassName -> ClassName -> ClassName
forall a. [a] -> [a] -> [a]
++ ClassName
nmSpc ClassName -> ClassName -> ClassName
forall a. [a] -> [a] -> [a]
++ ClassName
e
nmSpcAccess' :: Doc -> Doc -> Doc
nmSpcAccess' :: Doc -> Doc -> Doc
nmSpcAccess' Doc
ns Doc
e = Doc
ns Doc -> Doc -> Doc
<> ClassName -> Doc
text ClassName
nmSpc Doc -> Doc -> Doc
<> Doc
e
stdAccess :: String -> String
stdAccess :: ClassName -> ClassName
stdAccess = ClassName -> ClassName -> ClassName
nmSpcAccess ClassName
std
stdAccess' :: Doc -> Doc
stdAccess' :: Doc -> Doc
stdAccess' = Doc -> Doc -> Doc
nmSpcAccess' (ClassName -> Doc
text ClassName
std)
mainDesc, argcDesc, argvDesc, mainReturnDesc :: String
mainDesc :: ClassName
mainDesc = ClassName
"Controls the flow of the program"
argcDesc :: ClassName
argcDesc = ClassName
"Number of command-line arguments"
argvDesc :: ClassName
argvDesc = ClassName
"List of command-line arguments"
mainReturnDesc :: ClassName
mainReturnDesc = ClassName
"exit code"
cppSqrtOp :: (Monad r) => VSOp r
cppSqrtOp :: forall (r :: * -> *). Monad r => VSOp r
cppSqrtOp = ClassName -> VSOp r
forall (r :: * -> *). Monad r => ClassName -> VSOp r
cppUnaryMath ClassName
R.sqrt
cppAbsOp :: (Monad r) => VSOp r
cppAbsOp :: forall (r :: * -> *). Monad r => VSOp r
cppAbsOp = ClassName -> VSOp r
forall (r :: * -> *). Monad r => ClassName -> VSOp r
cppUnaryMath ClassName
R.fabs
cppLogOp :: (Monad r) => VSOp r
cppLogOp :: forall (r :: * -> *). Monad r => VSOp r
cppLogOp = ClassName -> VSOp r
forall (r :: * -> *). Monad r => ClassName -> VSOp r
cppUnaryMath ClassName
R.log10
cppLnOp :: (Monad r) => VSOp r
cppLnOp :: forall (r :: * -> *). Monad r => VSOp r
cppLnOp = ClassName -> VSOp r
forall (r :: * -> *). Monad r => ClassName -> VSOp r
cppUnaryMath ClassName
R.log
cppExpOp :: (Monad r) => VSOp r
cppExpOp :: forall (r :: * -> *). Monad r => VSOp r
cppExpOp = ClassName -> VSOp r
forall (r :: * -> *). Monad r => ClassName -> VSOp r
cppUnaryMath ClassName
R.exp
cppSinOp :: (Monad r) => VSOp r
cppSinOp :: forall (r :: * -> *). Monad r => VSOp r
cppSinOp = ClassName -> VSOp r
forall (r :: * -> *). Monad r => ClassName -> VSOp r
cppUnaryMath ClassName
R.sin
cppCosOp :: (Monad r) => VSOp r
cppCosOp :: forall (r :: * -> *). Monad r => VSOp r
cppCosOp = ClassName -> VSOp r
forall (r :: * -> *). Monad r => ClassName -> VSOp r
cppUnaryMath ClassName
R.cos
cppTanOp :: (Monad r) => VSOp r
cppTanOp :: forall (r :: * -> *). Monad r => VSOp r
cppTanOp = ClassName -> VSOp r
forall (r :: * -> *). Monad r => ClassName -> VSOp r
cppUnaryMath ClassName
R.tan
cppAsinOp :: (Monad r) => VSOp r
cppAsinOp :: forall (r :: * -> *). Monad r => VSOp r
cppAsinOp = ClassName -> VSOp r
forall (r :: * -> *). Monad r => ClassName -> VSOp r
cppUnaryMath ClassName
R.asin
cppAcosOp :: (Monad r) => VSOp r
cppAcosOp :: forall (r :: * -> *). Monad r => VSOp r
cppAcosOp = ClassName -> VSOp r
forall (r :: * -> *). Monad r => ClassName -> VSOp r
cppUnaryMath ClassName
R.acos
cppAtanOp :: (Monad r) => VSOp r
cppAtanOp :: forall (r :: * -> *). Monad r => VSOp r
cppAtanOp = ClassName -> VSOp r
forall (r :: * -> *). Monad r => ClassName -> VSOp r
cppUnaryMath ClassName
R.atan
cppFloorOp :: (Monad r) => VSOp r
cppFloorOp :: forall (r :: * -> *). Monad r => VSOp r
cppFloorOp = ClassName -> VSOp r
forall (r :: * -> *). Monad r => ClassName -> VSOp r
cppUnaryMath ClassName
R.floor
cppCeilOp :: (Monad r) => VSOp r
cppCeilOp :: forall (r :: * -> *). Monad r => VSOp r
cppCeilOp = ClassName -> VSOp r
forall (r :: * -> *). Monad r => ClassName -> VSOp r
cppUnaryMath ClassName
R.ceil
cppUnaryMath :: (Monad r) => String -> VSOp r
cppUnaryMath :: forall (r :: * -> *). Monad r => ClassName -> VSOp r
cppUnaryMath = VS (r OpData) -> VS (r OpData)
forall a. VS a -> VS a
addMathHImport (VS (r OpData) -> VS (r OpData))
-> (ClassName -> VS (r OpData)) -> ClassName -> VS (r OpData)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ClassName -> VS (r OpData)
forall (r :: * -> *). Monad r => ClassName -> VSOp r
unOpPrec
cppPowerOp :: (Monad r) => VSOp r
cppPowerOp :: forall (r :: * -> *). Monad r => VSOp r
cppPowerOp = ClassName -> VSOp r
forall (r :: * -> *). Monad r => ClassName -> VSOp r
powerPrec ClassName
R.pow
getLineFunc :: SValue CppSrcCode -> SValue CppSrcCode -> SValue CppSrcCode
getLineFunc :: SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Value
getLineFunc SrcState ValueState Value
f SrcState ValueState Value
v = ClassName
-> State ValueState (CppSrcCode TypeData)
-> [SrcState ValueState Value]
-> SrcState ValueState Value
forall (r :: * -> *). ValueExpression r => PosCall r
funcApp ClassName
cppGetLine State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
string [SrcState ValueState Value
f, SrcState ValueState Value
v]
getLine3ArgFunc :: SValue CppSrcCode -> SValue CppSrcCode -> Char ->
SValue CppSrcCode
getLine3ArgFunc :: SrcState ValueState Value
-> SrcState ValueState Value -> Char -> SrcState ValueState Value
getLine3ArgFunc SrcState ValueState Value
s SrcState ValueState Value
v Char
d = ClassName
-> State ValueState (CppSrcCode TypeData)
-> [SrcState ValueState Value]
-> SrcState ValueState Value
forall (r :: * -> *). ValueExpression r => PosCall r
funcApp ClassName
cppGetLine State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
string [SrcState ValueState Value
s, SrcState ValueState Value
v, Char -> SrcState ValueState Value
forall (r :: * -> *). Literal r => Char -> SValue r
litChar Char
d]
clearFunc :: VS (CppSrcCode FuncData)
clearFunc :: SrcState ValueState FuncData
clearFunc = ClassName
-> State ValueState (CppSrcCode TypeData)
-> [SrcState ValueState Value]
-> SrcState ValueState FuncData
forall (r :: * -> *).
OOFunctionSym r =>
ClassName -> VS (r TypeData) -> [SValue r] -> VS (r FuncData)
func ClassName
cppClear State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void []
strFunc :: SValue CppSrcCode -> SValue CppSrcCode -> SValue CppSrcCode
strFunc :: SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Value
strFunc SrcState ValueState Value
v SrcState ValueState Value
s = State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Value
-> ClassName
-> [SrcState ValueState Value]
-> SrcState ValueState Value
forall (r :: * -> *).
InternalValueExp r =>
VS (r TypeData) -> SValue r -> ClassName -> [SValue r] -> SValue r
objMethodCall State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
string SrcState ValueState Value
v ClassName
cppStr [SrcState ValueState Value
s]
cppIndexFunc :: SValue CppSrcCode -> SValue CppSrcCode -> SValue CppSrcCode
cppIndexFunc :: SrcState ValueState Value
-> SrcState ValueState Value -> SrcState ValueState Value
cppIndexFunc SrcState ValueState Value
l SrcState ValueState Value
v = ClassName
-> State ValueState (CppSrcCode TypeData)
-> [SrcState ValueState Value]
-> SrcState ValueState Value
forall (r :: * -> *). ValueExpression r => PosCall r
funcApp ClassName
cppIndex State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
int [SrcState ValueState Value -> SrcState ValueState Value
iterBegin SrcState ValueState Value
l, SrcState ValueState Value -> SrcState ValueState Value
iterEnd SrcState ValueState Value
l, SrcState ValueState Value
v]
cppIterBeginFunc :: VS (CppSrcCode TypeData) -> VS (CppSrcCode FuncData)
cppIterBeginFunc :: State ValueState (CppSrcCode TypeData)
-> SrcState ValueState FuncData
cppIterBeginFunc State ValueState (CppSrcCode TypeData)
t = ClassName
-> State ValueState (CppSrcCode TypeData)
-> [SrcState ValueState Value]
-> SrcState ValueState FuncData
forall (r :: * -> *).
OOFunctionSym r =>
ClassName -> VS (r TypeData) -> [SValue r] -> VS (r FuncData)
func ClassName
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 = ClassName
-> State ValueState (CppSrcCode TypeData)
-> [SrcState ValueState Value]
-> SrcState ValueState FuncData
forall (r :: * -> *).
OOFunctionSym r =>
ClassName -> VS (r TypeData) -> [SValue r] -> VS (r FuncData)
func ClassName
cppIterEnd (State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData)
iterator State ValueState (CppSrcCode TypeData)
t) []
cppListDecDef
:: (DeclStatement r smt, RenderStatement r smt, StatementElim r smt)
=> ([r Value] -> Doc)
-> SVariable r
-> r ScopeData
-> [SValue r]
-> MS (r smt)
cppListDecDef :: forall (r :: * -> *) smt.
(DeclStatement r smt, RenderStatement r smt,
StatementElim r smt) =>
([r Value] -> Doc)
-> SVariable r -> r ScopeData -> [SValue r] -> MS (r smt)
cppListDecDef [r Value] -> Doc
f SVariable r
v r ScopeData
scp [SValue r]
vls = do
r smt
vdc <- SVariable r -> r ScopeData -> MS (r smt)
forall (r :: * -> *) smt.
DeclStatement r smt =>
SVariable r -> r ScopeData -> MS (r smt)
varDec SVariable r
v r ScopeData
scp
[r Value]
vs <- LensLike'
(Zoomed (StateT ValueState Identity) [r Value])
MethodState
ValueState
-> StateT ValueState Identity [r Value]
-> StateT MethodState Identity [r 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) [r Value])
MethodState
ValueState
(ValueState -> Focusing Identity [r Value] ValueState)
-> MethodState -> Focusing Identity [r Value] MethodState
Lens' MethodState ValueState
lensMStoVS (StateT ValueState Identity [r Value]
-> StateT MethodState Identity [r Value])
-> StateT ValueState Identity [r Value]
-> StateT MethodState Identity [r Value]
forall a b. (a -> b) -> a -> b
$ [SValue r] -> StateT ValueState Identity [r Value]
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
forall (m :: * -> *) a. Monad m => [m a] -> m [a]
sequence [SValue r]
vls
Doc -> MS (r smt)
forall (r :: * -> *) smt.
RenderStatement r smt =>
Doc -> MS (r smt)
mkStmt (r smt -> Doc
forall (r :: * -> *) smt. StatementElim r smt => r smt -> Doc
RC.statement r smt
vdc Doc -> Doc -> Doc
<> [r Value] -> Doc
f [r Value]
vs)
cpphtop :: ModData -> Doc
cpphtop :: Module -> Doc
cpphtop Module
m = [Doc] -> Doc
vcat [
Doc
ifndef Doc -> Doc -> Doc
<+> ClassName -> Doc
text ClassName
n Doc -> Doc -> Doc
<> Doc
defineSuffix,
Doc
define Doc -> Doc -> Doc
<+> ClassName -> Doc
text ClassName
n Doc -> Doc -> Doc
<> Doc
defineSuffix]
where n :: ClassName
n = Module -> ClassName
name Module
m
usingNameSpace :: Label -> Maybe Label -> Doc
usingNameSpace :: ClassName -> Maybe ClassName -> Doc
usingNameSpace ClassName
n (Just ClassName
m) = Doc
using Doc -> Doc -> Doc
<+> ClassName -> Doc
text ClassName
n Doc -> Doc -> Doc
<> Doc
colon Doc -> Doc -> Doc
<> Doc
colon Doc -> Doc -> Doc
<>
ClassName -> Doc
text ClassName
m Doc -> Doc -> Doc
<> Doc
endStatement
usingNameSpace ClassName
n Maybe ClassName
Nothing = Doc
using Doc -> Doc -> Doc
<+> Doc
namespace Doc -> Doc -> Doc
<+> ClassName -> Doc
text ClassName
n Doc -> Doc -> Doc
<> Doc
endStatement
cppInherit :: Maybe Label -> Doc -> Doc
cppInherit :: Maybe ClassName -> Doc -> Doc
cppInherit Maybe ClassName
n Doc
pub = Doc -> (ClassName -> Doc) -> Maybe ClassName -> Doc
forall b a. b -> (a -> b) -> Maybe a -> b
maybe Doc
empty ((Doc
colon Doc -> Doc -> Doc
<+> Doc
pub <+>) (Doc -> Doc) -> (ClassName -> Doc) -> ClassName -> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ClassName -> Doc
text) Maybe ClassName
n
cppBoolType :: (Monad r) => VS (r TypeData)
cppBoolType :: forall (r :: * -> *). Monad r => VS (r TypeData)
cppBoolType = CodeType -> ClassName -> Doc -> VS (r TypeData)
forall (r :: * -> *).
Monad r =>
CodeType -> ClassName -> Doc -> VS (r TypeData)
typeFromData CodeType
Boolean ClassName
cppBool (ClassName -> Doc
text ClassName
cppBool)
cppInfileType :: (Monad r) => VS (r TypeData)
cppInfileType :: forall (r :: * -> *). Monad r => VS (r TypeData)
cppInfileType = do
r TypeData
t <- CodeType -> ClassName -> Doc -> VS (r TypeData)
forall (r :: * -> *).
Monad r =>
CodeType -> ClassName -> Doc -> VS (r TypeData)
typeFromData CodeType
InFile ClassName
cppInfile (ClassName -> Doc
text ClassName
cppInfile)
r TypeData -> VS (r TypeData)
forall a. a -> StateT ValueState Identity a
addFStreamImport r TypeData
t
argvType :: (Monad r) => VS (r TypeData)
argvType :: forall (r :: * -> *). Monad r => VS (r TypeData)
argvType = CodeType -> ClassName -> Doc -> VS (r TypeData)
forall (r :: * -> *).
Monad r =>
CodeType -> ClassName -> Doc -> VS (r TypeData)
typeFromData (CodeType -> CodeType
Array CodeType
String) ClassName
"const char**" (ClassName -> Doc
text ClassName
"const char**")
cppOutfileType :: (Monad r) => VS (r TypeData)
cppOutfileType :: forall (r :: * -> *). Monad r => VS (r TypeData)
cppOutfileType = do
r TypeData
t <- CodeType -> ClassName -> Doc -> VS (r TypeData)
forall (r :: * -> *).
Monad r =>
CodeType -> ClassName -> Doc -> VS (r TypeData)
typeFromData CodeType
OutFile ClassName
cppOutfile (ClassName -> Doc
text ClassName
cppOutfile)
r TypeData -> VS (r TypeData)
forall a. a -> StateT ValueState Identity a
addFStreamImport r TypeData
t
cppIterType :: VS (CppSrcCode TypeData) -> VS (CppSrcCode TypeData)
cppIterType :: State ValueState (CppSrcCode TypeData)
-> State ValueState (CppSrcCode TypeData)
cppIterType State ValueState (CppSrcCode TypeData)
t' = do
CppSrcCode TypeData
t <- State ValueState (CppSrcCode TypeData)
t'
CodeType
-> ClassName -> Doc -> State ValueState (CppSrcCode TypeData)
forall (r :: * -> *).
Monad r =>
CodeType -> ClassName -> Doc -> VS (r TypeData)
typeFromData (CppSrcCode TypeData -> CodeType
forall (r :: * -> *). TypeElim r => r TypeData -> CodeType
getCodeType CppSrcCode TypeData
t)
(CppSrcCode TypeData -> ClassName
forall (r :: * -> *). UnRepr r TypeData => r TypeData -> ClassName
getTypeString CppSrcCode TypeData
t ClassName -> ClassName -> ClassName
`nmSpcAccess` ClassName
cppIterator) (Doc -> Doc
stdAccess' (CppSrcCode TypeData -> Doc
forall (r :: * -> *). UnRepr r TypeData => r TypeData -> Doc
renderType CppSrcCode TypeData
t)
Doc -> Doc -> Doc
`nmSpcAccess'` ClassName -> Doc
text ClassName
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) => [VS (r TypeData)] ->
VS (r TypeData) -> VS (r TypeData)
cppFuncType :: forall (r :: * -> *).
(Monad r, TypeElim r) =>
[VS (r TypeData)] -> VS (r TypeData) -> VS (r TypeData)
cppFuncType [VS (r TypeData)]
ps' VS (r TypeData)
r' = do
[r TypeData]
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 TypeData
r <- VS (r TypeData)
r'
CodeType -> ClassName -> Doc -> VS (r TypeData)
forall (r :: * -> *).
Monad r =>
CodeType -> ClassName -> Doc -> VS (r TypeData)
typeFromData ([CodeType] -> CodeType -> CodeType
Func ((r TypeData -> CodeType) -> [r TypeData] -> [CodeType]
forall a b. (a -> b) -> [a] -> [b]
map r TypeData -> CodeType
forall (r :: * -> *). TypeElim r => r TypeData -> CodeType
getCodeType [r TypeData]
ps) (r TypeData -> CodeType
forall (r :: * -> *). TypeElim r => r TypeData -> CodeType
getCodeType r TypeData
r)) ClassName
"auto" (ClassName -> Doc
text ClassName
"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 BinderD -> Doc) -> [CppSrcCode BinderD] -> [Doc]
forall a b. (a -> b) -> [a] -> [b]
map (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 (r :: * -> *). BinderElim r => r BinderD -> r TypeData
binderType) [CppSrcCode BinderD]
ps) ((CppSrcCode BinderD -> Doc) -> [CppSrcCode BinderD] -> [Doc]
forall a b. (a -> b) -> [a] -> [b]
map CppSrcCode BinderD -> Doc
forall (r :: * -> *). InternalBinderElim r => r BinderD -> Doc
RC.binderElim [CppSrcCode BinderD]
ps)) Doc -> Doc -> Doc
<+>
Doc
bodyStart Doc -> Doc -> Doc
<> Doc
returnLabel Doc -> Doc -> Doc
<+> CppSrcCode Value -> Doc
forall (r :: * -> *). ValueElim r => r Value -> Doc
RC.value CppSrcCode Value
ex Doc -> Doc -> Doc
<> Doc
endStatement Doc -> Doc -> Doc
<> Doc
bodyEnd
stodFunc :: SValue CppSrcCode -> SValue CppSrcCode
stodFunc :: SrcState ValueState Value -> SrcState ValueState Value
stodFunc SrcState ValueState Value
v = ClassName
-> State ValueState (CppSrcCode TypeData)
-> [SrcState ValueState Value]
-> SrcState ValueState Value
forall (r :: * -> *). ValueExpression r => PosCall r
funcApp ClassName
stod State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
double [SrcState ValueState Value
v]
stofFunc :: SValue CppSrcCode -> SValue CppSrcCode
stofFunc :: SrcState ValueState Value -> SrcState ValueState Value
stofFunc SrcState ValueState Value
v = ClassName
-> State ValueState (CppSrcCode TypeData)
-> [SrcState ValueState Value]
-> SrcState ValueState Value
forall (r :: * -> *). ValueExpression r => PosCall r
funcApp ClassName
stof State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
float [SrcState ValueState Value
v]
ignoreFunc :: Char -> SValue CppSrcCode -> SValue CppSrcCode
ignoreFunc :: Char -> SrcState ValueState Value -> SrcState ValueState Value
ignoreFunc Char
sep SrcState ValueState Value
inFn = State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Value
-> ClassName
-> [SrcState ValueState Value]
-> SrcState ValueState Value
forall (r :: * -> *).
InternalValueExp r =>
VS (r TypeData) -> SValue r -> ClassName -> [SValue r] -> SValue r
objMethodCall State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void SrcState ValueState Value
inFn ClassName
cppIgnore [SrcState ValueState Value
maxFunc, Char -> SrcState ValueState Value
forall (r :: * -> *). Literal r => Char -> SValue r
litChar Char
sep]
maxFunc :: SValue CppSrcCode
maxFunc :: SrcState ValueState Value
maxFunc = ClassName
-> State ValueState (CppSrcCode TypeData)
-> [SrcState ValueState Value]
-> SrcState ValueState Value
forall (r :: * -> *). ValueExpression r => PosCall r
funcApp ((ClassName
numLimits ClassName -> ClassName -> ClassName
`containing` ClassName
streamsize) ClassName -> ClassName -> ClassName
`nmSpcAccess` ClassName
max) State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
int []
cppCast :: VS (CppSrcCode TypeData) -> SValue CppSrcCode -> SValue CppSrcCode
cppCast :: State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Value -> SrcState ValueState Value
cppCast = StateT ValueState Identity (SrcState ValueState Value)
-> SrcState ValueState Value
forall (m :: * -> *) a. Monad m => m (m a) -> m a
join (StateT ValueState Identity (SrcState ValueState Value)
-> SrcState ValueState Value)
-> (State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Value
-> StateT ValueState Identity (SrcState ValueState Value))
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Value
-> SrcState ValueState Value
forall c d a b. (c -> d) -> (a -> b -> c) -> a -> b -> d
.: (CppSrcCode TypeData
-> CppSrcCode Value -> SrcState ValueState Value)
-> State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Value
-> StateT ValueState Identity (SrcState ValueState 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
-> SrcState ValueState Value
cppCast' (CppSrcCode TypeData -> CodeType
forall (r :: * -> *). TypeElim r => r TypeData -> CodeType
getCodeType CppSrcCode TypeData
t) (CppSrcCode TypeData -> CodeType
forall (r :: * -> *). TypeElim r => r TypeData -> CodeType
getCodeType (CppSrcCode TypeData -> CodeType)
-> CppSrcCode TypeData -> CodeType
forall a b. (a -> b) -> a -> b
$
CppSrcCode Value -> CppSrcCode TypeData
forall (r :: * -> *). ValueSym r => r Value -> r TypeData
valueType CppSrcCode Value
v) CppSrcCode TypeData
t CppSrcCode Value
v)
where cppCast' :: CodeType
-> CodeType
-> CppSrcCode TypeData
-> CppSrcCode Value
-> SrcState ValueState Value
cppCast' CodeType
Double CodeType
String CppSrcCode TypeData
_ CppSrcCode Value
v = SrcState ValueState Value -> SrcState ValueState Value
stodFunc (CppSrcCode Value -> SrcState ValueState Value
forall a s. a -> State s a
toState CppSrcCode Value
v)
cppCast' CodeType
Float CodeType
String CppSrcCode TypeData
_ CppSrcCode Value
v = SrcState ValueState Value -> SrcState ValueState Value
stofFunc (CppSrcCode Value -> SrcState ValueState 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 -> SrcState ValueState Value
forall (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
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 (r :: * -> *). ValueElim r => r Value -> Doc
RC.value CppSrcCode Value
v))
cppListDecDoc :: (ValueElim r) => r Value -> Doc
cppListDecDoc :: forall (r :: * -> *). ValueElim r => r Value -> Doc
cppListDecDoc r Value
n = Doc -> Doc
parens (r Value -> Doc
forall (r :: * -> *). ValueElim r => r Value -> Doc
RC.value r Value
n)
cppListDecDefDoc :: (ValueElim r) => [r Value] -> Doc
cppListDecDefDoc :: forall (r :: * -> *). ValueElim r => [r Value] -> Doc
cppListDecDefDoc [r Value]
vs = Doc -> Doc
braces ([r Value] -> Doc
forall (r :: * -> *). ValueElim r => [r Value] -> Doc
valueList [r Value]
vs)
cppFuncDecDef :: SVariable CppSrcCode -> CppSrcCode ScopeData ->
[SVariable CppSrcCode] -> MS (CppSrcCode Body) -> MS (CppSrcCode (Doc, Terminator))
cppFuncDecDef :: SrcState ValueState Variable
-> CppSrcCode ScopeData
-> [SrcState ValueState Variable]
-> SrcState MethodState Doc
-> SrcState MethodState (Doc, Terminator)
cppFuncDecDef SrcState ValueState Variable
v CppSrcCode ScopeData
scp [SrcState ValueState Variable]
ps SrcState MethodState Doc
bod = do
CppSrcCode Variable
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
(MethodState -> MethodState) -> StateT MethodState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify ((MethodState -> MethodState) -> StateT MethodState Identity ())
-> (MethodState -> MethodState) -> StateT MethodState Identity ()
forall a b. (a -> b) -> a -> b
$ ClassName -> MethodState -> MethodState
useVarName (ClassName -> MethodState -> MethodState)
-> ClassName -> MethodState -> MethodState
forall a b. (a -> b) -> a -> b
$ CppSrcCode Variable -> ClassName
forall (r :: * -> *). VariableElim r => r Variable -> ClassName
variableName CppSrcCode Variable
vr
(MethodState -> MethodState) -> StateT MethodState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify ((MethodState -> MethodState) -> StateT MethodState Identity ())
-> (MethodState -> MethodState) -> StateT MethodState Identity ()
forall a b. (a -> b) -> a -> b
$ ClassName -> ScopeData -> MethodState -> MethodState
setVarScope (CppSrcCode Variable -> ClassName
forall (r :: * -> *). VariableElim r => r Variable -> ClassName
variableName CppSrcCode Variable
vr) (CppSrcCode ScopeData -> ScopeData
forall (r :: * -> *). ScopeElim r => r ScopeData -> ScopeData
scopeData CppSrcCode ScopeData
scp)
[CppSrcCode Variable]
pms <- (SrcState ValueState Variable
-> StateT MethodState Identity (CppSrcCode Variable))
-> [SrcState ValueState Variable]
-> 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]
ps
CppSrcCode Doc
b <- SrcState MethodState Doc
bod
Doc -> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
RenderStatement r smt =>
Doc -> MS (r smt)
mkStmt (Doc -> SrcState MethodState (Doc, Terminator))
-> Doc -> SrcState MethodState (Doc, Terminator)
forall a b. (a -> b) -> a -> b
$ CppSrcCode TypeData -> Doc
forall (r :: * -> *). UnRepr r TypeData => r TypeData -> Doc
renderType (CppSrcCode Variable -> CppSrcCode TypeData
forall (r :: * -> *). VariableElim r => r Variable -> r TypeData
variableType CppSrcCode Variable
vr) Doc -> Doc -> Doc
<+> CppSrcCode Variable -> Doc
forall (r :: * -> *). InternalVarElim r => r Variable -> Doc
RC.variable CppSrcCode Variable
vr Doc -> Doc -> Doc
<+> Doc
equals Doc -> Doc -> Doc
<+>
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 Variable -> Doc) -> [CppSrcCode Variable] -> [Doc]
forall a b. (a -> b) -> [a] -> [b]
map (CppSrcCode TypeData -> Doc
forall (r :: * -> *). UnRepr r TypeData => r TypeData -> Doc
renderType (CppSrcCode TypeData -> Doc)
-> (CppSrcCode Variable -> CppSrcCode TypeData)
-> CppSrcCode Variable
-> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
.
CppSrcCode Variable -> CppSrcCode TypeData
forall (r :: * -> *). VariableElim r => r Variable -> r TypeData
variableType) [CppSrcCode Variable]
pms) ((CppSrcCode Variable -> Doc) -> [CppSrcCode Variable] -> [Doc]
forall a b. (a -> b) -> [a] -> [b]
map CppSrcCode Variable -> Doc
forall (r :: * -> *). InternalVarElim r => r Variable -> Doc
RC.variable [CppSrcCode Variable]
pms)) Doc -> Doc -> Doc
<+> Doc
bodyStart Doc -> Doc -> Doc
$$
Doc -> Doc
indent (CppSrcCode Doc -> Doc
forall (r :: * -> *). BodyElim r => r Doc -> Doc
RC.body CppSrcCode Doc
b) Doc -> Doc -> Doc
$$ Doc
bodyEnd
cppPrint
:: (RenderStatement r smt, ValueElim r)
=> Bool -> SValue r -> SValue r -> MS (r smt)
cppPrint :: forall (r :: * -> *) smt.
(RenderStatement r smt, ValueElim r) =>
Bool -> SValue r -> SValue r -> MS (r smt)
cppPrint Bool
newLn SValue r
pf SValue r
vl = do
Doc
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
r Value
printFn <- LensLike'
(Zoomed (StateT ValueState Identity) (r Value))
MethodState
ValueState
-> SValue r -> StateT MethodState Identity (r 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) (r Value))
MethodState
ValueState
(ValueState -> Focusing Identity (r Value) ValueState)
-> MethodState -> Focusing Identity (r Value) MethodState
Lens' MethodState ValueState
lensMStoVS SValue r
pf
r Value
v <- LensLike'
(Zoomed (StateT ValueState Identity) (r Value))
MethodState
ValueState
-> SValue r -> StateT MethodState Identity (r 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) (r Value))
MethodState
ValueState
(ValueState -> Focusing Identity (r Value) ValueState)
-> MethodState -> Focusing Identity (r Value) MethodState
Lens' MethodState ValueState
lensMStoVS SValue r
vl
Doc -> MS (r smt)
forall (r :: * -> *) smt.
RenderStatement r smt =>
Doc -> MS (r smt)
mkStmt (Doc -> MS (r smt)) -> Doc -> MS (r smt)
forall a b. (a -> b) -> a -> b
$ r Value -> Doc
forall (r :: * -> *). ValueElim r => r Value -> Doc
RC.value r Value
printFn Doc -> Doc -> Doc
<+> Doc
streamL Doc -> Doc -> Doc
<+> r Value -> Doc -> Doc
forall {r :: * -> *}. ValueElim r => r Value -> Doc -> Doc
pars r Value
v (r Value -> Doc
forall (r :: * -> *). ValueElim r => r Value -> Doc
RC.value r Value
v) Doc -> Doc -> Doc
<+> Doc
e
where pars :: r Value -> Doc -> Doc
pars r Value
v = if Bool -> (Int -> Bool) -> Maybe Int -> Bool
forall b a. b -> (a -> b) -> Maybe a -> b
maybe Bool
False (Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
< Int
9) (r Value -> Maybe Int
forall (r :: * -> *). ValueElim r => r Value -> Maybe Int
valuePrec r Value
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
<+> ClassName -> Doc
text ClassName
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) => r Value -> Doc
cppThrowDoc :: forall (r :: * -> *). ValueElim r => r Value -> Doc
cppThrowDoc r Value
errMsg = Doc
throwLabel Doc -> Doc -> Doc
<> Doc -> Doc
parens (r Value -> Doc
forall (r :: * -> *). ValueElim r => r Value -> Doc
RC.value r Value
errMsg)
cppTryCatch :: (BodyElim r) => r Body -> r Body -> Doc
cppTryCatch :: forall (r :: * -> *). BodyElim r => r Doc -> r Doc -> Doc
cppTryCatch r Doc
tb r Doc
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 Doc -> Doc
forall (r :: * -> *). BodyElim r => r Doc -> Doc
RC.body r Doc
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 Doc -> Doc
forall (r :: * -> *). BodyElim r => r Doc -> Doc
RC.body r Doc
cb,
Doc
rbrace]
cppAssert :: (ValueElim r) => r Value -> r Value -> Doc
cppAssert :: forall (r :: * -> *). ValueElim r => r Value -> r Value -> Doc
cppAssert r Value
condition r Value
errorMessage = [Doc] -> Doc
vcat [
ClassName -> Doc
text ClassName
"assert(" Doc -> Doc -> Doc
<> r Value -> Doc
forall (r :: * -> *). ValueElim r => r Value -> Doc
RC.value r Value
condition Doc -> Doc -> Doc
<+> ClassName -> Doc
text ClassName
"&&" Doc -> Doc -> Doc
<+> r Value -> Doc
forall (r :: * -> *). ValueElim r => r Value -> Doc
RC.value r Value
errorMessage Doc -> Doc -> Doc
<> ClassName -> Doc
text ClassName
")" Doc -> Doc -> Doc
<> Doc
semi
]
cppDiscardInput :: Char -> SValue CppSrcCode -> MS (CppSrcCode (Doc, Terminator))
cppDiscardInput :: Char
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
cppDiscardInput Char
sep SrcState ValueState Value
inFn = SrcState ValueState Value -> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
StatementSym r smt =>
SValue r -> MS (r smt)
valStmt (SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator))
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall a b. (a -> b) -> a -> b
$ Char -> SrcState ValueState Value -> SrcState ValueState Value
ignoreFunc Char
sep SrcState ValueState Value
inFn
cppInput :: SVariable CppSrcCode -> SValue CppSrcCode -> MS (CppSrcCode (Doc, Terminator))
cppInput :: SrcState ValueState Variable
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
cppInput SrcState ValueState Variable
vr SrcState ValueState Value
i = SrcState MethodState (Doc, Terminator)
-> SrcState MethodState (Doc, Terminator)
forall a. MS a -> MS a
addAlgorithmImport (SrcState MethodState (Doc, Terminator)
-> SrcState MethodState (Doc, Terminator))
-> SrcState MethodState (Doc, Terminator)
-> SrcState MethodState (Doc, Terminator)
forall a b. (a -> b) -> a -> b
$ SrcState MethodState (Doc, Terminator)
-> SrcState MethodState (Doc, Terminator)
forall a. MS a -> MS a
addLimitsImport (SrcState MethodState (Doc, Terminator)
-> SrcState MethodState (Doc, Terminator))
-> SrcState MethodState (Doc, Terminator)
-> SrcState MethodState (Doc, Terminator)
forall a b. (a -> b) -> a -> b
$ do
CppSrcCode Variable
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
CppSrcCode Value
inFn <- LensLike'
(Zoomed (StateT ValueState Identity) (CppSrcCode Value))
MethodState
ValueState
-> SrcState ValueState 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 SrcState ValueState Value
i
[SrcState MethodState (Doc, Terminator)]
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
StatementSym r smt =>
[MS (r smt)] -> MS (r smt)
multi [Doc -> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
RenderStatement r smt =>
Doc -> MS (r smt)
mkStmt (CppSrcCode Value -> Doc
forall (r :: * -> *). ValueElim r => r Value -> Doc
RC.value CppSrcCode Value
inFn Doc -> Doc -> Doc
<+> Doc
streamR Doc -> Doc -> Doc
<+> CppSrcCode Variable -> Doc
forall (r :: * -> *). InternalVarElim r => r Variable -> Doc
RC.variable CppSrcCode Variable
v),
SrcState ValueState Value -> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
StatementSym r smt =>
SValue r -> MS (r smt)
valStmt (SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator))
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall a b. (a -> b) -> a -> b
$ Char -> SrcState ValueState Value -> SrcState ValueState Value
ignoreFunc Char
'\n' SrcState ValueState Value
i]
cppOpenFile
:: Label
-> SVariable CppSrcCode
-> SValue CppSrcCode
-> MS (CppSrcCode (Doc, Terminator))
cppOpenFile :: ClassName
-> SrcState ValueState Variable
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
cppOpenFile ClassName
mode SrcState ValueState Variable
f SrcState ValueState Value
n = SrcState ValueState Value -> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
StatementSym r smt =>
SValue r -> MS (r smt)
valStmt (SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator))
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall a b. (a -> b) -> a -> b
$ State ValueState (CppSrcCode TypeData)
-> SrcState ValueState Value
-> ClassName
-> [SrcState ValueState Value]
-> SrcState ValueState Value
forall (r :: * -> *).
InternalValueExp r =>
VS (r TypeData) -> SValue r -> ClassName -> [SValue r] -> SValue r
objMethodCall State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void (SrcState ValueState Variable -> SrcState ValueState Value
forall (r :: * -> *). VariableValue r => SVariable r -> SValue r
valueOf SrcState ValueState Variable
f) ClassName
cppOpen [SrcState ValueState Value
n,
State ValueState (CppSrcCode TypeData)
-> Doc -> SrcState ValueState Value
forall (r :: * -> *).
RenderValue r =>
VS (r TypeData) -> Doc -> SValue r
mkStateVal State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void (Doc -> SrcState ValueState Value)
-> Doc -> SrcState ValueState Value
forall a b. (a -> b) -> a -> b
$ ClassName -> Doc
text ClassName
mode]
cppPointerParamDoc
:: (InternalVarElim r, UnRepr r TypeData, VariableElim r)
=> r Variable -> Doc
cppPointerParamDoc :: forall (r :: * -> *).
(InternalVarElim r, UnRepr r TypeData, VariableElim r) =>
r Variable -> Doc
cppPointerParamDoc r Variable
v = r TypeData -> Doc
forall (r :: * -> *). UnRepr r TypeData => r TypeData -> Doc
renderType (r Variable -> r TypeData
forall (r :: * -> *). VariableElim r => r Variable -> r TypeData
variableType r Variable
v) Doc -> Doc -> Doc
<+> Doc
cppPtr Doc -> Doc -> Doc
<> r Variable -> Doc
forall (r :: * -> *). InternalVarElim r => r Variable -> Doc
RC.variable r Variable
v
cppsMethod :: [Doc] -> Label -> Label -> CppSrcCode TypeData
-> [CppSrcCode ParamData] -> CppSrcCode Body -> Doc
cppsMethod :: [Doc]
-> ClassName
-> ClassName
-> CppSrcCode TypeData
-> [CppSrcCode ParamData]
-> CppSrcCode Doc
-> Doc
cppsMethod [Doc]
is ClassName
n ClassName
c CppSrcCode TypeData
t [CppSrcCode ParamData]
ps CppSrcCode Doc
b = Doc -> Doc -> Doc
emptyIfEmpty (CppSrcCode Doc -> Doc
forall (r :: * -> *). BodyElim r => r Doc -> 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
<+> ClassName -> Doc
text (ClassName
c ClassName -> ClassName -> ClassName
`nmSpcAccess` ClassName
n) Doc -> Doc -> Doc
<> Doc -> Doc
parens ([CppSrcCode ParamData] -> Doc
forall (r :: * -> *). ParamElim r => [r ParamData] -> 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 (r :: * -> *). BodyElim r => r Doc -> Doc
RC.body CppSrcCode Doc
b),
Doc
bodyEnd]
where ttype :: Doc
ttype | ClassName -> Bool
isDtor ClassName
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 -> MS (CppSrcCode Body) -> MS (CppSrcCode MethodData)
cppConstructor :: [SrcState MethodState ParamData]
-> [(SrcState ValueState Variable, SrcState ValueState Value)]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData
cppConstructor [SrcState MethodState ParamData]
ps [(SrcState ValueState Variable, SrcState ValueState Value)]
is SrcState MethodState Doc
b = StateT MethodState Identity ClassName
getClassName StateT MethodState Identity ClassName
-> (ClassName -> 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
>>= (\ClassName
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, SrcState ValueState Value)] -> Bool
forall a. [a] -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null [(SrcState ValueState Variable, SrcState ValueState Value)]
is then ClassName
-> [SrcState MethodState ParamData]
-> [(SrcState ValueState Variable, SrcState ValueState Value)]
-> SrcState MethodState Doc
-> SrcState MethodState MethodData
forall (r :: * -> *) vis smt md svr att.
(OORenderSym r vis smt md svr att, OOStatement r smt) =>
ClassName
-> [MS (r ParamData)] -> Initializers r -> MS (r Doc) -> MS (r md)
CP.constructor ClassName
n [SrcState MethodState ParamData]
ps [(SrcState ValueState Variable, SrcState ValueState 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]
-> ClassName
-> ClassName
-> 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 (r :: * -> *). InternalVarElim r => r Variable -> Doc
RC.variable
CppSrcCode Variable
ivar Doc -> Doc -> Doc
<> Doc -> Doc
parens (CppSrcCode Value -> Doc
forall (r :: * -> *). ValueElim r => r Value -> Doc
RC.value CppSrcCode Value
ival)) [CppSrcCode Variable]
ivars [CppSrcCode Value]
ivals) ClassName
n ClassName
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 (r :: * -> *) a b. Functor r => (a -> b) -> r a -> r b
<$> ClassName -> SrcState MethodState TypeData
forall (r :: * -> *).
OOMethodTypeSym r =>
ClassName -> MSMthdType r
construct
ClassName
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, SrcState ValueState Value)
-> StateT MethodState Identity (CppSrcCode Variable))
-> [(SrcState ValueState Variable, SrcState ValueState 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, SrcState ValueState Value)
-> SrcState ValueState Variable)
-> (SrcState ValueState Variable, SrcState ValueState Value)
-> StateT MethodState Identity (CppSrcCode Variable)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (SrcState ValueState Variable, SrcState ValueState Value)
-> SrcState ValueState Variable
forall a b. (a, b) -> a
fst) [(SrcState ValueState Variable, SrcState ValueState 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, SrcState ValueState Value)
-> StateT MethodState Identity (CppSrcCode Value))
-> [(SrcState ValueState Variable, SrcState ValueState 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
-> SrcState ValueState 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 (SrcState ValueState Value
-> StateT MethodState Identity (CppSrcCode Value))
-> ((SrcState ValueState Variable, SrcState ValueState Value)
-> SrcState ValueState Value)
-> (SrcState ValueState Variable, SrcState ValueState Value)
-> StateT MethodState Identity (CppSrcCode Value)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (SrcState ValueState Variable, SrcState ValueState Value)
-> SrcState ValueState Value
forall a b. (a, b) -> b
snd) [(SrcState ValueState Variable, SrcState ValueState 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 :: ClassName
-> CppSrcCode TypeData
-> [CppSrcCode ParamData]
-> CppSrcCode Doc
-> Doc
cppsFunction ClassName
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
<+> ClassName -> Doc
text ClassName
n Doc -> Doc -> Doc
<> Doc -> Doc
parens ([CppSrcCode ParamData] -> Doc
forall (r :: * -> *). ParamElim r => [r ParamData] -> Doc
parameterList [CppSrcCode ParamData]
ps) Doc -> Doc -> Doc
<+> Doc
bodyStart,
Doc -> Doc
indent (CppSrcCode Doc -> Doc
forall (r :: * -> *). BodyElim r => r Doc -> Doc
RC.body CppSrcCode Doc
b),
Doc
bodyEnd]
cppsIntFunc :: (CppSrcCode TypeData -> [CppSrcCode ParamData] ->
CppSrcCode Body -> Doc) -> CppSrcCode (Doc, VisibilityTag) ->
MSMthdType CppSrcCode -> [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))
CppSrcCode TypeData
tp <- SrcState MethodState TypeData
t
[CppSrcCode ParamData]
pms <- [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
MethodData -> CppSrcCode MethodData
forall (r :: * -> *) a. Monad r => a -> r a
toCode (MethodData -> CppSrcCode MethodData)
-> (CppSrcCode Doc -> MethodData)
-> CppSrcCode Doc
-> CppSrcCode MethodData
forall b c a. (b -> c) -> (a -> b) -> a -> c
. VisibilityTag -> Doc -> MethodData
mthd ((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) (Doc -> MethodData)
-> (CppSrcCode Doc -> Doc) -> CppSrcCode Doc -> MethodData
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CppSrcCode TypeData
-> [CppSrcCode ParamData] -> CppSrcCode Doc -> Doc
f CppSrcCode TypeData
tp [CppSrcCode ParamData]
pms (CppSrcCode Doc -> CppSrcCode MethodData)
-> SrcState MethodState Doc -> SrcState MethodState MethodData
forall (r :: * -> *) a b. Functor r => (a -> b) -> r a -> r b
<$> SrcState MethodState Doc
b
cpphIntFunc :: Label -> CppHdrCode (Doc, VisibilityTag) ->
CppHdrCode att -> MSMthdType CppHdrCode ->
[MS (CppHdrCode ParamData)] -> MS (CppHdrCode Body) -> MS (CppHdrCode MethodData)
cpphIntFunc :: forall att.
ClassName
-> CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode att
-> HdrState MethodState TypeData
-> [HdrState MethodState ParamData]
-> HdrState MethodState Doc
-> HdrState MethodState MethodData
cpphIntFunc ClassName
n CppHdrCode (Doc, VisibilityTag)
s CppHdrCode att
_ 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))
CppHdrCode TypeData
tp <- HdrState MethodState TypeData
t
[CppHdrCode ParamData]
pms <- [HdrState MethodState ParamData]
-> StateT MethodState Identity [CppHdrCode 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 [HdrState MethodState ParamData]
ps
CppHdrCode MethodData -> HdrState MethodState MethodData
forall a. a -> StateT MethodState Identity a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (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 ((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) (Doc -> MethodData) -> Doc -> MethodData
forall a b. (a -> b) -> a -> b
$ ClassName -> CppHdrCode TypeData -> [CppHdrCode ParamData] -> Doc
forall (r :: * -> *).
ParamElim r =>
ClassName -> CppHdrCode TypeData -> [r ParamData] -> Doc
cpphFunc ClassName
n CppHdrCode TypeData
tp [CppHdrCode ParamData]
pms
cpphFunc :: (ParamElim r) => Label -> CppHdrCode TypeData ->
[r ParamData] -> Doc
cpphFunc :: forall (r :: * -> *).
ParamElim r =>
ClassName -> CppHdrCode TypeData -> [r ParamData] -> Doc
cpphFunc ClassName
n CppHdrCode TypeData
t [r ParamData]
ps = (if ClassName -> Bool
isDtor ClassName
n then Doc
empty else CppHdrCode TypeData -> Doc
forall (r :: * -> *). UnRepr r TypeData => r TypeData -> Doc
renderType CppHdrCode TypeData
t) Doc -> Doc -> Doc
<+>
ClassName -> Doc
text ClassName
n Doc -> Doc -> Doc
<> Doc -> Doc
parens ([r ParamData] -> Doc
forall (r :: * -> *). ParamElim r => [r ParamData] -> Doc
parameterList [r ParamData]
ps) Doc -> Doc -> Doc
<> Doc
endStatement
cpphMethod :: Label -> CppHdrCode TypeData ->
CppHdrCode AttachmentData -> [CppHdrCode ParamData] -> Doc
cpphMethod :: ClassName
-> CppHdrCode TypeData
-> CppHdrCode AttachmentData
-> [CppHdrCode ParamData]
-> Doc
cpphMethod ClassName
n CppHdrCode TypeData
t CppHdrCode AttachmentData
a [CppHdrCode ParamData]
ps = let attchDoc :: Doc
attchDoc = CppHdrCode AttachmentData -> Doc
forall (r :: * -> *) att. PermElim r att => r att -> Doc
RC.perm CppHdrCode AttachmentData
a
in Doc
attchDoc Doc -> Doc -> Doc
<+> (if ClassName -> Bool
isDtor ClassName
n then Doc
empty else CppHdrCode TypeData -> Doc
forall (r :: * -> *). UnRepr r TypeData => r TypeData -> Doc
renderType CppHdrCode TypeData
t) Doc -> Doc -> Doc
<+> ClassName -> Doc
text ClassName
n
Doc -> Doc -> Doc
<> Doc -> Doc
parens ([CppHdrCode ParamData] -> Doc
forall (r :: * -> *). ParamElim r => [r ParamData] -> 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
r MethodData
f <- MS (r MethodData)
fn
Bool
mn <- MS Bool
getCurrMainFunc
VisibilityTag
scp <- MS VisibilityTag
getVisibility
r Doc
cmnt <- MS (r Doc)
cmt
let cf :: MS (r MethodData)
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 (r :: * -> *) a b. Functor r => (a -> b) -> r a -> r 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 -> MS (r MethodData)
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 = ClassName -> MS (r MethodData)
forall a. HasCallStack => ClassName -> a
error ClassName
"Combined passed to cppCommentedFunc"
FileType -> MS (r MethodData)
ret FileType
ft
cppsStateVarDef :: Doc -> CppSrcCode (Doc, VisibilityTag) ->
CppSrcCode AttachmentData -> SVariable CppSrcCode ->
SValue CppSrcCode -> CSStateVar CppSrcCode StateVarData
cppsStateVarDef :: Doc
-> CppSrcCode (Doc, VisibilityTag)
-> CppSrcCode AttachmentData
-> SrcState ValueState Variable
-> SrcState ValueState Value
-> SrcState ClassState StateVarData
cppsStateVarDef Doc
cns CppSrcCode (Doc, VisibilityTag)
s CppSrcCode AttachmentData
p SrcState ValueState Variable
vr' SrcState ValueState Value
vl' = do
CppSrcCode Variable
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'
CppSrcCode Value
vl <- LensLike'
(Zoomed (StateT ValueState Identity) (CppSrcCode Value))
ClassState
ValueState
-> SrcState ValueState Value
-> StateT ClassState Identity (CppSrcCode 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) (CppSrcCode Value))
ClassState
ValueState
(ValueState -> Focusing Identity (CppSrcCode Value) ValueState)
-> ClassState -> Focusing Identity (CppSrcCode Value) ClassState
Lens' ClassState ValueState
lensCStoVS SrcState ValueState Value
vl'
ClassName
n <- LensLike'
(Zoomed (StateT MethodState Identity) ClassName)
ClassState
MethodState
-> StateT MethodState Identity ClassName
-> StateT ClassState Identity ClassName
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) ClassName)
ClassState
MethodState
(MethodState -> Focusing Identity ClassName MethodState)
-> ClassState -> Focusing Identity ClassName ClassState
Lens' ClassState MethodState
lensCStoMS StateT MethodState Identity ClassName
getClassName
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
$ (VisibilityTag -> Doc -> StateVarData)
-> CppSrcCode VisibilityTag
-> CppSrcCode Doc
-> CppSrcCode StateVarData
forall (r :: * -> *) a b c.
Applicative r =>
(a -> b -> c) -> r a -> r b -> r c
on2CodeValues VisibilityTag -> Doc -> StateVarData
svd (((Doc, VisibilityTag) -> VisibilityTag)
-> CppSrcCode (Doc, VisibilityTag) -> CppSrcCode VisibilityTag
forall (r :: * -> *) a b. Functor r => (a -> b) -> r a -> r b
onCodeValue (Doc, VisibilityTag) -> VisibilityTag
forall a b. (a, b) -> b
snd CppSrcCode (Doc, VisibilityTag)
s)
(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
$ AttachmentTag -> Doc -> Doc -> Doc
forall a. AttachmentTag -> a -> a -> a
onAttachment (CppSrcCode AttachmentData -> AttachmentTag
forall (r :: * -> *) att. PermElim r att => r att -> AttachmentTag
binding CppSrcCode AttachmentData
p) (Doc
cns Doc -> Doc -> Doc
<+> CppSrcCode TypeData -> Doc
forall (r :: * -> *). UnRepr r TypeData => r TypeData -> Doc
renderType (CppSrcCode Variable -> CppSrcCode TypeData
forall (r :: * -> *). VariableElim r => r Variable -> r TypeData
variableType CppSrcCode Variable
vr) Doc -> Doc -> Doc
<+>
ClassName -> Doc
text ClassName
n Doc -> Doc -> Doc
`nmSpcAccess'` CppSrcCode Variable -> Doc
forall (r :: * -> *). InternalVarElim r => r Variable -> Doc
RC.variable CppSrcCode Variable
vr Doc -> Doc -> Doc
<+> Doc
equals Doc -> Doc -> Doc
<+> CppSrcCode Value -> Doc
forall (r :: * -> *). ValueElim r => r Value -> Doc
RC.value CppSrcCode Value
vl Doc -> Doc -> Doc
<>
Doc
endStatement) Doc
empty)
cppForEach :: Doc -> Doc -> Doc -> Doc -> SVariable CppSrcCode -> SValue CppSrcCode
-> MS (CppSrcCode Body) -> MS (CppSrcCode (Doc, Terminator))
cppForEach :: Doc
-> Doc
-> Doc
-> Doc
-> SrcState ValueState Variable
-> SrcState ValueState Value
-> SrcState MethodState Doc
-> SrcState MethodState (Doc, Terminator)
cppForEach Doc
bStart Doc
bEnd Doc
forEachLabel Doc
inLbl SrcState ValueState Variable
e' SrcState ValueState Value
v' SrcState MethodState Doc
b' = do
CppSrcCode Variable
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'
CppSrcCode Value
v <- LensLike'
(Zoomed (StateT ValueState Identity) (CppSrcCode Value))
MethodState
ValueState
-> SrcState ValueState 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 SrcState ValueState Value
v'
CppSrcCode Doc
b <- SrcState MethodState Doc
b'
Doc -> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
RenderStatement r smt =>
Doc -> MS (r smt)
mkStmtNoEnd (Doc -> SrcState MethodState (Doc, Terminator))
-> Doc -> SrcState MethodState (Doc, Terminator)
forall a b. (a -> b) -> a -> b
$ [Doc] -> Doc
vcat [
Doc
forEachLabel Doc -> Doc -> Doc
<+> Doc -> Doc
parens ((ClassName -> Doc
text ClassName
cppConst Doc -> Doc -> Doc
<+> CppSrcCode TypeData -> Doc
forall (r :: * -> *). UnRepr r TypeData => r TypeData -> Doc
renderType (CppSrcCode Variable -> CppSrcCode TypeData
forall (r :: * -> *). VariableElim r => r Variable -> r TypeData
variableType CppSrcCode Variable
e) Doc -> Doc -> Doc
<+> ClassName -> Doc
text ClassName
"&") Doc -> Doc -> Doc
<> CppSrcCode Variable -> Doc
forall (r :: * -> *). InternalVarElim r => r Variable -> Doc
RC.variable CppSrcCode Variable
e Doc -> Doc -> Doc
<+>
Doc
inLbl Doc -> Doc -> Doc
<+> CppSrcCode Value -> Doc
forall (r :: * -> *). ValueElim r => r Value -> Doc
RC.value CppSrcCode Value
v) Doc -> Doc -> Doc
<+> Doc
bStart,
Doc -> Doc
indent (Doc -> Doc) -> Doc -> Doc
forall a b. (a -> b) -> a -> b
$ CppSrcCode Doc -> Doc
forall (r :: * -> *). BodyElim r => r Doc -> Doc
RC.body CppSrcCode Doc
b,
Doc
bEnd]
cppLitSet
:: (RenderValue r, ValueElim r)
=> (VS (r TypeData) -> VS (r TypeData)) -> VS (r TypeData) -> [SValue r] -> SValue r
cppLitSet :: forall (r :: * -> *).
(RenderValue r, ValueElim r) =>
(VS (r TypeData) -> VS (r TypeData))
-> VS (r TypeData) -> [SValue r] -> SValue r
cppLitSet VS (r TypeData) -> VS (r TypeData)
f VS (r TypeData)
t' [SValue r]
es' = do
[r Value]
es <- [SValue r] -> StateT ValueState Identity [r Value]
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
forall (m :: * -> *) a. Monad m => [m a] -> m [a]
sequence [SValue r]
es'
r TypeData
lt <- VS (r TypeData) -> VS (r TypeData)
f VS (r TypeData)
t'
r TypeData -> Doc -> SValue r
forall (r :: * -> *).
RenderValue r =>
r TypeData -> Doc -> SValue r
mkVal r TypeData
lt ( Doc -> Doc
braces ([r Value] -> Doc
forall (r :: * -> *). ValueElim r => [r Value] -> Doc
valueList [r Value]
es))
cpphStateVarDef
:: Doc
-> CppHdrCode AttachmentData
-> SVariable CppHdrCode
-> SValue CppHdrCode -> 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 (Doc, Terminator) -> Doc)
-> StateT ClassState Identity (CppHdrCode (Doc, Terminator))
-> 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 (r :: * -> *) att. PermElim r att => r att -> Doc
RC.perm CppHdrCode AttachmentData
p) (Doc -> Doc)
-> (CppHdrCode (Doc, Terminator) -> Doc)
-> CppHdrCode (Doc, Terminator)
-> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
.
CppHdrCode (Doc, Terminator) -> Doc
forall (r :: * -> *) smt. StatementElim r smt => r smt -> Doc
RC.statement) (LensLike'
(Zoomed
(StateT MethodState Identity) (CppHdrCode (Doc, Terminator)))
ClassState
MethodState
-> HdrState MethodState (Doc, Terminator)
-> StateT ClassState Identity (CppHdrCode (Doc, Terminator))
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 (Doc, Terminator)))
ClassState
MethodState
(MethodState
-> Focusing Identity (CppHdrCode (Doc, Terminator)) MethodState)
-> ClassState
-> Focusing Identity (CppHdrCode (Doc, Terminator)) ClassState
Lens' ClassState MethodState
lensCStoMS (HdrState MethodState (Doc, Terminator)
-> StateT ClassState Identity (CppHdrCode (Doc, Terminator)))
-> HdrState MethodState (Doc, Terminator)
-> StateT ClassState Identity (CppHdrCode (Doc, Terminator))
forall a b. (a -> b) -> a -> b
$ HdrState MethodState (Doc, Terminator)
-> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
RenderStatement r smt =>
MS (r smt) -> MS (r smt)
stmt (HdrState MethodState (Doc, Terminator)
-> HdrState MethodState (Doc, Terminator))
-> HdrState MethodState (Doc, Terminator)
-> HdrState MethodState (Doc, Terminator)
forall a b. (a -> b) -> a -> b
$ AttachmentTag
-> HdrState MethodState (Doc, Terminator)
-> HdrState MethodState (Doc, Terminator)
-> HdrState MethodState (Doc, Terminator)
forall a. AttachmentTag -> a -> a -> a
onAttachment (CppHdrCode AttachmentData -> AttachmentTag
forall (r :: * -> *) att. PermElim r att => r att -> AttachmentTag
binding CppHdrCode AttachmentData
p)
(HdrState ValueState Variable
-> CppHdrCode ScopeData -> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
DeclStatement r smt =>
SVariable r -> r ScopeData -> MS (r smt)
varDec HdrState ValueState Variable
vr CppHdrCode ScopeData
forall (r :: * -> *). ScopeSym r => r ScopeData
local) (HdrState ValueState Variable
-> CppHdrCode ScopeData
-> HdrState ValueState Value
-> HdrState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
DeclStatement r smt =>
SVariable r -> r ScopeData -> SValue r -> MS (r smt)
varDecDef HdrState ValueState Variable
vr CppHdrCode ScopeData
forall (r :: * -> *). ScopeSym r => r ScopeData
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 (r :: * -> *) svr. StateVarElim r svr => r svr -> 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 (r :: * -> *) md. MethodElim r md => r md -> 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. [a] -> [a] -> [a]
++ (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)
-> [CppSrcCode StateVarData] -> [Doc]
forall a b. (a -> b) -> [a] -> [b]
map CppSrcCode StateVarData -> Doc
forall (r :: * -> *) svr. StateVarElim r svr => r svr -> Doc
RC.stateVar [CppSrcCode StateVarData]
vs
funcs :: [Doc]
funcs = (CppSrcCode MethodData -> Doc) -> [CppSrcCode MethodData] -> [Doc]
forall a b. (a -> b) -> [a] -> [b]
map CppSrcCode MethodData -> Doc
forall (r :: * -> *) md. MethodElim r md => r md -> Doc
RC.method [CppSrcCode MethodData]
fs
cpphClass :: Label -> CppHdrCode ParentSpec ->
[CppHdrCode StateVarData] -> [CppHdrCode MethodData] ->
CppHdrCode (Doc, VisibilityTag) -> CppHdrCode (Doc, VisibilityTag) ->
CppHdrCode Class
cpphClass :: ClassName
-> CppHdrCode Doc
-> [CppHdrCode StateVarData]
-> [CppHdrCode MethodData]
-> CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode (Doc, VisibilityTag)
-> CppHdrCode Doc
cpphClass ClassName
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 (r :: * -> *) vis. 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 (r :: * -> *) vis. 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 (r :: * -> *) a b. Functor r => (a -> b) -> r a -> r b
onCodeValue (\Doc
p -> [Doc] -> Doc
vcat [
Doc
classDec Doc -> Doc -> Doc
<+> ClassName -> Doc
text ClassName
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) -> [SValue CppSrcCode] ->
SValue CppSrcCode) -> Label -> [SValue CppSrcCode] -> [SVariable CppSrcCode]
-> [SVariable CppSrcCode] -> MS (CppSrcCode (Doc, Terminator))
cppInOutCall :: (ClassName
-> State ValueState (CppSrcCode TypeData)
-> [SrcState ValueState Value]
-> SrcState ValueState Value)
-> InOutCall CppSrcCode (Doc, Terminator)
cppInOutCall ClassName
-> State ValueState (CppSrcCode TypeData)
-> [SrcState ValueState Value]
-> SrcState ValueState Value
f ClassName
n [SrcState ValueState Value]
ins [SrcState ValueState Variable
out] [] = SrcState ValueState Variable
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
AssignStatement r smt =>
SVariable r -> SValue r -> MS (r smt)
assign SrcState ValueState Variable
out (SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator))
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall a b. (a -> b) -> a -> b
$ ClassName
-> State ValueState (CppSrcCode TypeData)
-> [SrcState ValueState Value]
-> SrcState ValueState Value
f ClassName
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 (r :: * -> *). VariableElim r => r Variable -> r TypeData
variableType SrcState ValueState Variable
out)
[SrcState ValueState Value]
ins
cppInOutCall ClassName
-> State ValueState (CppSrcCode TypeData)
-> [SrcState ValueState Value]
-> SrcState ValueState Value
f ClassName
n [SrcState ValueState Value]
ins [] [SrcState ValueState Variable
out] = SrcState ValueState Variable
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
AssignStatement r smt =>
SVariable r -> SValue r -> MS (r smt)
assign SrcState ValueState Variable
out (SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator))
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall a b. (a -> b) -> a -> b
$ ClassName
-> State ValueState (CppSrcCode TypeData)
-> [SrcState ValueState Value]
-> SrcState ValueState Value
f ClassName
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 (r :: * -> *). VariableElim r => r Variable -> r TypeData
variableType SrcState ValueState Variable
out)
(SrcState ValueState Variable -> SrcState ValueState Value
forall (r :: * -> *). VariableValue r => SVariable r -> SValue r
valueOf SrcState ValueState Variable
out SrcState ValueState Value
-> [SrcState ValueState Value] -> [SrcState ValueState Value]
forall a. a -> [a] -> [a]
: [SrcState ValueState Value]
ins)
cppInOutCall ClassName
-> State ValueState (CppSrcCode TypeData)
-> [SrcState ValueState Value]
-> SrcState ValueState Value
f ClassName
n [SrcState ValueState Value]
ins [SrcState ValueState Variable]
outs [SrcState ValueState Variable]
both = SrcState ValueState Value -> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
StatementSym r smt =>
SValue r -> MS (r smt)
valStmt (SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator))
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall a b. (a -> b) -> a -> b
$ ClassName
-> State ValueState (CppSrcCode TypeData)
-> [SrcState ValueState Value]
-> SrcState ValueState Value
f ClassName
n State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void ((SrcState ValueState Variable -> SrcState ValueState Value)
-> [SrcState ValueState Variable] -> [SrcState ValueState Value]
forall a b. (a -> b) -> [a] -> [b]
map SrcState ValueState Variable -> SrcState ValueState Value
forall (r :: * -> *). VariableValue r => SVariable r -> SValue r
valueOf [SrcState ValueState Variable]
both [SrcState ValueState Value]
-> [SrcState ValueState Value] -> [SrcState ValueState Value]
forall a. [a] -> [a] -> [a]
++ [SrcState ValueState Value]
ins
[SrcState ValueState Value]
-> [SrcState ValueState Value] -> [SrcState ValueState Value]
forall a. [a] -> [a] -> [a]
++ (SrcState ValueState Variable -> SrcState ValueState Value)
-> [SrcState ValueState Variable] -> [SrcState ValueState Value]
forall a b. (a -> b) -> [a] -> [b]
map SrcState ValueState Variable -> SrcState ValueState Value
forall (r :: * -> *). VariableValue r => SVariable r -> SValue r
valueOf [SrcState ValueState Variable]
outs)
cppsInOut :: (VS (CppSrcCode TypeData) ->
[MS (CppSrcCode ParamData)] -> MS (CppSrcCode Body) ->
MS (CppSrcCode md)) -> [SVariable CppSrcCode] -> [SVariable CppSrcCode] ->
[SVariable CppSrcCode] -> MS (CppSrcCode Body) -> MS (CppSrcCode md)
cppsInOut :: forall md.
(State ValueState (CppSrcCode TypeData)
-> [SrcState MethodState ParamData]
-> SrcState MethodState Doc
-> MS (CppSrcCode md))
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> SrcState MethodState Doc
-> MS (CppSrcCode md)
cppsInOut State ValueState (CppSrcCode TypeData)
-> [SrcState MethodState ParamData]
-> SrcState MethodState Doc
-> MS (CppSrcCode md)
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 md)
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 (r :: * -> *). VariableElim r => r Variable -> r TypeData
variableType SrcState ValueState Variable
v)
([SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> [SrcState MethodState ParamData]
forall (r :: * -> *).
(ParameterSym r, TypeElim r, VariableElim r) =>
[SVariable r]
-> [SVariable r] -> [SVariable r] -> [MS (r ParamData)]
cppInOutParams [SrcState ValueState Variable]
ins [SrcState ValueState Variable
v] []) ((CppSrcCode (Doc, Terminator)
-> CppSrcCode Doc
-> CppSrcCode (Doc, Terminator)
-> CppSrcCode Doc)
-> SrcState MethodState (Doc, Terminator)
-> SrcState MethodState Doc
-> SrcState MethodState (Doc, Terminator)
-> 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 (((Doc, Terminator) -> Doc -> (Doc, Terminator) -> Doc)
-> CppSrcCode (Doc, Terminator)
-> CppSrcCode Doc
-> CppSrcCode (Doc, Terminator)
-> CppSrcCode Doc
forall (r :: * -> *) a b c d.
Applicative r =>
(a -> b -> c -> d) -> r a -> r b -> r c -> r d
on3CodeValues (Doc, Terminator) -> Doc -> (Doc, Terminator) -> Doc
surroundBody)
(SrcState ValueState Variable
-> CppSrcCode ScopeData -> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
DeclStatement r smt =>
SVariable r -> r ScopeData -> MS (r smt)
varDec SrcState ValueState Variable
v CppSrcCode ScopeData
forall (r :: * -> *). ScopeSym r => r ScopeData
local) SrcState MethodState Doc
b (SrcState ValueState Value -> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
ControlStatement r smt =>
SValue r -> MS (r smt)
returnStmt (SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator))
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall a b. (a -> b) -> a -> b
$ SrcState ValueState Variable -> SrcState ValueState Value
forall (r :: * -> *). VariableValue r => SVariable r -> SValue r
valueOf SrcState ValueState Variable
v))
cppsInOut State ValueState (CppSrcCode TypeData)
-> [SrcState MethodState ParamData]
-> SrcState MethodState Doc
-> MS (CppSrcCode md)
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 md)
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 (r :: * -> *). VariableElim r => r Variable -> r TypeData
variableType SrcState ValueState Variable
v)
([SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> [SrcState MethodState ParamData]
forall (r :: * -> *).
(ParameterSym r, TypeElim r, VariableElim r) =>
[SVariable r]
-> [SVariable r] -> [SVariable r] -> [MS (r ParamData)]
cppInOutParams [SrcState ValueState Variable]
ins [] [SrcState ValueState Variable
v]) ((CppSrcCode Doc -> CppSrcCode (Doc, Terminator) -> CppSrcCode Doc)
-> SrcState MethodState Doc
-> SrcState MethodState (Doc, Terminator)
-> SrcState MethodState Doc
forall a b c s.
(a -> b -> c) -> State s a -> State s b -> State s c
on2StateValues ((Doc -> (Doc, Terminator) -> Doc)
-> CppSrcCode Doc -> CppSrcCode (Doc, Terminator) -> CppSrcCode Doc
forall (r :: * -> *) a b c.
Applicative r =>
(a -> b -> c) -> r a -> r b -> r c
on2CodeValues Doc -> (Doc, Terminator) -> Doc
appendToBody) SrcState MethodState Doc
b
(SrcState ValueState Value -> SrcState MethodState (Doc, Terminator)
forall (r :: * -> *) smt.
ControlStatement r smt =>
SValue r -> MS (r smt)
returnStmt (SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator))
-> SrcState ValueState Value
-> SrcState MethodState (Doc, Terminator)
forall a b. (a -> b) -> a -> b
$ SrcState ValueState Variable -> SrcState ValueState Value
forall (r :: * -> *). VariableValue r => SVariable r -> SValue r
valueOf SrcState ValueState Variable
v))
cppsInOut State ValueState (CppSrcCode TypeData)
-> [SrcState MethodState ParamData]
-> SrcState MethodState Doc
-> MS (CppSrcCode md)
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 md)
f State ValueState (CppSrcCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void ([SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> [SrcState ValueState Variable]
-> [SrcState MethodState ParamData]
forall (r :: * -> *).
(ParameterSym r, TypeElim r, VariableElim r) =>
[SVariable r]
-> [SVariable r] -> [SVariable r] -> [MS (r ParamData)]
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 md)) -> [SVariable CppHdrCode] -> [SVariable CppHdrCode] ->
[SVariable CppHdrCode] -> MS (CppHdrCode Body) -> MS (CppHdrCode md)
cpphInOut :: forall md.
(State ValueState (CppHdrCode TypeData)
-> [HdrState MethodState ParamData]
-> HdrState MethodState Doc
-> MS (CppHdrCode md))
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> HdrState MethodState Doc
-> MS (CppHdrCode md)
cpphInOut State ValueState (CppHdrCode TypeData)
-> [HdrState MethodState ParamData]
-> HdrState MethodState Doc
-> MS (CppHdrCode md)
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 md)
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 (r :: * -> *). VariableElim r => r Variable -> r TypeData
variableType HdrState ValueState Variable
v)
([HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> [HdrState MethodState ParamData]
forall (r :: * -> *).
(ParameterSym r, TypeElim r, VariableElim r) =>
[SVariable r]
-> [SVariable r] -> [SVariable r] -> [MS (r ParamData)]
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 md)
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 md)
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 (r :: * -> *). VariableElim r => r Variable -> r TypeData
variableType HdrState ValueState Variable
v)
([HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> [HdrState MethodState ParamData]
forall (r :: * -> *).
(ParameterSym r, TypeElim r, VariableElim r) =>
[SVariable r]
-> [SVariable r] -> [SVariable r] -> [MS (r ParamData)]
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 md)
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 md)
f State ValueState (CppHdrCode TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void ([HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> [HdrState ValueState Variable]
-> [HdrState MethodState ParamData]
forall (r :: * -> *).
(ParameterSym r, TypeElim r, VariableElim r) =>
[SVariable r]
-> [SVariable r] -> [SVariable r] -> [MS (r ParamData)]
cppInOutParams [HdrState ValueState Variable]
ins [HdrState ValueState Variable]
outs [HdrState ValueState Variable]
both) HdrState MethodState Doc
b
cppInOutParams :: (ParameterSym r, TypeElim r, VariableElim r) =>
[SVariable r] -> [SVariable r] -> [SVariable r] -> [MS (r ParamData)]
cppInOutParams :: forall (r :: * -> *).
(ParameterSym r, TypeElim r, VariableElim r) =>
[SVariable r]
-> [SVariable r] -> [SVariable r] -> [MS (r ParamData)]
cppInOutParams [SVariable r]
ins [SVariable r
_] [] = (SVariable r -> MS (r ParamData))
-> [SVariable r] -> [MS (r ParamData)]
forall a b. (a -> b) -> [a] -> [b]
map SVariable r -> MS (r ParamData)
forall (r :: * -> *).
(ParameterSym r, TypeElim r, VariableElim r) =>
SVariable r -> MS (r ParamData)
getParam [SVariable r]
ins
cppInOutParams [SVariable r]
ins [] [SVariable r
v] = (SVariable r -> MS (r ParamData))
-> [SVariable r] -> [MS (r ParamData)]
forall a b. (a -> b) -> [a] -> [b]
map SVariable r -> MS (r ParamData)
forall (r :: * -> *).
(ParameterSym r, TypeElim r, VariableElim r) =>
SVariable r -> MS (r ParamData)
getParam ([SVariable r] -> [MS (r ParamData)])
-> [SVariable r] -> [MS (r ParamData)]
forall a b. (a -> b) -> a -> b
$ SVariable r
v SVariable r -> [SVariable r] -> [SVariable r]
forall a. a -> [a] -> [a]
: [SVariable r]
ins
cppInOutParams [SVariable r]
ins [SVariable r]
outs [SVariable r]
both = (SVariable r -> MS (r ParamData))
-> [SVariable r] -> [MS (r ParamData)]
forall a b. (a -> b) -> [a] -> [b]
map SVariable r -> MS (r ParamData)
forall (r :: * -> *).
ParameterSym r =>
SVariable r -> MS (r ParamData)
pointerParam [SVariable r]
both [MS (r ParamData)] -> [MS (r ParamData)] -> [MS (r ParamData)]
forall a. [a] -> [a] -> [a]
++ (SVariable r -> MS (r ParamData))
-> [SVariable r] -> [MS (r ParamData)]
forall a b. (a -> b) -> [a] -> [b]
map SVariable r -> MS (r ParamData)
forall (r :: * -> *).
(ParameterSym r, TypeElim r, VariableElim r) =>
SVariable r -> MS (r ParamData)
getParam [SVariable r]
ins [MS (r ParamData)] -> [MS (r ParamData)] -> [MS (r ParamData)]
forall a. [a] -> [a] -> [a]
++
(SVariable r -> MS (r ParamData))
-> [SVariable r] -> [MS (r ParamData)]
forall a b. (a -> b) -> [a] -> [b]
map SVariable r -> MS (r ParamData)
forall (r :: * -> *).
ParameterSym r =>
SVariable r -> MS (r ParamData)
pointerParam [SVariable r]
outs