drasil-gool-0.1.1.0: A framework for code and document generation for scientific software - GOOL SubPackage
Safe HaskellNone
LanguageGHC2024

Drasil.GOOL.InterfaceGOOL

Synopsis

Documentation

type GSProgram (a :: k -> Type) (prg :: k) = GS (a prg) Source #

type Class = Doc Source #

type CSStateVar (r :: k -> Type) (stvr :: k) = CS (r stvr) Source #

type Initializers (r :: k -> Type) (var :: k) (val :: k) = [(VS (r var), VS (r val))] Source #

class (UnRepr r typ, Argument r val, BodySym r bod block, BlockSym r block stmt, CommandLineArgs r val, Literal r val typ, MathConstant r val, VariableValue r var val, VariableSym r var typ, TypeSym r typ, OOTypeSym r typ, OOVariableSym r var val typ, SelfSym r var, BooleanExpression r val, Comparison r val, NumericExpression r val, ValueSym r val typ, InternalValueExp r var val typ, ValueExpression r var val binder typ, OOValueExpression r var val typ, IndexTranslator r val, Array r var val, List r val, ListStatement r stmt val, Reference r val, Set r val, OOFunctionSym r val typ, ParameterSym r param var, ScopeSym r scope, BinderSym r binder typ, InternalList r block var val, MethodSym r mthd vis param bod var typ, OOMethodSym r mthd attch vis param bod var val typ, AttachmentSym r attch, VisibilitySym r vis, StateVarSym r stvr attch vis var val, ClassSym r cls stvr mthd, TypeElim r typ, VariableElim r var typ, EmptyStatement r stmt, MultiStatement r stmt, ValueStatement r stmt val, CommentStatement r stmt, DeclStatement r bod stmt var scope val, OODeclStatement r stmt var scope val, AssignStatement r stmt var val, FuncAppStatement r stmt var val, OOFuncAppStatement r stmt var val, ControlStatement r bod stmt var val, StringStatement r stmt var val, PrintConsole r stmt val, ReadConsole r stmt var, FileHandling r stmt var val, PrintFile r stmt val, ReadFile r stmt var val, ModuleSym r mod cls mthd, FileSym r file mod, ProgramSym r prg file) => OOProg (r :: Type -> Type) prg file mod cls stvr mthd attch vis param bod block stmt var scope val binder typ Source #

Wrapper typeclass that bundles everything essential for generating an object-oriented program.

class ProgramSym (r :: k -> Type) (prg :: k) (file :: k) | r -> prg file where Source #

Class for representing a program. Usually ProgData is used for the representation.

Methods

prog :: Label -> Label -> [FS (r file)] -> GSProgram r prg Source #

Given program name, program purpose, and list of files, Generates a representation of a program.

Instances

Instances details
ProgramSym CodeInfoOO GOOLState () Source # 
Instance details

Defined in Drasil.GOOL.CodeInfoOO

ProgramSym CSharpCode ProgData FileData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CSharpRenderer

ProgramSym CppSrcCode ProgData FileData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

ProgramSym JavaCode ProgData FileData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.JavaRenderer

ProgramSym PythonCode ProgData FileData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.PythonRenderer

ProgramSym SwiftCode ProgData FileData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.SwiftRenderer

ProgramSym r prg file => ProgramSym (LoggingFor r :: Type -> Type) (prg :: Type) (file :: Type) Source # 
Instance details

Defined in Drasil.Shared.LanguageRenderer.LoggingFor

Methods

prog :: Label -> Label -> [FS (LoggingFor r file)] -> GSProgram (LoggingFor r) prg Source #

Pair p => ProgramSym (p CppSrcCode CppHdrCode :: Type -> Type) ProgData FileData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

class FileSym (r :: k -> Type) (file :: k) (mod :: k) | r -> file mod where Source #

Class for representing a file.

Methods

fileDoc :: FS (r mod) -> FS (r file) Source #

Given a module, generates a representation of a file. (Implicit assumption: exactly one module per file)

docMod :: String -> String -> [String] -> String -> FS (r file) -> FS (r file) Source #

Given module description, watermark, list of author names, date as a String, and file to comment, creates a documented module (i.e. module with a header comment)

Instances

Instances details
FileSym CodeInfoOO () () Source # 
Instance details

Defined in Drasil.GOOL.CodeInfoOO

Methods

fileDoc :: FS (CodeInfoOO ()) -> FS (CodeInfoOO ()) Source #

docMod :: String -> String -> [String] -> String -> FS (CodeInfoOO ()) -> FS (CodeInfoOO ()) Source #

FileSym CSharpCode FileData ModData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CSharpRenderer

FileSym CppHdrCode FileData ModData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

FileSym CppSrcCode FileData ModData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

FileSym JavaCode FileData ModData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.JavaRenderer

FileSym PythonCode FileData ModData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.PythonRenderer

FileSym SwiftCode FileData ModData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.SwiftRenderer

FileSym r file mod => FileSym (LoggingFor r :: Type -> Type) (file :: Type) (mod :: Type) Source # 
Instance details

