33. 用于错误宏操作的 Boost 软件包
Apply 模块实现了各种基础结构,简化了宏的编写。
所有函数和符号都在 “macro_boost ”模块中,使用 require 可以访问该模块。
require daslib/macro_boost
- CapturedVariable
CapturedVariable 字段是
variable |
|
expression |
|
eref |
bool |
将捕获的变量与使用该变量的 ExprVar 一起存储
33.1. 功能注释
- MacroVerifyMacro
- 该宏将 macro_verify(expr,message,prog,at)转换为以下代码::
- if !expr
macro_error(prog,at,message) return [[ExpressionPtr]]
33.2. 调用宏
- return_skip_lockcheck
与常规 return <- 类似,但不检查锁
33.3. 实现细节
- macro_verify(expr: bool const; prog: ProgramPtr; at: LineInfo const; message: string const)
argument |
argument type |
---|---|
expr |
bool const |
prog |
|
at |
rtti::LineInfo const |
message |
string const |
与校验相同,只是校验会产生宏错误,然后返回 [[ExpressionPtr]]
33.4. 未分类
- capture_block(expr: ExpressionPtr)
capture_block returns array< macro_boost::CapturedVariable >
argument |
argument type |
---|---|
expr |
|
收集表达式中所有捕获的变量。
- collect_finally(expr: ExpressionPtr; alwaysFor: bool const)
collect_finally returns array< ast::ExprBlock ?>
argument |
argument type |
---|---|
expr |
|
alwaysFor |
bool const |
收集表达式中的所有最后代码块。 返回 ExprBlock? 的数组,其中包含所有带有 finally 部分的块 不进入 “make_block ”表达式,如 lambda 或 “block ”表达式。
- collect_labels(expr: ExpressionPtr)
collect_labels returns array<int>
argument |
argument type |
---|---|
expr |
|
收集表达式中的所有标签。返回包含标签索引的整数数组 不用于 “make_block ”表达式,如 lambda 或 “block ”表达式。