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 :: Type -> Type) = [(SVariable r, SValue r)] Source #

class (UnRepr r TypeData, Argument r, BodySym r bod block, BlockSym r block stmt, CommandLineArgs r, Literal r, MathConstant r, OOVariableValue r, BooleanExpression r, Comparison r, NumericExpression r, InternalValueExp r, OOValueExpression r, Array r, List r, ListStatement r stmt, Reference r, Set r, OOFunctionSym r, ParameterSym r, VariableValue r, ScopeSym r, BinderSym r, InternalList r block, MethodSym r vis mthd bod, OOMethodSym r vis mthd attch bod, ClassSym r vis mthd stvr attch, TypeElim r, VariableElim r, EmptyStatement r stmt, MultiStatement r stmt, ValueStatement r stmt, CommentStatement r stmt, OODeclStatement r stmt bod, AssignStatement r stmt, OOFuncAppStatement r stmt, ControlStatement r stmt bod, StringStatement r stmt, PrintConsole r stmt, ReadConsole r stmt, FileHandling r stmt, PrintFile r stmt, ReadFile r stmt, ModuleSym r mod mthd, FileSym r file mod, ProgramSym r prg file) => OOProg (r :: Type -> Type) vis stmt mthd stvr attch prg file mod bod block 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 :: Type -> Type) mod mthd | r -> mod mthd where Source #

Class for representing a module.

Methods

buildModule :: Label -> [Label] -> [MS (r mthd)] -> [CS (r Class)] -> 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 Class)] -> FS (CodeInfoOO ()) Source #

ModuleSym CSharpCode ModData MethodData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CSharpRenderer

ModuleSym JavaCode ModData MethodData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.JavaRenderer

ModuleSym PythonCode ModData MethodData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.PythonRenderer

ModuleSym SwiftCode ModData MethodData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.SwiftRenderer

ModuleSym r mod mthd => ModuleSym (LoggingFor r) mod mthd Source # 
Instance details

Defined in Drasil.Shared.LanguageRenderer.LoggingFor

Methods

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

class StateVarSym r vis stvr attch => ClassSym (r :: Type -> Type) vis mthd stvr attch | r -> mthd where Source #

Class for representing an OO class.

Methods

buildClass :: Maybe Label -> [CSStateVar r stvr] -> [MS (r mthd)] -> [MS (r mthd)] -> CS (r Class) 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 Class) 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 Class) Source #

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

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

Instances

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

Defined in Drasil.GOOL.CodeInfoOO

ClassSym CSharpCode Doc MethodData StateVar Doc Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CSharpRenderer

ClassSym JavaCode Doc MethodData StateVar Doc Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.JavaRenderer

ClassSym PythonCode Doc MethodData StateVar AttachmentData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.PythonRenderer

ClassSym SwiftCode Doc MethodData StateVar Doc Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.SwiftRenderer

ClassSym r vis mthd stvr attch => ClassSym (LoggingFor r) vis mthd stvr attch 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 Class) Source #

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

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

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

class TypeSym r => OOTypeSym (r :: Type -> Type) where Source #

Methods

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

Instances

Instances details
OOTypeSym CodeInfoOO Source # 
Instance details

Defined in Drasil.GOOL.CodeInfoOO

OOTypeSym CSharpCode Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CSharpRenderer

OOTypeSym CppHdrCode Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

OOTypeSym CppSrcCode Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

OOTypeSym JavaCode Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.JavaRenderer

OOTypeSym PythonCode Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.PythonRenderer

OOTypeSym SwiftCode Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.SwiftRenderer

OOTypeSym r => OOTypeSym (LoggingFor r) Source # 
Instance details

Defined in Drasil.Shared.LanguageRenderer.LoggingFor

Pair p => OOTypeSym (p CppSrcCode CppHdrCode) Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

class (VariableSym r, OOTypeSym r) => OOVariableSym (r :: Type -> Type) where Source #

Methods

classVar :: Label -> VS (r TypeData) -> SVariable r Source #

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

classConst :: Label -> VS (r TypeData) -> SVariable r Source #

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

classVarAccess :: VS (r TypeData) -> SVariable r -> SVariable r Source #

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

extClassVarAccess :: VS (r TypeData) -> SVariable r -> SVariable r Source #

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

instanceVarAccess :: SValue r -> SVariable r -> SVariable r 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 Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CSharpRenderer

OOVariableSym CppHdrCode Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

OOVariableSym CppSrcCode Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

OOVariableSym JavaCode Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.JavaRenderer