Defined in Drasil.Shared.LanguageRenderer.LoggingFor

Methods

fileDoc :: FS (LoggingFor r mod) -> FS (LoggingFor r file) Source #

docMod :: String -> String -> [String] -> String -> FS (LoggingFor r file) -> FS (LoggingFor r file) Source #

Pair p => FileSym (p CppSrcCode CppHdrCode :: Type -> Type) FileData ModData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

class ModuleSym (r :: k -> Type) (mod :: k) (cls :: k) (mthd :: k) | r -> mod cls mthd where Source #

Class for representing a module.

Methods

buildModule :: Label -> [Label] -> [MS (r mthd)] -> [CS (r cls)] -> FS (r mod) Source #

Given module name, list of import names, list of module functions, and list of module classes, generates a representation of a module.

Instances

Instances details
ModuleSym CodeInfoOO () () () Source # 
Instance details

Defined in Drasil.GOOL.CodeInfoOO

Methods

buildModule :: Label -> [Label] -> [MS (CodeInfoOO ())] -> [CS (CodeInfoOO ())] -> FS (CodeInfoOO ()) Source #

ModuleSym CSharpCode ModData Class MethodData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CSharpRenderer

ModuleSym JavaCode ModData Class MethodData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.JavaRenderer

ModuleSym PythonCode ModData Class MethodData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.PythonRenderer

ModuleSym SwiftCode ModData Class MethodData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.SwiftRenderer

ModuleSym r mod cls mthd => ModuleSym (LoggingFor r :: Type -> Type) (mod :: Type) (cls :: Type) (mthd :: Type) Source # 
Instance details

Defined in Drasil.Shared.LanguageRenderer.LoggingFor

Methods

buildModule :: Label -> [Label] -> [MS (LoggingFor r mthd)] -> [CS (LoggingFor r cls)] -> FS (LoggingFor r mod) Source #

class ClassSym (r :: k -> Type) (cls :: k) (stvr :: k) (mthd :: k) | r -> cls stvr mthd where Source #

Class for representing an OO class.

Methods

buildClass :: Maybe Label -> [CSStateVar r stvr] -> [MS (r mthd)] -> [MS (r mthd)] -> CS (r cls) Source #

Main external method for creating a class. Inputs: parent class, variables, constructor(s), methods

extraClass :: Label -> Maybe Label -> [CSStateVar r stvr] -> [MS (r mthd)] -> [MS (r mthd)] -> CS (r cls) Source #

Creates an extra class, i.e. with a different name than the module name. Inputs: class name, the rest are the same as buildClass.

implementingClass :: Label -> [Label] -> [CSStateVar r stvr] -> [MS (r mthd)] -> [MS (r mthd)] -> CS (r cls) Source #

Creates a class implementing a list of interfaces. Inputs: class name, interface names, variables, constructor(s), methods

docClass :: String -> CS (r cls) -> CS (r cls) Source #

Instances

Instances details
ClassSym CodeInfoOO () () () Source # 
Instance details

Defined in Drasil.GOOL.CodeInfoOO

ClassSym CSharpCode Class StateVar MethodData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CSharpRenderer

ClassSym JavaCode Class StateVar MethodData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.JavaRenderer

ClassSym PythonCode Class StateVar MethodData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.PythonRenderer

ClassSym SwiftCode Class StateVar MethodData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.SwiftRenderer

ClassSym r cls stvr mthd => ClassSym (LoggingFor r :: Type -> Type) (cls :: Type) (stvr :: Type) (mthd :: Type) Source # 
Instance details

Defined in Drasil.Shared.LanguageRenderer.LoggingFor

Methods

buildClass :: Maybe Label -> [CSStateVar (LoggingFor r) stvr] -> [MS (LoggingFor r mthd)] -> [MS (LoggingFor r mthd)] -> CS (LoggingFor r cls) Source #

extraClass :: Label -> Maybe Label -> [CSStateVar (LoggingFor r) stvr] -> [MS (LoggingFor r mthd)] -> [MS (LoggingFor r mthd)] -> CS (LoggingFor r cls) Source #

implementingClass :: Label -> [Label] -> [CSStateVar (LoggingFor r) stvr] -> [MS (LoggingFor r mthd)] -> [MS (LoggingFor r mthd)] -> CS (LoggingFor r cls) Source #

docClass :: String -> CS (LoggingFor r cls) -> CS (LoggingFor r cls) Source #

class OOTypeSym (r :: k -> Type) (typ :: k) | r -> typ where Source #

Methods

obj :: ClassName -> VS (r typ) Source #

Instances

Instances details
OOTypeSym CodeInfoOO () Source # 
Instance details

Defined in Drasil.GOOL.CodeInfoOO

Methods

obj :: ClassName -> VS (CodeInfoOO ()) Source #

OOTypeSym CSharpCode TypeData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CSharpRenderer

OOTypeSym CppHdrCode TypeData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

OOTypeSym CppSrcCode TypeData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

OOTypeSym JavaCode TypeData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.JavaRenderer

