YSTest: NPL::Environment类 参考

YSTest PreAlpha_b800_20170810 The YSLib Test Project

- 首页
- 相关页面
- 模块
- 命名空间
- 类
- 文件

- 类列表
- 类索引
- 类继承关系
- 类成员

Public 成员函数 | 静态 Public 成员函数 | Public 属性 | 所有成员列表
NPL::Environment类 参考

环境。 更多...

`#include <NPLA.h>`

类 NPL::Environment 继承关系图:
[图例]
NPL::Environment 的协作图:
[图例]

## Public 成员函数

| DefDeCtor (Environment) DefDeCopyMoveCtorAssignment(Environment) explicit Environment(const BindingMap &&m)
| 无参数构造：初始化空环境。 更多...
| Environment (BindingMap &&m)
friend | PDefHOp (bool,==, const Environment &x, const Environment &y) ynothrow ImplRet(x.Bindings
| Environment (const ValueObject &vo)

构造：使用父环境。

异常

  NPLException | 异常中立：由 CheckParent 抛出。

更多...

| Environment (ValueObject &&vo)
void | Define (string_view, ValueObject &&, bool)
| 以字符串为标识符在指定上下文中定义值。 更多...
observer_ptr< ValueNode > | LookupName (string_view) const
| 查找名称。 更多...
void | Redefine (string_view, ValueObject &&, bool)
| 以字符串为标识符在指定上下文中覆盖定义值。 更多...
bool | Remove (string_view, bool)

## 静态 Public 成员函数

static YB_NORETURN void | ThrowForInvalidType (const ystdex::type_info &)
| 对不符合环境要求的类型抛出异常。 更多...
static observer_ptr< const Environment > | DefaultRedirect (const Environment &, string_view)
| 重定向解析环境：返回父环境。 更多...
static observer_ptr< ValueNode > | DefaultResolve (const Environment &, string_view)

解析名称：处理保留名称并查找名称。

异常

  NPLException | 访问共享重定向环境失败。

更多...

## Public 属性

ValueObject | Parent {}
| 父环境：被解释的重定向目标。 更多...
std::function< observer_ptr< const Environment >string_view)> | Redirect
| 重定向解析环境：返回非局部名称引用的环境。 更多...
std::function< observer_ptr< ValueNode >string_view)> | Resolve
| 解析名称：处理保留名称并查找名称。 更多...
using | BindingMap = ValueNode
BindingMap | Bindings {}

## 详细描述

环境。

警告
  非虚析构。

自从
  build 787

在文件 NPLA.h 第 982 行定义.

## 成员类型定义说明

using NPL::Environment::BindingMap = ValueNode

自从
  build 788

在文件 NPLA.h 第 988 行定义.

## 构造及析构函数说明

NPL::Environment::Environment | ( | BindingMap && | m | ) |

inlineexplicit

在文件 NPLA.h 第 1047 行定义.

NPL::Environment::Environment | ( | const ValueObject & | vo | ) |

inlineexplicit

构造：使用父环境。

异常

  NPLException | 异常中立：由 CheckParent 抛出。

待办事项:
  使用专用的异常类型。

在文件 NPLA.h 第 1058 行定义.

NPL::Environment::Environment | ( | ValueObject && | vo | ) |

inlineexplicit

在文件 NPLA.h 第 1062 行定义.

## 成员函数说明

observer_ptr< const Environment > NPL::Environment::DefaultRedirect | ( | const Environment & | env,
|  | string_view | id
| ) |  |

static

重定向解析环境：返回父环境。

前置条件
  断言：第二参数的数据指针非空。

参见
  Parent

解析 Parent 储存的对象作为父环境的引用值。 被处理的保留名称应指定重定向名称到有限个不同的环境。 支持的重定向项的宿主值的类型包括： EnvironmentList ：环境列表； observer_ptr<const Environment> 无所有权的重定向环境； weak_ptr<Environment> 可能具有共享所有权的重定向环境； shared_ptr<Environment> 具有共享所有权的重定向环境。 若重定向可能具有共享所有权的失败，则表示资源访问错误，如构成循环引用； 可能涉及未定义行为。 以上支持的宿主值类型被依次检查。若检查成功，则使用此宿主值类型访问环境。 对列表，使用 DFS （深度优先搜索）依次递归检查其元素。

在文件 NPLA.cpp 第 595 行定义.

参考 Parent.

observer_ptr< ValueNode > NPL::Environment::DefaultResolve | ( | const Environment & | e,
|  | string_view | id
| ) |  |

static

解析名称：处理保留名称并查找名称。

异常

  NPLException | 访问共享重定向环境失败。

参见
  Lookup
  Redirect

在文件 NPLA.cpp 第 601 行定义.

参考 ystdex::data(), platform::Deref(), CHRLib::p(), ystdex::ref(), ystdex::retry_on_cond(), YAssertNonnull , 以及 ynothrow.

