drasil-gool-0.1.1.0: A framework for code and document generation for scientific software - GOOL SubPackage
Safe HaskellSafe-Inferred
LanguageHaskell2010

GOOL.Drasil.LanguageRenderer.Constructors

Description

Generic constructors and smart constructors to be used in renderers

Synopsis

Documentation

mkStmt :: RenderSym r => Doc -> MSStatement r Source #

Constructs a statement terminated by a semi-colon

mkStmtNoEnd :: RenderSym r => Doc -> MSStatement r Source #

Constructs a statement without a termination character

mkStateVal :: RenderSym r => VSType r -> Doc -> SValue r Source #

Constructs a value in a stateful context

mkVal :: RenderSym r => r (Type r) -> Doc -> SValue r Source #

Constructs a value in a non-stateful context

mkStateVar :: RenderSym r => String -> VSType r -> Doc -> SVariable r Source #

Constructs a dynamic variable in a stateful context

mkVar :: RenderSym r => String -> r (Type r) -> Doc -> SVariable r Source #

Constructs a dynamic variable in a non-stateful context

mkStaticVar :: RenderSym r => String -> VSType r -> Doc -> SVariable r Source #

Constructs a static variable in a stateful context

type VSOp r = VS (r OpData) Source #

mkOp :: Monad r => Int -> Doc -> VSOp r Source #

Construct an operator with given precedence and rendering

unOpPrec :: Monad r => String -> VSOp r Source #

Construct an operator with typical unary-operator precedence

compEqualPrec :: Monad r => String -> VSOp r Source #

Construct an operator with equality-comparison-level precedence

compPrec :: Monad r => String -> VSOp r Source #

Construct an operator with comparison-level precedence

addPrec :: Monad r => String -> VSOp r Source #

Construct an operator with addition-level precedence

multPrec :: Monad r => String -> VSOp r Source #

Construct an operator with multiplication-level precedence

powerPrec :: Monad r => String -> VSOp r Source #

Construct an operator with exponentiation-level precedence

andPrec :: Monad r => String -> VSOp r Source #

Construct an operator with conjunction-level precedence

orPrec :: Monad r => String -> VSOp r Source #

Construct an operator with disjunction-level precedence

unExpr :: RenderSym r => VSUnOp r -> SValue r -> SValue r Source #

Constructs a unary expression like ln(v), for some operator ln and value v

unExpr' :: RenderSym r => VSUnOp r -> SValue r -> SValue r Source #

Constructs a unary expression like -v, for some operator - and value v

unExprNumDbl :: RenderSym r => VSUnOp r -> SValue r -> SValue r Source #

To be used in languages where the unary operator returns a double. If the value passed to the operator is a float, this function preserves that type by casting the result to a float.

typeUnExpr :: RenderSym r => VSUnOp r -> VSType r -> SValue r -> SValue r Source #

To be used when the type of the value is different from the type of the resulting expression. The type of the result is passed as a parameter.

binExpr :: RenderSym r => VSBinOp r -> SValue r -> SValue r -> SValue r Source #

Constructs binary expressions like v + w, for some operator + and values v and w, parenthesizing v and w if needed.

binExpr' :: RenderSym r => VSBinOp r -> SValue r -> SValue r -> SValue r Source #

Constructs binary expressions like pow(v,w), for some operator pow and values v and w

binExprNumDbl' :: RenderSym r => VSBinOp r -> SValue r -> SValue r -> SValue r Source #

To be used in languages where the binary operator returns a double. If either value passed to the operator is a float, this function preserves that type by casting the result to a float.

typeBinExpr :: RenderSym r => VSBinOp r -> VSType r -> SValue r -> SValue r -> SValue r Source #

To be used when the types of the values are different from the type of the resulting expression. The type of the result is passed as a parameter.