OOTypeSym PythonCode TypeData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.PythonRenderer

OOTypeSym SwiftCode TypeData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.SwiftRenderer

OOTypeSym r typ => OOTypeSym (LoggingFor r :: Type -> Type) (typ :: Type) Source # 
Instance details

Defined in Drasil.Shared.LanguageRenderer.LoggingFor

Methods

obj :: ClassName -> VS (LoggingFor r typ) Source #

Pair p => OOTypeSym (p CppSrcCode CppHdrCode :: Type -> Type) TypeData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

class OOVariableSym (r :: k -> Type) (var :: k) (val :: k) (typ :: k) | r -> var val typ where Source #

Methods

classVar :: Label -> VS (r typ) -> VS (r var) Source #

A class-level variable, separate from its class (i.e. v, not v)

classConst :: Label -> VS (r typ) -> VS (r var) Source #

A class-level constant, separate from its class (i.e. v, not v)

classVarAccess :: VS (r typ) -> VS (r var) -> VS (r var) Source #

Given a class C and a class-level variable v, creates v

extClassVarAccess :: VS (r typ) -> VS (r var) -> VS (r var) Source #

Given a class C from an external module and a class-level variable v, performs any necessary imports and creates v

instanceVarAccess :: VS (r val) -> VS (r var) -> VS (r var) Source #

Given an instance i and an instance-level variable v, creates `i.v`

Instances

Instances details
OOVariableSym CodeInfoOO () () () Source # 
Instance details

Defined in Drasil.GOOL.CodeInfoOO

OOVariableSym CSharpCode Variable Value TypeData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CSharpRenderer

OOVariableSym CppHdrCode Variable Value TypeData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

OOVariableSym CppSrcCode Variable Value TypeData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

OOVariableSym JavaCode Variable Value TypeData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.JavaRenderer

OOVariableSym PythonCode Variable Value TypeData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.PythonRenderer

OOVariableSym SwiftCode Variable Value TypeData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.SwiftRenderer

OOVariableSym r var val typ => OOVariableSym (LoggingFor r :: Type -> Type) (var :: Type) (val :: Type) (typ :: Type) Source # 
Instance details

Defined in Drasil.Shared.LanguageRenderer.LoggingFor

Methods

classVar :: Label -> VS (LoggingFor r typ) -> VS (LoggingFor r var) Source #

classConst :: Label -> VS (LoggingFor r typ) -> VS (LoggingFor r var) Source #

classVarAccess :: VS (LoggingFor r typ) -> VS (LoggingFor r var) -> VS (LoggingFor r var) Source #

extClassVarAccess :: VS (LoggingFor r typ) -> VS (LoggingFor r var) -> VS (LoggingFor r var) Source #

instanceVarAccess :: VS (LoggingFor r val) -> VS (LoggingFor r var) -> VS (LoggingFor r var) Source #

Pair p => OOVariableSym (p CppSrcCode CppHdrCode :: Type -> Type) Variable Value TypeData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

($->) :: forall {k} r (var :: k) (val :: k) (typ :: k). OOVariableSym r var val typ => VS (r val) -> VS (r var) -> VS (r var) infixl 9 Source #

class SelfSym (r :: k -> Type) (var :: k) | r -> var where Source #

Methods

self :: VS (r var) Source #

self keyword

instanceVarSelf :: forall {k} r (var :: k) (val :: k) (typ :: k). (OOVariableSym r var val typ, SelfSym r var, VariableValue r var val) => VS (r var) -> VS (r var) Source #

Given a variable v, creates `self.v`

class OOValueExpression (r :: k -> Type) (var :: k) (val :: k) (typ :: k) | r -> var val typ where Source #

Instances

Instances details
OOValueExpression CodeInfoOO () () () Source # 
Instance details

Defined in Drasil.GOOL.CodeInfoOO

OOValueExpression CSharpCode Variable Value TypeData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CSharpRenderer

OOValueExpression CppHdrCode Variable Value TypeData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

OOValueExpression CppSrcCode Variable Value TypeData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

OOValueExpression JavaCode Variable Value TypeData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.JavaRenderer

OOValueExpression PythonCode Variable Value TypeData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.PythonRenderer

OOValueExpression SwiftCode Variable Value TypeData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.SwiftRenderer

OOValueExpression r var val typ => OOValueExpression (LoggingFor r :: Type -> Type) (var :: Type) (val :: Type) (typ :: Type) Source # 
Instance details

Defined in Drasil.Shared.LanguageRenderer.LoggingFor

Pair p => OOValueExpression (p CppSrcCode CppHdrCode :: Type -> Type) Variable Value TypeData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

selfMethodCall :: forall {k} r (var :: k) (val :: k) (typ :: k). (InternalValueExp r var val typ, VariableValue r var val, SelfSym r var) => PosCall r val typ Source #

newObj :: forall {k} r (var :: k) (val :: k) (typ :: k). OOValueExpression r var val typ => PosCtorCall r val typ Source #