OOVariableSym PythonCode Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.PythonRenderer

OOVariableSym SwiftCode Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.SwiftRenderer

OOVariableSym r => OOVariableSym (LoggingFor r) Source # 
Instance details

Defined in Drasil.Shared.LanguageRenderer.LoggingFor

Pair p => OOVariableSym (p CppSrcCode CppHdrCode) Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

($->) :: OOVariableSym r => SValue r -> SVariable r -> SVariable r infixl 9 Source #

instanceVarSelf :: (SelfSym r, VariableValue r) => SVariable r -> SVariable r Source #

Given a variable v, creates `self.v`

class (ValueExpression r, OOVariableSym r, OOValueSym r) => OOValueExpression (r :: Type -> Type) where Source #

Instances

Instances details
OOValueExpression CodeInfoOO Source # 
Instance details

Defined in Drasil.GOOL.CodeInfoOO

OOValueExpression CSharpCode Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CSharpRenderer

OOValueExpression CppHdrCode Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

OOValueExpression CppSrcCode Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

OOValueExpression JavaCode Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.JavaRenderer

OOValueExpression PythonCode Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.PythonRenderer

OOValueExpression SwiftCode Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.SwiftRenderer

OOValueExpression r => OOValueExpression (LoggingFor r) Source # 
Instance details

Defined in Drasil.Shared.LanguageRenderer.LoggingFor

Pair p => OOValueExpression (p CppSrcCode CppHdrCode) Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

class (DeclStatement r stmt bod, OOVariableSym r) => OODeclStatement (r :: Type -> Type) stmt bod where Source #

Methods

objDecDef :: SVariable r -> r ScopeData -> SValue r -> MS (r stmt) Source #

objDecNew :: SVariable r -> r ScopeData -> [SValue r] -> MS (r stmt) Source #

extObjDecNew :: Library -> SVariable r -> r ScopeData -> [SValue r] -> MS (r stmt) Source #

Instances

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

Defined in Drasil.GOOL.CodeInfoOO

OODeclStatement CSharpCode (Doc, Terminator) Body Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CSharpRenderer

OODeclStatement CppHdrCode (Doc, Terminator) Body Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

OODeclStatement CppSrcCode (Doc, Terminator) Body Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

OODeclStatement JavaCode (Doc, Terminator) Body Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.JavaRenderer

OODeclStatement PythonCode (Doc, Terminator) Body Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.PythonRenderer

OODeclStatement SwiftCode (Doc, Terminator) Body Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.SwiftRenderer

(DeclStatement (LoggingFor r) stmt bod, OODeclStatement r stmt bod) => OODeclStatement (LoggingFor r) stmt bod Source # 
Instance details

Defined in Drasil.Shared.LanguageRenderer.LoggingFor

Pair p => OODeclStatement (p CppSrcCode CppHdrCode) (Doc, Terminator) Body Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

objDecNewNoParams :: OODeclStatement r stmt bod => SVariable r -> r ScopeData -> MS (r stmt) Source #

extObjDecNewNoParams :: OODeclStatement r stmt bod => Library -> SVariable r -> r ScopeData -> MS (r stmt) Source #

class (FuncAppStatement r stmt, OOVariableSym r) => OOFuncAppStatement (r :: Type -> Type) stmt where Source #

Methods

selfInOutCall :: InOutCall r stmt Source #

Instances

Instances details
OOFuncAppStatement CodeInfoOO () Source # 
Instance details

Defined in Drasil.GOOL.CodeInfoOO

OOFuncAppStatement CSharpCode (Doc, Terminator) Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CSharpRenderer

OOFuncAppStatement CppHdrCode (Doc, Terminator) Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

OOFuncAppStatement CppSrcCode (Doc, Terminator) Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

OOFuncAppStatement JavaCode (Doc, Terminator) Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.JavaRenderer

OOFuncAppStatement PythonCode (Doc, Terminator) Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.PythonRenderer

OOFuncAppStatement SwiftCode (Doc, Terminator) Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.SwiftRenderer

OOFuncAppStatement r stmt => OOFuncAppStatement (LoggingFor r) stmt Source # 
Instance details

Defined in Drasil.Shared.LanguageRenderer.LoggingFor

Pair p => OOFuncAppStatement (p CppSrcCode CppHdrCode) (Doc, Terminator) Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

class (ValueSym r, VariableSym r) => GetSet (r :: Type -> Type) where Source #

Methods

get :: SValue r -> SVariable r -> SValue r Source #

set :: SValue r -> SVariable r -> SValue r -> SValue r Source #

Instances

