33. Boost package for the miscelanious macro manipulations

Apply module implements miscellaneous infrastructure which simplifies writing of macros.

All functions and symbols are in “macro_boost” module, use require to get access to it.

require daslib/macro_boost

33.1. Structures

CapturedVariable

Stored captured variable together with the ExprVar which uses it

Fields
  • variable : Variable ? - captured variable

  • expression : ExprVar ? - expression which uses the variable

  • eref : bool - this one indicates if its used by reference and does not come from argument. its only used in JIT

33.2. Function annotations

MacroVerifyMacro
This macro convert macro_verify(expr,message,prog,at) to the following code::
if !expr

macro_error(prog,at,message) return [[ExpressionPtr]]

33.3. Call macros

return_skip_lockcheck

this is similar to regular return <-, but it does not check for locks

33.4. Implementation details

macro_verify(expr: bool; prog: ProgramPtr; at: LineInfo; message: string)

Same as verify, only the check will produce macro error, followed by return [[ExpressionPtr]]

Arguments

33.5. Uncategorized

capture_block(expr: ExpressionPtr) : array<CapturedVariable>()

Collect all captured variables in the expression.

Arguments
collect_finally(expr: ExpressionPtr; alwaysFor: bool = false) : array<ExprBlock?>()

Collect all finally blocks in the expression. Returns array of ExprBlock? with all the blocks which have finally section Does not go into ‘make_block’ expression, such as lambda, or ‘block’ expressions

Arguments
collect_labels(expr: ExpressionPtr) : array<int>()

Collect all labels in the expression. Returns array of integer with label indices Does not go into ‘make_block’ expression, such as lambda, or ‘block’ expressions

Arguments