extNewObj :: forall {k} r (var :: k) (val :: k) (typ :: k). OOValueExpression r var val typ => Library -> PosCtorCall r val typ Source #

libNewObj :: forall {k} r (var :: k) (val :: k) (typ :: k). OOValueExpression r var val typ => Library -> PosCtorCall r val typ Source #

class OODeclStatement (r :: k -> Type) (stmt :: k) (var :: k) (scope :: k) (val :: k) | r -> stmt var scope val where Source #

Methods

objDecDef :: VS (r var) -> r scope -> VS (r val) -> MS (r stmt) Source #

objDecNew :: VS (r var) -> r scope -> [VS (r val)] -> MS (r stmt) Source #

extObjDecNew :: Library -> VS (r var) -> r scope -> [VS (r val)] -> MS (r stmt) Source #

Instances

Instances details
OODeclStatement CodeInfoOO () () () () Source # 
Instance details

Defined in Drasil.GOOL.CodeInfoOO

Methods

objDecDef :: VS (CodeInfoOO ()) -> CodeInfoOO () -> VS (CodeInfoOO ()) -> MS (CodeInfoOO ()) Source #

objDecNew :: VS (CodeInfoOO ()) -> CodeInfoOO () -> [VS (CodeInfoOO ())] -> MS (CodeInfoOO ()) Source #

extObjDecNew :: Library -> VS (CodeInfoOO ()) -> CodeInfoOO () -> [VS (CodeInfoOO ())] -> MS (CodeInfoOO ()) Source #

OODeclStatement CSharpCode Statement Variable ScopeData Value Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CSharpRenderer

OODeclStatement CppHdrCode Statement Variable ScopeData Value Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

OODeclStatement CppSrcCode Statement Variable ScopeData Value Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

OODeclStatement JavaCode Statement Variable ScopeData Value Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.JavaRenderer

OODeclStatement PythonCode Statement Variable ScopeData Value Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.PythonRenderer

OODeclStatement SwiftCode Statement Variable ScopeData Value Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.SwiftRenderer

(DeclStatement (LoggingFor r) bod stmt var scope val, OODeclStatement r stmt var scope val) => OODeclStatement (LoggingFor r :: Type -> Type) (stmt :: Type) (var :: Type) (scope :: Type) (val :: Type) Source # 
Instance details

Defined in Drasil.Shared.LanguageRenderer.LoggingFor

Methods

objDecDef :: VS (LoggingFor r var) -> LoggingFor r scope -> VS (LoggingFor r val) -> MS (LoggingFor r stmt) Source #

objDecNew :: VS (LoggingFor r var) -> LoggingFor r scope -> [VS (LoggingFor r val)] -> MS (LoggingFor r stmt) Source #

extObjDecNew :: Library -> VS (LoggingFor r var) -> LoggingFor r scope -> [VS (LoggingFor r val)] -> MS (LoggingFor r stmt) Source #

Pair p => OODeclStatement (p CppSrcCode CppHdrCode :: Type -> Type) Statement Variable ScopeData Value Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

objDecNewNoParams :: forall {k} r (stmt :: k) (var :: k) (scope :: k) (val :: k). OODeclStatement r stmt var scope val => VS (r var) -> r scope -> MS (r stmt) Source #

extObjDecNewNoParams :: forall {k} r (stmt :: k) (var :: k) (scope :: k) (val :: k). OODeclStatement r stmt var scope val => Library -> VS (r var) -> r scope -> MS (r stmt) Source #

class OOFuncAppStatement (r :: k -> Type) (stmt :: k) (var :: k) (val :: k) | r -> stmt var val where Source #

Methods

selfInOutCall :: InOutCall r stmt var val Source #

Instances

Instances details
OOFuncAppStatement CodeInfoOO () () () Source # 
Instance details

Defined in Drasil.GOOL.CodeInfoOO

OOFuncAppStatement CSharpCode Statement Variable Value Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CSharpRenderer

OOFuncAppStatement CppHdrCode Statement Variable Value Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

OOFuncAppStatement CppSrcCode Statement Variable Value Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

OOFuncAppStatement JavaCode Statement Variable Value Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.JavaRenderer

OOFuncAppStatement PythonCode Statement Variable Value Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.PythonRenderer

OOFuncAppStatement SwiftCode Statement Variable Value Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.SwiftRenderer

OOFuncAppStatement r stmt var val => OOFuncAppStatement (LoggingFor r :: Type -> Type) (stmt :: Type) (var :: Type) (val :: Type) Source # 
Instance details

Defined in Drasil.Shared.LanguageRenderer.LoggingFor

Methods

selfInOutCall :: InOutCall (LoggingFor r) stmt var val Source #

Pair p => OOFuncAppStatement (p CppSrcCode CppHdrCode :: Type -> Type) Statement Variable Value Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

class GetSet (r :: k -> Type) (var :: k) (val :: k) | r -> var val where Source #

Methods

get :: VS (r val) -> VS (r var) -> VS (r val) Source #

set :: VS (r val) -> VS (r var) -> VS (r val) -> VS (r val) Source #