Instances details
GetSet CodeInfoOO Source # 
Instance details

Defined in Drasil.GOOL.CodeInfoOO

GetSet CSharpCode Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CSharpRenderer

GetSet CppHdrCode Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

GetSet CppSrcCode Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

GetSet JavaCode Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.JavaRenderer

GetSet PythonCode Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.PythonRenderer

GetSet SwiftCode Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.SwiftRenderer

GetSet r => GetSet (LoggingFor r) Source # 
Instance details

Defined in Drasil.Shared.LanguageRenderer.LoggingFor

Pair p => GetSet (p CppSrcCode CppHdrCode) Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

class ValueSym r => InternalValueExp (r :: Type -> Type) where Source #

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

Methods

objMethodCallMixedArgs' :: Label -> VS (r TypeData) -> SValue r -> [SValue r] -> NamedArgs r -> SValue r 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 TypeData) -> VS (r TypeData) -> [SValue r] -> NamedArgs r -> SValue r 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 Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CSharpRenderer

InternalValueExp CppHdrCode Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

InternalValueExp CppSrcCode Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

InternalValueExp JavaCode Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.JavaRenderer

InternalValueExp PythonCode Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.PythonRenderer

InternalValueExp SwiftCode Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.SwiftRenderer

InternalValueExp r => InternalValueExp (LoggingFor r) Source # 
Instance details

Defined in Drasil.Shared.LanguageRenderer.LoggingFor

Pair p => InternalValueExp (p CppSrcCode CppHdrCode) Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

objMethodCall :: InternalValueExp r => VS (r TypeData) -> SValue r -> Label -> [SValue r] -> SValue r 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 :: InternalValueExp r => VS (r TypeData) -> SValue r -> Label -> NamedArgs r -> SValue r Source #

Calling a method with named arguments.

objMethodCallMixedArgs :: InternalValueExp r => VS (r TypeData) -> SValue r -> Label -> [SValue r] -> NamedArgs r -> SValue r Source #

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

objMethodCallNoParams :: InternalValueExp r => VS (r TypeData) -> SValue r -> Label -> SValue r Source #

Calling a method with no parameters.

classMethodCall :: InternalValueExp r => VS (r TypeData) -> VS (r TypeData) -> Label -> [SValue r] -> SValue r 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 :: InternalValueExp r => VS (r TypeData) -> VS (r TypeData) -> Label -> NamedArgs r -> SValue r Source #

Calling a class method with named arguments.

classMethodCallMixedArgs :: InternalValueExp r => VS (r TypeData) -> VS (r TypeData) -> Label -> [SValue r] -> NamedArgs r -> SValue r Source #

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

classMethodCallNoParams :: InternalValueExp r => VS (r TypeData) -> VS (r TypeData) -> Label -> SValue r Source #

Calling a class method with no parameters.

class AttachmentSym r attch => OOMethodSym (r :: Type -> Type) vis mthd attch bod | r -> vis mthd bod where Source #

Methods

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

getMethod :: SVariable r -> MS (r mthd) Source #

setMethod :: SVariable r -> MS (r mthd) Source #

constructor :: [MS (r ParamData)] -> Initializers r -> MS (r bod) -> MS (r mthd) Source #

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

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

Instances

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

Defined in Drasil.GOOL.CodeInfoOO

OOMethodSym CSharpCode Doc MethodData Doc Body Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CSharpRenderer

OOMethodSym JavaCode Doc MethodData Doc Body Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.JavaRenderer

OOMethodSym PythonCode Doc MethodData AttachmentData Body Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.PythonRenderer

OOMethodSym SwiftCode Doc MethodData Doc Body Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.SwiftRenderer

OOMethodSym r vis mthd attch bod => OOMethodSym (LoggingFor r) vis mthd attch bod Source # 
Instance details

Defined in Drasil.Shared.LanguageRenderer.LoggingFor

Methods

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

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

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

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

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

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

privMethod :: (OOMethodSym r vis mthd attch bod, VisibilitySym r vis) => Label -> VS (r TypeData) -> [MS (r ParamData)] -> MS (r bod) -> MS (r mthd) Source #

pubMethod :: (OOMethodSym r vis mthd attch bod, VisibilitySym r vis) => Label -> VS (r TypeData) -> [MS (r ParamData)] -> MS (r bod) -> MS (r mthd) Source #

initializer :: (OOMethodSym r vis mthd attch bod, BodySym r bod block) => [MS (r ParamData)] -> Initializers r -> MS (r mthd) Source #

