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

Drasil.Shared.LanguageRenderer.LanguagePolymorphic

Description

Implementations defined here are valid for any language renderer.

Synopsis

Documentation

fileFromData :: forall {k} r (mod :: k) (file :: k). ModuleElim r mod => (FilePath -> r mod -> r file) -> FilePath -> FS (r mod) -> FS (r file) Source #

multiBody :: (BodyElim r bod, Monad r) => [MS (r bod)] -> MS (r Doc) Source #

block :: (Monad r, RenderStatement r stmt, StatementElim r stmt) => [MS (r stmt)] -> MS (r Doc) Source #

multiBlock :: (BlockElim r block, Monad r) => [MS (r block)] -> MS (r Doc) Source #

csc :: forall {k} r (val :: k) (typ :: k). (ValueSym r val typ, Literal r val typ, NumericExpression r val, TypeElim r typ) => VS (r val) -> VS (r val) Source #

sec :: forall {k} r (val :: k) (typ :: k). (ValueSym r val typ, Literal r val typ, NumericExpression r val, TypeElim r typ) => VS (r val) -> VS (r val) Source #

cot :: forall {k} r (val :: k) (typ :: k). (ValueSym r val typ, Literal r val typ, NumericExpression r val, TypeElim r typ) => VS (r val) -> VS (r val) Source #

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

classVar :: forall {k} r (var :: k) (typ :: k). RenderVariable r var typ => Label -> VS (r typ) -> VS (r var) Source #

instanceVarAccess :: forall {k} r (var :: k) (typ :: k) (val :: k). (InternalVarElim r var, RenderVariable r var typ, ValueElim r val, VariableElim r var typ) => VS (r val) -> VS (r var) -> VS (r var) Source #

classVarAccessCheck :: forall {k} r (var :: k). InternalVarElim r var => r var -> r var Source #

To be used in classVarAccess implementations. Throws an error if the variable is not class-level since classVarAccess is for accessing class-level variables from a class

arrayElem :: forall {k} r (typ :: k) (val :: k) (var :: k). (TypeSym r typ, ValueSym r val typ, IndexTranslator r val, RenderVariable r var typ, ValueElim r val) => VS (r val) -> VS (r val) -> VS (r var) Source #

litChar :: forall {k} r (var :: k) (val :: k) (typ :: k). (RenderValue r var val typ, TypeSym r typ) => (Doc -> Doc) -> Char -> VS (r val) Source #

litDouble :: forall {k} r (var :: k) (val :: k) (typ :: k). (RenderValue r var val typ, TypeSym r typ) => Double -> VS (r val) Source #

litInt :: forall {k} r (var :: k) (val :: k) (typ :: k). (RenderValue r var val typ, TypeSym r typ) => Integer -> VS (r val) Source #

litString :: forall {k} r (var :: k) (val :: k) (typ :: k). (RenderValue r var val typ, TypeSym r typ) => String -> VS (r val) Source #

valueOf :: forall {k} r (var :: k) (val :: k) (typ :: k). (InternalVarElim r var, RenderValue r var val typ, VariableElim r var typ) => VS (r var) -> VS (r val) Source #

arg :: forall {k} r (var :: k) (val :: k) (typ :: k). (RenderValue r var val typ, TypeSym r typ, ValueElim r val) => VS (r val) -> VS (r val) -> VS (r val) Source #

argsList :: forall {k} r (var :: k) (val :: k) (typ :: k). (RenderValue r var val typ, TypeSym r typ) => String -> VS (r val) Source #

call :: forall {k} r (var :: k) (val :: k) (typ :: k). (InternalVarElim r var, RenderValue r var val typ, ValueElim r val) => Doc -> Maybe Library -> Maybe Doc -> MixedCall r var val typ Source #

First parameter is separator between name and value for named arguments, rest similar to call from RendererClasses

funcAppMixedArgs :: forall {k} r (var :: k) (val :: k) (typ :: k). RenderValue r var val typ => MixedCall r var val typ Source #

lambda :: forall {k} r (binder :: k) (typ :: k) (var :: k) (val :: k). (BinderElim r binder typ, RenderValue r var val typ, TypeSym r typ, ValueSym r val typ) => ([r binder] -> r val -> Doc) -> [VS (r binder)] -> VS (r val) -> VS (r val) Source #