Instances

Instances details
GetSet CodeInfoOO () () Source # 
Instance details

Defined in Drasil.GOOL.CodeInfoOO

Methods

get :: VS (CodeInfoOO ()) -> VS (CodeInfoOO ()) -> VS (CodeInfoOO ()) Source #

set :: VS (CodeInfoOO ()) -> VS (CodeInfoOO ()) -> VS (CodeInfoOO ()) -> VS (CodeInfoOO ()) Source #

GetSet CSharpCode Variable Value Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CSharpRenderer

GetSet CppHdrCode Variable Value Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

GetSet CppSrcCode Variable Value Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

GetSet JavaCode Variable Value Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.JavaRenderer

GetSet PythonCode Variable Value Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.PythonRenderer

GetSet SwiftCode Variable Value Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.SwiftRenderer

GetSet r var val => GetSet (LoggingFor r :: Type -> Type) (var :: Type) (val :: Type) Source # 
Instance details

Defined in Drasil.Shared.LanguageRenderer.LoggingFor

Methods

get :: VS (LoggingFor r val) -> VS (LoggingFor r var) -> VS (LoggingFor r val) Source #

set :: VS (LoggingFor r val) -> VS (LoggingFor r var) -> VS (LoggingFor r val) -> VS (LoggingFor r val) Source #

Pair p => GetSet (p CppSrcCode CppHdrCode :: Type -> Type) Variable Value Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

class InternalValueExp (r :: k -> Type) (var :: k) (val :: k) (typ :: k) | r -> var val typ where Source #

A class for representing method calls, both instance- and class-level

Methods

objMethodCallMixedArgs' :: Label -> VS (r typ) -> VS (r val) -> [VS (r val)] -> NamedArgs r var val -> VS (r val) Source #

Generic function for calling a method. Takes the function name, the return type, the object, a list of positional arguments, and a list of named arguments.

classMethodCallMixedArgs' :: Label -> VS (r typ) -> VS (r typ) -> [VS (r val)] -> NamedArgs r var val -> VS (r val) Source #

Generic function for calling a class method. Takes the function name, the return type, the class type, a list of positional arguments, and a list of named arguments.

Instances

Instances details
InternalValueExp CodeInfoOO () () () Source # 
Instance details

Defined in Drasil.GOOL.CodeInfoOO

InternalValueExp CSharpCode Variable Value TypeData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CSharpRenderer

InternalValueExp CppHdrCode Variable Value TypeData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

InternalValueExp CppSrcCode Variable Value TypeData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

InternalValueExp JavaCode Variable Value TypeData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.JavaRenderer

InternalValueExp PythonCode Variable Value TypeData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.PythonRenderer

InternalValueExp SwiftCode Variable Value TypeData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.SwiftRenderer

InternalValueExp r var val typ => InternalValueExp (LoggingFor r :: Type -> Type) (var :: Type) (val :: Type) (typ :: Type) Source # 
Instance details

Defined in Drasil.Shared.LanguageRenderer.LoggingFor

Methods

objMethodCallMixedArgs' :: Label -> VS (LoggingFor r typ) -> VS (LoggingFor r val) -> [VS (LoggingFor r val)] -> NamedArgs (LoggingFor r) var val -> VS (LoggingFor r val) Source #

classMethodCallMixedArgs' :: Label -> VS (LoggingFor r typ) -> VS (LoggingFor r typ) -> [VS (LoggingFor r val)] -> NamedArgs (LoggingFor r) var val -> VS (LoggingFor r val) Source #

Pair p => InternalValueExp (p CppSrcCode CppHdrCode :: Type -> Type) Variable Value TypeData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

objMethodCall :: forall {k} r (var :: k) (val :: k) (typ :: k). InternalValueExp r var val typ => VS (r typ) -> VS (r val) -> Label -> [VS (r val)] -> VS (r val) Source #

Calling a method. t is the return type of the method, o is the object, f is the method name, and ps is a list of positional arguments.

objMethodCallNamedArgs :: forall {k} r (var :: k) (val :: k) (typ :: k). InternalValueExp r var val typ => VS (r typ) -> VS (r val) -> Label -> NamedArgs r var val -> VS (r val) Source #

Calling a method with named arguments.

objMethodCallMixedArgs :: forall {k} r (var :: k) (val :: k) (typ :: k). InternalValueExp r var val typ => VS (r typ) -> VS (r val) -> Label -> [VS (r val)] -> NamedArgs r var val -> VS (r val) Source #

Calling a method with a mix of positional and named arguments.

objMethodCallNoParams :: forall {k} r (var :: k) (val :: k) (typ :: k). InternalValueExp r var val typ => VS (r typ) -> VS (r val) -> Label -> VS (r val) Source #

Calling a method with no parameters.

classMethodCall :: forall {k} r (var :: k) (val :: k) (typ :: k). InternalValueExp r var val typ => VS (r typ) -> VS (r typ) -> Label -> [VS (r val)] -> VS (r val) Source #

Calling a class method. t is the return type of the method, c is the class, f is the method name, and ps is a list of positional arguments.