函数调用图:

NPL::Environment::DefDeCtor | ( | Environment |  | ) | const

inline

无参数构造：初始化空环境。

构造：使用包含绑定节点的指针。

注解
  不检查绑定的名称。

在文件 NPLA.h 第 1035 行定义.

void NPL::Environment::Define | ( | string_view | id,
|  | ValueObject && | vo,
|  | bool | forced
| ) |  |

以字符串为标识符在指定上下文中定义值。

前置条件
  字符串参数的数据指针非空。

异常

  BadIdentifier | 非强制调用时发现标识符不存在或冲突。

注解
  最后一个参数表示强制调用。

警告
  应避免对被替换或移除的值的悬空引用。

自从
  build 787

在文件 NPLA.cpp 第 626 行定义.

参考 YSLib::ValueNode::AddValue(), Bindings, ystdex::data(), ystdex::swap() , 以及 YAssertNonnull.

函数调用图:

observer_ptr< ValueNode > NPL::Environment::LookupName | ( | string_view | id | ) | const

查找名称。

前置条件
  断言：第二参数的数据指针非空。

返回
  查找到的名称，或查找失败时的空值。

自从
  build 798

在环境中查找名称。

在文件 NPLA.cpp 第 637 行定义.

参考 YSLib::AccessNodePtr(), Bindings, ystdex::data() , 以及 YAssertNonnull.

参考自 Redefine().

函数调用图:

这是这个函数的调用关系图:

NPL::Environment::PDefHOp | ( | bool | ,
|  | const Environment & | x,
|  | const Environment & | y
| ) |  |

void NPL::Environment::Redefine | ( | string_view | id,
|  | ValueObject && | vo,
|  | bool | forced
| ) |  |

以字符串为标识符在指定上下文中覆盖定义值。

前置条件
  间接断言：第一参数的数据指针非空。

在文件 NPLA.cpp 第 644 行定义.

参考 LookupName(), CHRLib::p() , 以及 ystdex::swap().

函数调用图:

bool NPL::Environment::Remove | ( | string_view | id,
|  | bool | forced
| ) |  |

在文件 NPLA.cpp 第 653 行定义.

参考 Bindings, ystdex::data(), YSLib::ValueNode::Remove , 以及 YAssertNonnull.

函数调用图:

void NPL::Environment::ThrowForInvalidType | ( | const ystdex::type_info & | tp | ) |

static

对不符合环境要求的类型抛出异常。

异常

  NPLException | 环境类型检查失败。

自从
  build 799

待办事项:
  使用专用的异常类型。

在文件 NPLA.cpp 第 664 行定义.

参考 ystdex::sfmt().

函数调用图:

## 类成员变量说明

BindingMap NPL::Environment::Bindings {}

mutable

在文件 NPLA.h 第 990 行定义.

参考自 Define(), LookupName() , 以及 Remove().

ValueObject NPL::Environment::Parent {}

父环境：被解释的重定向目标。

参见
  DefaultRedirect

自从
  build 798

在文件 NPLA.h 第 1032 行定义.

参考自 DefaultRedirect().

std::function<observer_ptr<const Environment>string_view)> NPL::Environment::Redirect

初始值:
{
std::bind(DefaultRedirect, std::cref(*this), std::placeholders::_1)}

重定向解析环境：返回非局部名称引用的环境。

异常

  NPLException | 对实现异常中立的未指定派生类型的异常。

注解
  失败时若抛出异常，条件由实现定义。

自从
  build 798

返回
  符合条件的重定向后的环境指针，或无法重定向时的空值。

在局部解析失败时，尝试提供能进一步解析名称的环境。 若不支持重定向，总是返回空指针值。

在文件 NPLA.h 第 1005 行定义.

std::function<observer_ptr<ValueNode>string_view)> NPL::Environment::Resolve

初始值:
{
std::bind(DefaultResolve, std::cref(*this), std::placeholders::_1)}

解析名称：处理保留名称并查找名称。

返回
  查找到的名称，或查找失败时的空值。

前置条件
  实现断言：第二参数的数据指针非空。

参见
  LookupName
  Redirect

解析指定环境中的名称。被解析的环境可对特定保留名称重定向。 实现名称解析的一般步骤包括： 局部解析：对被处理的上下文查找名称，若成功则返回； 否则，若支持重定向，尝试重定向解析：在重定向后的环境中重新查找名称； 否则，名称解析失败。 名称解析失败时默认返回空值。对特定的失败，实现可约定抛出异常。 保留名称的集合和是否支持重定向由实现约定。 只有和名称解析的相关保留名称被处理。其它保留名称被忽略。 不保证对循环重定向进行检查。

在文件 NPLA.h 第 1024 行定义.

该类的文档由以下文件生成:

- NPLA.h
- NPLA.cpp