objAccess :: (FunctionElim r typ, RenderValue r var val typ, ValueElim r val) => VS (r val) -> VS (r FuncData) -> VS (r val) Source #

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

func :: (RenderFunction r typ, ValueElim r val, ValueExpression r var val binder typ) => Label -> VS (r typ) -> [VS (r val)] -> VS (r FuncData) Source #

get :: (InternalGetSet r var val typ, OOFunctionSym r val typ) => VS (r val) -> VS (r var) -> VS (r val) Source #

set :: (ValueSym r val typ, InternalGetSet r var val typ, OOFunctionSym r val typ) => VS (r val) -> VS (r var) -> VS (r val) -> VS (r val) Source #

listAccess :: (TypeSym r typ, ValueSym r val typ, IndexTranslator r val, InternalListFunc r val typ, FunctionElim r typ, RenderFunction r typ, RenderValue r var val typ, TypeElim r typ, ValueElim r val) => VS (r val) -> VS (r val) -> VS (r val) Source #

getFunc :: (OOFunctionSym r val typ, VariableElim r var typ) => VS (r var) -> VS (r FuncData) Source #

setFunc :: (OOFunctionSym r val typ, VariableElim r var typ) => VS (r typ) -> VS (r var) -> VS (r val) -> VS (r FuncData) Source #

stmt :: forall {k} r (stmt :: k). (RenderStatement r stmt, StatementElim r stmt) => MS (r stmt) -> MS (r stmt) Source #

loopStmt :: forall {k} r (stmt :: k). (RenderStatement r stmt, StatementElim r stmt) => MS (r stmt) -> MS (r stmt) Source #

emptyStmt :: forall {k} r (stmt :: k). RenderStatement r stmt => MS (r stmt) Source #

assign :: forall {k} r (var :: k) (stmt :: k) (val :: k). (InternalVarElim r var, RenderStatement r stmt, ValueElim r val) => Terminator -> VS (r var) -> VS (r val) -> MS (r stmt) Source #

subAssign :: forall {k} r (var :: k) (stmt :: k) (val :: k). (InternalVarElim r var, RenderStatement r stmt, ValueElim r val) => Terminator -> VS (r var) -> VS (r val) -> MS (r stmt) Source #

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

print :: forall {k} r (block :: k) (stmt :: k) (bod :: k) (val :: k) (scope :: k) (var :: k) (typ :: k). (BlockSym r block stmt, BodySym r bod block, MultiStatement r stmt, PrintConsole r stmt val, PrintFile r stmt val, ScopeSym r scope, DeclStatement r bod stmt var scope val, AssignStatement r stmt var val, ControlStatement r bod stmt var val, ValueSym r val typ, Literal r val typ, NumericExpression r val, Comparison r val, VariableSym r var typ, VariableValue r var val, List r val, TypeSym r typ, TypeElim r typ, InternalIOStmt r stmt val) => Bool -> Maybe (VS (r val)) -> VS (r val) -> VS (r val) -> MS (r stmt) Source #

closeFile :: forall {k} r (typ :: k) (var :: k) (val :: k) (stmt :: k). (TypeSym r typ, InternalValueExp r var val typ, ValueStatement r stmt val) => Label -> VS (r val) -> MS (r stmt) Source #

returnStmt :: forall {k} r (stmt :: k) (val :: k). (RenderStatement r stmt, ValueElim r val) => Terminator -> VS (r val) -> MS (r stmt) Source #

valStmt :: forall {k} r (stmt :: k) (val :: k). (RenderStatement r stmt, ValueElim r val) => Terminator -> VS (r val) -> MS (r stmt) Source #

comment :: forall {k} r (stmt :: k). RenderStatement r stmt => Doc -> Label -> MS (r stmt) Source #

throw :: forall {k} r (val :: k) (typ :: k) (stmt :: k). (Literal r val typ, RenderStatement r stmt) => (r val -> Doc) -> Terminator -> Label -> MS (r stmt) Source #

ifCond :: forall {k} r (bod :: k) (stmt :: k) (val :: k). (BodyElim r bod, RenderStatement r stmt, ValueElim r val) => (Doc -> Doc) -> Doc -> OptionalSpace -> Doc -> Doc -> Doc -> [(VS (r val), MS (r bod))] -> MS (r bod) -> MS (r stmt) Source #