classMethodCallNamedArgs :: forall {k} r (var :: k) (val :: k) (typ :: k). InternalValueExp r var val typ => VS (r typ) -> VS (r typ) -> Label -> NamedArgs r var val -> VS (r val) Source #

Calling a class method with named arguments.

classMethodCallMixedArgs :: forall {k} r (var :: k) (val :: k) (typ :: k). InternalValueExp r var val typ => VS (r typ) -> VS (r typ) -> Label -> [VS (r val)] -> NamedArgs r var val -> VS (r val) Source #

Calling a class method with a mix of positional and named arguments.

classMethodCallNoParams :: forall {k} r (var :: k) (val :: k) (typ :: k). InternalValueExp r var val typ => VS (r typ) -> VS (r typ) -> Label -> VS (r val) Source #

Calling a class method with no parameters.

class OOMethodSym (r :: k -> Type) (mthd :: k) (attch :: k) (vis :: k) (param :: k) (bod :: k) (var :: k) (val :: k) (typ :: k) | r -> mthd attch vis param bod var val typ where Source #

Methods

method :: Label -> r vis -> r attch -> VS (r typ) -> [MS (r param)] -> MS (r bod) -> MS (r mthd) Source #

getMethod :: VS (r var) -> MS (r mthd) Source #

setMethod :: VS (r var) -> MS (r mthd) Source #

constructor :: [MS (r param)] -> Initializers r var val -> MS (r bod) -> MS (r mthd) Source #

inOutMethod :: Label -> r vis -> r attch -> InOutFunc r mthd bod var Source #

docInOutMethod :: Label -> r vis -> r attch -> DocInOutFunc r mthd bod var Source #

Instances

Instances details
OOMethodSym CodeInfoOO () () () () () () () () Source # 
Instance details

Defined in Drasil.GOOL.CodeInfoOO

OOMethodSym CSharpCode MethodData Doc Doc ParamData Body Variable Value TypeData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CSharpRenderer

OOMethodSym JavaCode MethodData Doc Doc ParamData Body Variable Value TypeData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.JavaRenderer

OOMethodSym PythonCode MethodData AttachmentData Doc ParamData Body Variable Value TypeData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.PythonRenderer

OOMethodSym SwiftCode MethodData Doc Doc ParamData Body Variable Value TypeData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.SwiftRenderer

OOMethodSym r mthd attch vis param bod var val typ => OOMethodSym (LoggingFor r :: Type -> Type) (mthd :: Type) (attch :: Type) (vis :: Type) (param :: Type) (bod :: Type) (var :: Type) (val :: Type) (typ :: Type) Source # 
Instance details

Defined in Drasil.Shared.LanguageRenderer.LoggingFor

Methods

method :: Label -> LoggingFor r vis -> LoggingFor r attch -> VS (LoggingFor r typ) -> [MS (LoggingFor r param)] -> MS (LoggingFor r bod) -> MS (LoggingFor r mthd) Source #

getMethod :: VS (LoggingFor r var) -> MS (LoggingFor r mthd) Source #

setMethod :: VS (LoggingFor r var) -> MS (LoggingFor r mthd) Source #

constructor :: [MS (LoggingFor r param)] -> Initializers (LoggingFor r) var val -> MS (LoggingFor r bod) -> MS (LoggingFor r mthd) Source #

inOutMethod :: Label -> LoggingFor r vis -> LoggingFor r attch -> InOutFunc (LoggingFor r) mthd bod var Source #

docInOutMethod :: Label -> LoggingFor r vis -> LoggingFor r attch -> DocInOutFunc (LoggingFor r) mthd bod var Source #

privMethod :: forall {k} r (mthd :: k) (attch :: k) (vis :: k) (param :: k) (bod :: k) (var :: k) (val :: k) (typ :: k). (OOMethodSym r mthd attch vis param bod var val typ, AttachmentSym r attch, VisibilitySym r vis) => Label -> VS (r typ) -> [MS (r param)] -> MS (r bod) -> MS (r mthd) Source #

pubMethod :: forall {k} r (mthd :: k) (attch :: k) (vis :: k) (param :: k) (bod :: k) (var :: k) (val :: k) (typ :: k). (OOMethodSym r mthd attch vis param bod var val typ, AttachmentSym r attch, VisibilitySym r vis) => Label -> VS (r typ) -> [MS (r param)] -> MS (r bod) -> MS (r mthd) Source #

initializer :: forall {k} r (mthd :: k) (attch :: k) (vis :: k) (param :: k) (bod :: k) (var :: k) (val :: k) (typ :: k) (block :: k). (OOMethodSym r mthd attch vis param bod var val typ, BodySym r bod block) => [MS (r param)] -> Initializers r var val -> MS (r mthd) Source #

nonInitConstructor :: forall {k} r (mthd :: k) (attch :: k) (vis :: k) (param :: k) (bod :: k) (var :: k) (val :: k) (typ :: k). OOMethodSym r mthd attch vis param bod var val typ => [MS (r param)] -> MS (r bod) -> MS (r mthd) Source #