nonInitConstructor :: OOMethodSym r vis mthd attch bod => [MS (r ParamData)] -> MS (r bod) -> MS (r mthd) Source #

class (VisibilitySym r vis, AttachmentSym r attch, VariableSym r) => StateVarSym (r :: Type -> Type) vis stvr attch | r -> stvr 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 -> SVariable r -> 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 -> SVariable r -> SValue r -> 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 -> SVariable r -> SValue r -> 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 Doc StateVar Doc Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CSharpRenderer

StateVarSym JavaCode Doc Doc Doc Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.JavaRenderer

StateVarSym PythonCode Doc Doc AttachmentData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.PythonRenderer

StateVarSym SwiftCode Doc Doc Doc Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.SwiftRenderer

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

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

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

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

StateVarSym r vis stvr attch => StateVarSym (LoggingFor r) vis stvr attch Source # 
Instance details

Defined in Drasil.Shared.LanguageRenderer.LoggingFor

Pair p => StateVarSym (p CppSrcCode CppHdrCode) (Doc, VisibilityTag) StateVarData AttachmentData Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

privDVar :: StateVarSym r vis stvr attch => SVariable r -> CSStateVar r stvr Source #

pubDVar :: StateVarSym r vis stvr attch => SVariable r -> CSStateVar r stvr Source #

pubSVar :: StateVarSym r vis stvr attch => SVariable r -> 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 FunctionSym r => OOFunctionSym (r :: Type -> Type) where Source #

Methods

func :: Label -> VS (r TypeData) -> [SValue r] -> VS (r FuncData) Source #

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

Instances

Instances details
OOFunctionSym CodeInfoOO Source # 
Instance details

Defined in Drasil.GOOL.CodeInfoOO

OOFunctionSym CSharpCode Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CSharpRenderer

OOFunctionSym CppHdrCode Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

OOFunctionSym CppSrcCode Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

OOFunctionSym JavaCode Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.JavaRenderer

OOFunctionSym PythonCode Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.PythonRenderer

OOFunctionSym SwiftCode Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.SwiftRenderer

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

Defined in Drasil.Shared.LanguageRenderer.LoggingFor

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

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

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

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

Methods

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

Instances

Instances details
ObserverPattern CodeInfoOO () Source # 
Instance details

Defined in Drasil.GOOL.CodeInfoOO

ObserverPattern CSharpCode (Doc, Terminator) Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CSharpRenderer

ObserverPattern CppHdrCode (Doc, Terminator) Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

ObserverPattern CppSrcCode (Doc, Terminator) Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

ObserverPattern JavaCode (Doc, Terminator) Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.JavaRenderer

ObserverPattern PythonCode (Doc, Terminator) Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.PythonRenderer

ObserverPattern SwiftCode (Doc, Terminator) Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.SwiftRenderer

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

Defined in Drasil.Shared.LanguageRenderer.LoggingFor

Pair p => ObserverPattern (p CppSrcCode CppHdrCode) (Doc, Terminator) Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

initObserverList :: DeclStatement r stmt bod => VS (r TypeData) -> [SValue r] -> r ScopeData -> MS (r stmt) Source #

addObserver :: (OOVariableValue r, List r, ListStatement r stmt) => SValue r -> MS (r stmt) Source #

class VariableSym r => StrategyPattern (r :: Type -> Type) bod block | r -> bod block where Source #

Methods

runStrategy :: Label -> [(Label, MS (r bod))] -> Maybe (SValue r) -> Maybe (SVariable r) -> MS (r block) Source #

Instances

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

Defined in Drasil.GOOL.CodeInfoOO

StrategyPattern CSharpCode Body Block Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CSharpRenderer

StrategyPattern CppHdrCode Body Block Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

StrategyPattern CppSrcCode Body Block Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer

StrategyPattern JavaCode Body Block Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.JavaRenderer

StrategyPattern PythonCode Body Block Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.PythonRenderer

StrategyPattern SwiftCode Body Block Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.SwiftRenderer

StrategyPattern r bod block => StrategyPattern (LoggingFor r) bod block Source # 
Instance details

Defined in Drasil.Shared.LanguageRenderer.LoggingFor

Methods

runStrategy :: Label -> [(Label, MS (LoggingFor r bod))] -> Maybe (SValue (LoggingFor r)) -> Maybe (SVariable (LoggingFor r)) -> MS (LoggingFor r block) Source #

Pair p => StrategyPattern (p CppSrcCode CppHdrCode) Body Block Source # 
Instance details

Defined in Drasil.GOOL.LanguageRenderer.CppRenderer