tryCatch :: forall {k} r (stmt :: k) (bod :: k). RenderStatement r stmt => (r bod -> r bod -> Doc) -> MS (r bod) -> MS (r bod) -> MS (r stmt) Source #

param :: forall {k} r (param :: k) (var :: k) (typ :: k). (RenderParam r param var, VariableElim r var typ) => (r var -> Doc) -> VS (r var) -> MS (r param) Source #

method :: forall {k} r (typ :: k) (mthd :: k) (attch :: k) (vis :: k) (param :: k) (bod :: k). (MethodTypeSym r typ, OORenderMethod r mthd attch vis param bod typ) => Label -> r vis -> r attch -> VS (r typ) -> [MS (r param)] -> MS (r bod) -> MS (r mthd) Source #

getMethod :: OORenderSym r file mod cls stvr mthd attch vis param bod block stmt var scope val binder typ => VS (r var) -> MS (r mthd) Source #

setMethod :: OORenderSym r file mod cls stvr mthd attch vis param bod block stmt var scope val binder typ => VS (r var) -> MS (r mthd) Source #

initStmts :: forall {k} r (var :: k) (val :: k) (typ :: k) (stmt :: k) (block :: k) (bod :: k). (OOVariableSym r var val typ, VariableValue r var val, SelfSym r var, AssignStatement r stmt var val, BlockSym r block stmt, BodySym r bod block) => Initializers r var val -> MS (r bod) Source #

function :: forall {k} r (attch :: k) (typ :: k) (mthd :: k) (vis :: k) (param :: k) (bod :: k). (AttachmentSym r attch, MethodTypeSym r typ, OORenderMethod r mthd attch vis param bod typ) => Label -> r vis -> VS (r typ) -> [MS (r param)] -> MS (r bod) -> MS (r mthd) Source #

docFuncRepr :: (BlockCommentSym r, RenderMethod r mthd) => FuncDocRenderer -> String -> [String] -> [String] -> MS (r mthd) -> MS (r mthd) Source #

docFunc :: (BlockCommentSym r, RenderMethod r mthd) => FuncDocRenderer -> String -> [String] -> Maybe String -> MS (r mthd) -> MS (r mthd) Source #

buildClass :: (RenderClass r cls stvr mthd vis, VisibilitySym r vis) => Maybe Label -> [CSStateVar r stvr] -> [MS (r mthd)] -> [MS (r mthd)] -> CS (r cls) Source #

implementingClass :: (RenderClass r cls stvr mthd vis, VisibilitySym r vis) => Label -> [Label] -> [CSStateVar r stvr] -> [MS (r mthd)] -> [MS (r mthd)] -> CS (r cls) Source #

docClass :: (BlockCommentSym r, RenderClass r cls stvr mthd vis) => ClassDocRenderer -> String -> CS (r cls) -> CS (r cls) Source #

commentedClass :: (BlockCommentElim r, ClassElim r cls, Monad r) => CS (r Doc) -> CS (r cls) -> CS (r Doc) Source #

modFromData :: forall {k} r (mod :: k). Label -> (Doc -> r mod) -> FS Doc -> FS (r mod) Source #

fileDoc :: (BlockElim r block, RenderMod r mod, RenderFile r file mod) => String -> (r mod -> r block) -> r block -> FS (r mod) -> FS (r file) Source #

docMod :: (BlockCommentSym r, RenderFile r file mod) => ModuleDocRenderer -> String -> String -> String -> [String] -> String -> FS (r file) -> FS (r file) Source #

Generates a file for a documented module. mdr is a function that takes description, author, and module name and returns a doc comment e is the file extension d is the description (I think) a is a list of authors dt is the date fl is the file

newtype OptionalSpace Source #

Constructors

OSpace 

Fields

smartAdd :: forall {k} r (typ :: k) (val :: k) (var :: k). (TypeSym r typ, NumericExpression r val, RenderValue r var val typ, ValueElim r val) => VS (r val) -> VS (r val) -> VS (r val) Source #

smartSub :: forall {k} r (typ :: k) (val :: k) (var :: k). (TypeSym r typ, NumericExpression r val, RenderValue r var val typ, ValueElim r val) => VS (r val) -> VS (r val) -> VS (r val) Source #