class StateVarSym (r :: k -> Type) (stvr :: k) (attch :: k) (vis :: k) (var :: k) (val :: k) | r -> stvr attch vis var val where Source #

Class for representing class variables, both instance- and class-level. Used when creating a class, to hold extra information about Attachment and Visibility. Usually Doc is used for the representation.

Methods

stateVar :: r vis -> r attch -> VS (r var) -> CSStateVar r stvr Source #

Given a visibility, attachment, and variable, represent the declaration of a state variable with no initial value.

stateVarDef :: r vis -> r attch -> VS (r var) -> VS (r val) -> CSStateVar r stvr Source #

Given a visibility, attachment, variable, and initial value, represent the declaration of a state variable with the given initial value.

constVar :: r vis -> VS (r var) -> VS (r val) -> CSStateVar r stvr Source #

Given a visibility, variable, and value, represent the declaration of a state constant with the given value.

Instances

Instances details
StateVarSym CodeInfoOO () () () () () Source # 
Instance details

Defined in Drasil.GOOL.CodeInfoOO

StateVarSym CSharpCode StateVar Doc Doc Variable Value Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CSharpRenderer

StateVarSym JavaCode Doc Doc Doc Variable Value Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.JavaRenderer

StateVarSym PythonCode Doc AttachmentData Doc Variable Value Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.PythonRenderer

StateVarSym SwiftCode Doc Doc Doc Variable Value Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.SwiftRenderer

StateVarSym CppHdrCode StateVarData AttachmentData (Doc, VisibilityTag) Variable Value Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

StateVarSym CppSrcCode StateVarData AttachmentData (Doc, VisibilityTag) Variable Value Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

StateVarSym r stvr attch vis var val => StateVarSym (LoggingFor r :: Type -> Type) (stvr :: Type) (attch :: Type) (vis :: Type) (var :: Type) (val :: Type) Source # 
Instance details

Defined in Drasil.Shared.LanguageRenderer.LoggingFor

Methods

stateVar :: LoggingFor r vis -> LoggingFor r attch -> VS (LoggingFor r var) -> CSStateVar (LoggingFor r) stvr Source #

stateVarDef :: LoggingFor r vis -> LoggingFor r attch -> VS (LoggingFor r var) -> VS (LoggingFor r val) -> CSStateVar (LoggingFor r) stvr Source #

constVar :: LoggingFor r vis -> VS (LoggingFor r var) -> VS (LoggingFor r val) -> CSStateVar (LoggingFor r) stvr Source #

Pair p => StateVarSym (p CppSrcCode CppHdrCode :: Type -> Type) StateVarData AttachmentData (Doc, VisibilityTag) Variable Value Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

privDVar :: forall {k} r (attch :: k) (vis :: k) (stvr :: k) (var :: k) (val :: k). (AttachmentSym r attch, VisibilitySym r vis, StateVarSym r stvr attch vis var val) => VS (r var) -> CSStateVar r stvr Source #

pubDVar :: forall {k} r (attch :: k) (vis :: k) (stvr :: k) (var :: k) (val :: k). (AttachmentSym r attch, VisibilitySym r vis, StateVarSym r stvr attch vis var val) => VS (r var) -> CSStateVar r stvr Source #

pubSVar :: forall {k} r (attch :: k) (vis :: k) (stvr :: k) (var :: k) (val :: k). (AttachmentSym r attch, VisibilitySym r vis, StateVarSym r stvr attch vis var val) => VS (r var) -> CSStateVar r stvr Source #

class AttachmentSym (r :: k -> Type) (attch :: k) | r -> attch where Source #

Used to differentiate whether a member is attached to the class or the instance

Methods

classLevel :: r attch Source #

instanceLevel :: r attch Source #

Instances

Instances details
AttachmentSym CodeInfoOO () Source # 
Instance details

Defined in Drasil.GOOL.CodeInfoOO

AttachmentSym CSharpCode Doc Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CSharpRenderer

AttachmentSym CppHdrCode AttachmentData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

AttachmentSym CppSrcCode AttachmentData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

AttachmentSym JavaCode Doc Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.JavaRenderer

AttachmentSym PythonCode AttachmentData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.PythonRenderer

AttachmentSym SwiftCode Doc Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.SwiftRenderer

AttachmentSym r attch => AttachmentSym (LoggingFor r :: Type -> Type) (attch :: Type) Source # 
Instance details

Defined in Drasil.Shared.LanguageRenderer.LoggingFor

Pair p => AttachmentSym (p CppSrcCode CppHdrCode :: Type -> Type) AttachmentData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

class OOFunctionSym (r :: Type -> Type) val typ | r -> val typ where Source #

Methods

func :: Label -> VS (r typ) -> [VS (r val)] -> VS (r FuncData) Source #

objAccess :: VS (r val) -> VS (r FuncData) -> VS (r val) Source #

Instances

Instances details
OOFunctionSym CodeInfoOO () () Source # 
Instance details

Defined in Drasil.GOOL.CodeInfoOO

