| Safe Haskell | None |
|---|---|
| Language | GHC2024 |
Drasil.GOOL.InterfaceGOOL
Synopsis
- type Program = ProgData
- type GSProgram (a :: k -> Type) (prg :: k) = GS (a prg)
- type Class = Doc
- type StateVar = Doc
- type CSStateVar (r :: k -> Type) (stvr :: k) = CS (r stvr)
- type Initializers (r :: k -> Type) (var :: k) (val :: k) = [(VS (r var), VS (r val))]
- 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
- class ProgramSym (r :: k -> Type) (prg :: k) (file :: k) | r -> prg file where
- class FileSym (r :: k -> Type) (file :: k) (mod :: k) | r -> file mod where
- class ModuleSym (r :: k -> Type) (mod :: k) (cls :: k) (mthd :: k) | r -> mod cls mthd where
- class ClassSym (r :: k -> Type) (cls :: k) (stvr :: k) (mthd :: k) | r -> cls stvr mthd where
- buildClass :: Maybe Label -> [CSStateVar r stvr] -> [MS (r mthd)] -> [MS (r mthd)] -> CS (r cls)
- extraClass :: Label -> Maybe Label -> [CSStateVar r stvr] -> [MS (r mthd)] -> [MS (r mthd)] -> CS (r cls)
- implementingClass :: Label -> [Label] -> [CSStateVar r stvr] -> [MS (r mthd)] -> [MS (r mthd)] -> CS (r cls)
- docClass :: String -> CS (r cls) -> CS (r cls)
- class OOTypeSym (r :: k -> Type) (typ :: k) | r -> typ where
- class OOVariableSym (r :: k -> Type) (var :: k) (val :: k) (typ :: k) | r -> var val typ where
- classVar :: Label -> VS (r typ) -> VS (r var)
- classConst :: Label -> VS (r typ) -> VS (r var)
- classVarAccess :: VS (r typ) -> VS (r var) -> VS (r var)
- extClassVarAccess :: VS (r typ) -> VS (r var) -> VS (r var)
- instanceVarAccess :: VS (r val) -> VS (r var) -> VS (r var)
- ($->) :: forall {k} r (var :: k) (val :: k) (typ :: k). OOVariableSym r var val typ => VS (r val) -> VS (r var) -> VS (r var)
- class SelfSym (r :: k -> Type) (var :: k) | r -> var where
- 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)
- class OOValueExpression (r :: k -> Type) (var :: k) (val :: k) (typ :: k) | r -> var val typ where
- newObjMixedArgs :: MixedCtorCall r var val typ
- extNewObjMixedArgs :: Library -> MixedCtorCall r var val typ
- libNewObjMixedArgs :: Library -> MixedCtorCall r var val typ
- 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
- newObj :: forall {k} r (var :: k) (val :: k) (typ :: k). OOValueExpression r var val typ => PosCtorCall r val typ
- extNewObj :: forall {k} r (var :: k) (val :: k) (typ :: k). OOValueExpression r var val typ => Library -> PosCtorCall r val typ
- libNewObj :: forall {k} r (var :: k) (val :: k) (typ :: k). OOValueExpression r var val typ => Library -> PosCtorCall r val typ
- class OODeclStatement (r :: k -> Type) (stmt :: k) (var :: k) (scope :: k) (val :: k) | r -> stmt var scope val where
- 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)
- 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)
- class OOFuncAppStatement (r :: k -> Type) (stmt :: k) (var :: k) (val :: k) | r -> stmt var val where
- selfInOutCall :: InOutCall r stmt var val
- class GetSet (r :: k -> Type) (var :: k) (val :: k) | r -> var val where
- class InternalValueExp (r :: k -> Type) (var :: k) (val :: k) (typ :: k) | r -> var val typ where
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
- 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
- method :: Label -> r vis -> r attch -> VS (r typ) -> [MS (r param)] -> MS (r bod) -> MS (r mthd)
- getMethod :: VS (r var) -> MS (r mthd)
- setMethod :: VS (r var) -> MS (r mthd)
- constructor :: [MS (r param)] -> Initializers r var val -> MS (r bod) -> MS (r mthd)
- inOutMethod :: Label -> r vis -> r attch -> InOutFunc r mthd bod var
- docInOutMethod :: Label -> r vis -> r attch -> DocInOutFunc r mthd bod var
- 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)
- 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)
- 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)
- 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)
- class StateVarSym (r :: k -> Type) (stvr :: k) (attch :: k) (vis :: k) (var :: k) (val :: k) | r -> stvr attch vis var val where
- stateVar :: r vis -> r attch -> VS (r var) -> CSStateVar r stvr
- stateVarDef :: r vis -> r attch -> VS (r var) -> VS (r val) -> CSStateVar r stvr
- constVar :: r vis -> VS (r var) -> VS (r val) -> CSStateVar r stvr
- 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
- 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
- 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
- class AttachmentSym (r :: k -> Type) (attch :: k) | r -> attch where
- classLevel :: r attch
- instanceLevel :: r attch
- class OOFunctionSym (r :: Type -> Type) val typ | r -> val typ where
- ($.) :: OOFunctionSym r val typ => VS (r val) -> VS (r FuncData) -> VS (r val)
- selfAccess :: (VariableValue r var val, SelfSym r var, OOFunctionSym r val typ) => VS (r FuncData) -> VS (r val)
- class ObserverPattern (r :: Type -> Type) stmt typ | r -> stmt typ where
- notifyObservers :: VS (r FuncData) -> VS (r typ) -> MS (r stmt)
- observerListName :: Label
- 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)
- 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)
- class StrategyPattern (r :: k -> Type) (bod :: k) (block :: k) (var :: k) (val :: k) | r -> bod block var val where
- convTypeOO :: forall {k} r (typ :: k). (TypeSym r typ, OOTypeSym r typ) => CodeType -> VS (r typ)
Documentation
type CSStateVar (r :: k -> Type) (stvr :: k) = CS (r stvr) 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.
Instances
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
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
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
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
Instances
class OOTypeSym (r :: k -> Type) (typ :: k) | r -> typ where Source #
Instances
| OOTypeSym CodeInfoOO () Source # | |
Defined in Drasil.GOOL.CodeInfoOO | |
| OOTypeSym CSharpCode TypeData Source # | |
Defined in Drasil.GOOL.LanguageRenderer.CSharpRenderer | |
| OOTypeSym CppHdrCode TypeData Source # | |
Defined in Drasil.GOOL.LanguageRenderer.CppRenderer | |
| OOTypeSym CppSrcCode TypeData Source # | |
Defined in Drasil.GOOL.LanguageRenderer.CppRenderer | |
| OOTypeSym JavaCode TypeData Source # | |
| OOTypeSym PythonCode TypeData Source # | |
Defined in Drasil.GOOL.LanguageRenderer.PythonRenderer | |
| OOTypeSym SwiftCode TypeData Source # | |
| OOTypeSym r typ => OOTypeSym (LoggingFor r :: Type -> Type) (typ :: Type) Source # | |
Defined in Drasil.Shared.LanguageRenderer.LoggingFor | |
| Pair p => OOTypeSym (p CppSrcCode CppHdrCode :: Type -> Type) TypeData Source # | |
Defined in Drasil.GOOL.LanguageRenderer.CppRenderer Methods obj :: ClassName -> VS (p CppSrcCode CppHdrCode TypeData) Source # | |
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
($->) :: 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 #
Instances
| SelfSym CodeInfoOO () Source # | |
Defined in Drasil.GOOL.CodeInfoOO Methods self :: VS (CodeInfoOO ()) Source # | |
| SelfSym CSharpCode Variable Source # | |
Defined in Drasil.GOOL.LanguageRenderer.CSharpRenderer | |
| SelfSym CppHdrCode Variable Source # | |
Defined in Drasil.GOOL.LanguageRenderer.CppRenderer | |
| SelfSym CppSrcCode Variable Source # | |
Defined in Drasil.GOOL.LanguageRenderer.CppRenderer | |
| SelfSym JavaCode Variable Source # | |
| SelfSym PythonCode Variable Source # | |
Defined in Drasil.GOOL.LanguageRenderer.PythonRenderer | |
| SelfSym SwiftCode Variable Source # | |
| SelfSym r var => SelfSym (LoggingFor r :: Type -> Type) (var :: Type) Source # | |
Defined in Drasil.Shared.LanguageRenderer.LoggingFor Methods self :: VS (LoggingFor r var) Source # | |
| Pair p => SelfSym (p CppSrcCode CppHdrCode :: Type -> Type) Variable Source # | |
Defined in Drasil.GOOL.LanguageRenderer.CppRenderer Methods self :: VS (p CppSrcCode CppHdrCode Variable) Source # | |
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 #
Methods
newObjMixedArgs :: MixedCtorCall r var val typ Source #
extNewObjMixedArgs :: Library -> MixedCtorCall r var val typ Source #
libNewObjMixedArgs :: Library -> MixedCtorCall r var val typ Source #
Instances
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
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
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
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
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
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
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
Instances
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
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 #
Instances
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 #