OOFunctionSym CSharpCode Value TypeData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CSharpRenderer

OOFunctionSym CppHdrCode Value TypeData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

OOFunctionSym CppSrcCode Value TypeData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

OOFunctionSym JavaCode Value TypeData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.JavaRenderer

OOFunctionSym PythonCode Value TypeData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.PythonRenderer

OOFunctionSym SwiftCode Value TypeData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.SwiftRenderer

OOFunctionSym r val typ => OOFunctionSym (LoggingFor r) val typ Source # 
Instance details

Defined in Drasil.Shared.LanguageRenderer.LoggingFor

Methods

func :: Label -> VS (LoggingFor r typ) -> [VS (LoggingFor r val)] -> VS (LoggingFor r FuncData) Source #

objAccess :: VS (LoggingFor r val) -> VS (LoggingFor r FuncData) -> VS (LoggingFor r val) Source #

Pair p => OOFunctionSym (p CppSrcCode CppHdrCode) Value TypeData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

($.) :: OOFunctionSym r val typ => VS (r val) -> VS (r FuncData) -> VS (r val) infixl 9 Source #

selfAccess :: (VariableValue r var val, SelfSym r var, OOFunctionSym r val typ) => VS (r FuncData) -> VS (r val) Source #

class ObserverPattern (r :: Type -> Type) stmt typ | r -> stmt typ where Source #

Methods

notifyObservers :: VS (r FuncData) -> VS (r typ) -> MS (r stmt) Source #

Instances

Instances details
ObserverPattern CodeInfoOO () () Source # 
Instance details

Defined in Drasil.GOOL.CodeInfoOO

ObserverPattern CSharpCode Statement TypeData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CSharpRenderer

ObserverPattern CppHdrCode Statement TypeData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

ObserverPattern CppSrcCode Statement TypeData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

ObserverPattern JavaCode Statement TypeData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.JavaRenderer

ObserverPattern PythonCode Statement TypeData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.PythonRenderer

ObserverPattern SwiftCode Statement TypeData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.SwiftRenderer

ObserverPattern r stmt typ => ObserverPattern (LoggingFor r) stmt typ Source # 
Instance details

Defined in Drasil.Shared.LanguageRenderer.LoggingFor

Methods

notifyObservers :: VS (LoggingFor r FuncData) -> VS (LoggingFor r typ) -> MS (LoggingFor r stmt) Source #

Pair p => ObserverPattern (p CppSrcCode CppHdrCode) Statement TypeData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

initObserverList :: forall {k} r (typ :: k) (var :: k) (bod :: k) (stmt :: k) (scope :: k) (val :: k). (TypeSym r typ, VariableSym r var typ, DeclStatement r bod stmt var scope val) => VS (r typ) -> [VS (r val)] -> r scope -> MS (r stmt) Source #

addObserver :: forall {k} r (typ :: k) (var :: k) (val :: k) (stmt :: k). (TypeSym r typ, VariableSym r var typ, VariableValue r var val, ValueSym r val typ, List r val, ListStatement r stmt val) => VS (r val) -> MS (r stmt) Source #

class StrategyPattern (r :: k -> Type) (bod :: k) (block :: k) (var :: k) (val :: k) | r -> bod block var val where Source #

Methods

runStrategy :: Label -> [(Label, MS (r bod))] -> Maybe (VS (r val)) -> Maybe (VS (r var)) -> MS (r block) Source #

Instances

Instances details
StrategyPattern CodeInfoOO () () () () Source # 
Instance details

Defined in Drasil.GOOL.CodeInfoOO

Methods

runStrategy :: Label -> [(Label, MS (CodeInfoOO ()))] -> Maybe (VS (CodeInfoOO ())) -> Maybe (VS (CodeInfoOO ())) -> MS (CodeInfoOO ()) Source #

StrategyPattern CSharpCode Body Block Variable Value Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CSharpRenderer

StrategyPattern CppHdrCode Body Block Variable Value Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

StrategyPattern CppSrcCode Body Block Variable Value Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

StrategyPattern JavaCode Body Block Variable Value Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.JavaRenderer

StrategyPattern PythonCode Body Block Variable Value Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.PythonRenderer

StrategyPattern SwiftCode Body Block Variable Value Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.SwiftRenderer

StrategyPattern r bod block var val => StrategyPattern (LoggingFor r :: Type -> Type) (bod :: Type) (block :: Type) (var :: Type) (val :: Type) Source # 
Instance details

Defined in Drasil.Shared.LanguageRenderer.LoggingFor

Methods

runStrategy :: Label -> [(Label, MS (LoggingFor r bod))] -> Maybe (VS (LoggingFor r val)) -> Maybe (VS (LoggingFor r var)) -> MS (LoggingFor r block) Source #

Pair p => StrategyPattern (p CppSrcCode CppHdrCode :: Type -> Type) Body Block Variable Value Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

convTypeOO :: forall {k} r (typ :: k). (TypeSym r typ, OOTypeSym r typ) => CodeType -> VS (r typ) Source #