YSTest: YSLib::ValueNode类 参考

YSTest PreAlpha_b800_20170810 The YSLib Test Project

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

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

Public 类型 | Public 成员函数 | 静态 Public 成员函数 | Public 属性 | Private 属性 | 友元 | 所有成员列表
YSLib::ValueNode类 参考abstract

值类型节点。 更多...

`#include <ValueNode.h>`

类 YSLib::ValueNode 继承关系图:
[图例]
YSLib::ValueNode 的协作图:
[图例]

## Public 类型

using | Container = ystdex::mapped_set< ValueNode, ystdex::less<>>
using | key_type = typename Container::key_type
using | iterator = Container::iterator
using | const_iterator = Container::const_iterator
using | reverse_iterator = Container::reverse_iterator
using | const_reverse_iterator = Container::const_reverse_iterator

## Public 成员函数

| DefDeCtor (ValueNode) ValueNode(Container con)
| 构造：使用容器对象。 更多...
template<typename _tString , typename... _tParams>
| ValueNode (NoContainerTag, _tString &&str, _tParams &&...args)
| 构造：使用字符串引用和值类型对象构造参数。 更多...
template<typename _tString , typename... _tParams>
| ValueNode (Container con, _tString &&str, _tParams &&...args)
| 构造：使用容器对象、字符串引用和值类型对象构造参数。 更多...
template<typename _tIn >
| ValueNode (const pair< _tIn, _tIn > &pr)
| 构造：使用输入迭代器对。 更多...
template<typename _tIn , typename _tString >
| ValueNode (const pair< _tIn, _tIn > &pr, _tString &&str)
| 构造：使用输入迭代器对、字符串引用和值参数。 更多...
| DefDeCopyMoveCtor (ValueNode) PDefHOp(ValueNode &
| 复制赋值：使用复制和交换。 更多...
const ValueNode &node | ImplRet (ystdex::copy_and_swap(*this, node)) DefDeMoveAssignment(ValueNode) DefBoolNeg(explicit
const ValueNode &node | bool (Value)||!container.empty()) PDefHOp(const ValueNode &
const ValueNode &node const ValueNode &node | ImplRet (Add(node),*this) PDefHOp(const ValueNode &
const ValueNode &node const ValueNode &node ValueNode &&node | ImplRet (Add(std::move(node)),*this) PDefHOp(const ValueNode &
const ValueNode &node const ValueNode &node ValueNode &&node const ValueNode &node | ImplRet (Remove(node),*this) PDefHOp(const ValueNode &
const ValueNode &node const ValueNode &node ValueNode &&node const ValueNode &node const string &str | ImplRet (Remove(str),*this) PDefHOp(ValueNode &
| 替换同名子节点。 更多...
const ValueNode &node const ValueNode &node ValueNode &&node const ValueNode &node const string &str const ValueNode &node ImplRet this | PDefHOp (ValueNode &,/=, ValueNode &&node) ImplRet(*this%
friend | PDefHOp (bool,==, const ValueNode &x, const ValueNode &y) ynothrow ImplRet(x.name
| PDefH (void, SetContent, const ValueNode &node) ImplExpr(SetContent(node.GetContainer()
node Value | PDefH (void, SetContent, ValueNode &&node) ImplExpr(SwapContent(node)) PDefH(bool
node Value const ValueNode &node | ImplRet (insert(node).second) PDefH(bool
node Value const ValueNode &node ValueNode &&node | ImplRet (insert(std::move(node)).second) template< typename _tKey > bool AddChild(_tKey &&k
| 添加参数节点指定容器和值的子节点。 更多...
template<typename _tKey >
bool | AddChild (_tKey &&k, ValueNode &&node)
template<typename _type , typename _tString , typename... _tParams>
ValueObject & | PlaceValue (_tString &&str, _tParams &&...args)
| 初始化的值对象引用。 更多...
| PDefH (bool, Remove, const ValueNode &node) ImplRet(erase(node)!=0) PDefH(iterator
const_iterator i | ImplRet (erase(i)) template< typename _tKey
const_iterator i | yimpl (typename=ystdex::enable_if_t< ystdex::is_interoperable< const _tKey &, const string & >::value >)> inline bool Remove(const _tKey &k)
template<typename _func >
Container | SelectChildren (_func f) const
| 复制满足条件的子节点。 更多...
template<typename... _tParams1>
| ValueNode (tuple< _tParams1... > args1)
| 原地构造：使用容器、名称和值的参数元组。 更多...
template<typename... _tParams1, typename... _tParams2>
| ValueNode (tuple< _tParams1... > args1, tuple< _tParams2... > args2)
template<typename... _tParams1, typename... _tParams2, typename... _tParams3>
| ValueNode (tuple< _tParams1... > args1, tuple< _tParams2... > args2, tuple< _tParams3... > args3)
const ValueNode &node const ValueNode &node ValueNode &&node const ValueNode &node const string &str const ValueNode &node ImplRet this *this ValueNode & | operator%= (const ValueNode &)
| 替换同名子节点。 更多...
ValueNode & | operator%= (ValueNode &&)
template<typename _tKey >
void | AddChild (const_iterator hint, _tKey &&k, const ValueNode &node)
template<typename _tKey >
void | AddChild (const_iterator hint, _tKey &&k, ValueNode &&node)
template<typename _tKey , typename... _tParams>
bool | AddValue (_tKey &&k, _tParams &&...args)
| 添加参数指定值的子节点。 更多...
template<typename _tKey , typename... _tParams>
bool | AddValue (const_iterator hint, _tKey &&k, _tParams &&...args)
template<typename _type , typename _tString , typename... _tParams>
_type & | Place (_tString &&str, _tParams &&...args)
| 若指定名称子节点不存在则按指定值初始化。 更多...
template<typename _type , typename _tString , typename... _tParams>
_type & | PlaceUnchecked (_tString &&str, _tParams &&...args)
template<typename _func >
Container | SplitChildren (_func f)
| 转移满足条件的子节点。 更多...
| PDefH (void, SwapContainer, ValueNode &node) ynothrow ImplExpr(container.swap(node.container)) void SwapContent(ValueNode &) ynothrow
| 交换容器。 更多...

## 静态 Public 成员函数

template<typename _tString , typename... _tParams>
static bool | AddValueTo (Container &con, _tString &&str, _tParams &&...args)
| 向容器添加参数指定值的子节点。 更多...
static YB_NORETURN void | ThrowIndexOutOfRange ()
| 抛出索引越界异常。 更多...
static YB_NORETURN void | ThrowWrongNameFound ()
| 抛出名称错误异常。 更多...

## Public 属性

ValueObject | Value {}
node Value | Add
node Value const ValueNode &node | Add
node Value const ValueNode &node ValueNode &&node const ValueNode & | node
| Remove

## Private 属性

string | name {}
Container | container {}
| 子节点容器。 更多...

## 友元

class _tValue | yimpl (ystdex::enable_if_t)< ystdex

## 相关函数

(请注意: 这些不是成员函数.)
template<typename _type >
_type & | Access (ValueNode &node)

访问节点的指定类型对象。

异常

  std::bad_cast | 空实例或类型检查失败 。

更多...

template<typename _type >
observer_ptr< _type > | AccessPtr (ValueNode &node) ynothrow
| 访问节点的指定类型对象指针。 更多...
template<typename _type , typename _tNodeOrPointer >
auto | AccessPtr (observer_ptr< _tNodeOrPointer > p) ynothrow-> decltype(YSLib::AccessPtr< _type >(*p))
| 访问节点的指定类型对象指针。 更多...
YF_API ValueObject | GetValueOf (observer_ptr< const ValueNode >)
| 取指定名称指称的值。 更多...
YF_API observer_ptr< const ValueObject > | GetValuePtrOf (observer_ptr< const ValueNode >)
| 取指定名称指称的值的指针。 更多...
template<typename _tKey >
observer_ptr< ValueNode > | AccessNodePtr (ValueNode::Container *, const _tKey &) ynothrow
YF_API ValueNode & | AccessNode (ValueNode::Container *, const string &)
| 访问节点。 更多...
YF_API const ValueNode & | AccessNode (const ValueNode::Container *, const string &)
YF_API ValueNode & | AccessNode (ValueNode &, size_t)
| ClearTo
const ValueObject &vo ynothrow | ClearTo
const ValueObject &vo ynothrow ValueObject &&vo ynothrow | ClearContainer
| PDefH (void, Clear,) ynothrow ImplExpr(Value.Clear()
| 清除节点。 更多...
| ClearContainer ()) PDefH(void
| 清除容器并设置值。 更多...
const ValueObject &vo ynothrow | ImplExpr (ClearContainer(), Value=vo) PDefH(void
const ValueObject &vo ynothrow ValueObject &&vo ynothrow | ImplExpr (ClearContainer(), Value=std::move(vo)) PDefH(void
| 清除节点容器。 更多...
const ValueObject &vo ynothrow ValueObject &&vo ynothrow ynothrow | ImplExpr (container.clear()) static Container CreateRecursively(const Container &
| 递归创建容器副本。 更多...
| PDefH (Container, CreateWith, IValueHolder::Creation c) const ImplRet(CreateRecursively(container
template<typename _fCallable >
c Container | CreateWith (_fCallable f)
template<typename _fCallable >
Container | CreateWith (_fCallable f) const
template<typename _fCallable >
static Container | CreateRecursively (Container &con, _fCallable f)
template<typename _fCallable >
static Container | CreateRecursively (const Container &con, _fCallable f)
| begin
const | pair< iterator YPP_Comma bool >
const | emplace
const container | iterator
const container | emplace_hint
const container container | empty
const container container const ynothrow | end
| PDefH (iterator, begin,) ImplRet(GetContainerRef().begin()) PDefH(const_iterator
const | ImplRet (GetContainer().begin()) DefFwdTmpl(
const container | emplace (yforward(args)...)) DefFwdTmpl(
const container container | emplace_hint (yforward(args)...)) PDefH(bool
const container container const ynothrow | ImplRet (container.empty()) PDefH(iterator
const container container const ynothrow | ImplRet (GetContainerRef().end()) PDefH(const_iterator
const container container const ynothrow const | ImplRet (GetContainer().end()) DefFwdTmpl(-> decltype(container.erase(yforward(args)...)), auto, erase, container.erase(yforward(args)...))DefFwdTmpl(-> decltype(container.insert(yforward(args)...)), auto, insert, container.insert(yforward(args)...))template< typename _tKey, class _tParam >yimpl(ystdex::enable_if_inconvertible_t)< _tKey &&, const_iterator, std::pair< iterator, bool >>insert_or_assign(_tKey &&k, _tParam &&arg)
template<typename _tKey , class _tParam >
iterator | insert_or_assign (const_iterator hint, _tKey &&k, _tParam &&arg)
| rbegin
const | rend
const const | set_value_move
const const ValueNode &node | size
const const ValueNode &node const ynothrow ValueNode & | ynothrow
| const_iterator
| PDefH (reverse_iterator, rbegin,) ImplRet(GetContainerRef().rbegin()) PDefH(const_reverse_iterator
const | ImplRet (GetContainer().rbegin()) PDefH(reverse_iterator
const | ImplRet (GetContainerRef().rend()) PDefH(const_reverse_iterator
const const | ImplRet (GetContainer().rend()) friend PDefH(ValueNode
const const ValueNode &node | ImplRet ({std::move(node.GetContainerRef()), node.GetName(), std::move(node.Value)}) PDefH(size_t
const const ValueNode &node const ynothrow | ImplRet (container.size()) YF_API friend void swap(ValueNode &
| 交换。 更多...
template<typename _tKey , typename... _tParams>
| yimpl (ystdex::enable_if_inconvertible_t)< _tKey &&
std::pair< iterator, bool > | try_emplace (_tKey &&k, _tParams &&...args)
template<typename _tKey , typename... _tParams>
iterator | try_emplace (const_iterator hint, _tKey &&k, _tParams &&...args)

## 详细描述

值类型节点。

警告
  非虚析构。
  作为子节点时应保证修改操作不影响键（名称）的等价性，否则访问容器行为未定义。

自从
  build 330

包含名称字符串和值类型对象的对象节点。

在文件 ValueNode.h 第 58 行定义.

## 成员类型定义说明

using YSLib::ValueNode::const_iterator = Container::const_iterator

自从
  build 460

在文件 ValueNode.h 第 68 行定义.

using YSLib::ValueNode::const_reverse_iterator = Container::const_reverse_iterator

自从
  build 696

在文件 ValueNode.h 第 72 行定义.

using YSLib::ValueNode::Container = ystdex::mapped_set<ValueNode, ystdex::less<>>

在文件 ValueNode.h 第 62 行定义.

using YSLib::ValueNode::iterator = Container::iterator

自从
  build 460

在文件 ValueNode.h 第 66 行定义.

using YSLib::ValueNode::key_type = typename Container::key_type

自从
  build 678

在文件 ValueNode.h 第 64 行定义.

using YSLib::ValueNode::reverse_iterator = Container::reverse_iterator

自从
  build 696

在文件 ValueNode.h 第 70 行定义.

## 构造及析构函数说明

template<typename _tString , typename... _tParams>

YSLib::ValueNode::ValueNode | ( | NoContainerTag | ,
|  | _tString && | str,
|  | _tParams &&... | args
| ) |  |

inline

构造：使用字符串引用和值类型对象构造参数。

注解
  不使用容器。

自从
  build 674

在文件 ValueNode.h 第 101 行定义.

template<typename _tString , typename... _tParams>

YSLib::ValueNode::ValueNode | ( | Container | con,
|  | _tString && | str,
|  | _tParams &&... | args
| ) |  |

inline

构造：使用容器对象、字符串引用和值类型对象构造参数。

自从
  build 502

在文件 ValueNode.h 第 109 行定义.

template<typename _tIn >

YSLib::ValueNode::ValueNode | ( | const pair< _tIn, _tIn > & | pr | ) |

inline

构造：使用输入迭代器对。

自从
  build 337

在文件 ValueNode.h 第 119 行定义.

template<typename _tIn , typename _tString >

YSLib::ValueNode::ValueNode | ( | const pair< _tIn, _tIn > & | pr,
|  | _tString && | str
| ) |  |

inline

构造：使用输入迭代器对、字符串引用和值参数。

自从
  build 340

在文件 ValueNode.h 第 128 行定义.

template<typename... _tParams1>

YSLib::ValueNode::ValueNode | ( | tuple< _tParams1... > | args1 | ) |

inline

原地构造：使用容器、名称和值的参数元组。

自从
  build 767

在文件 ValueNode.h 第 138 行定义.

template<typename... _tParams1, typename... _tParams2>

YSLib::ValueNode::ValueNode | ( | tuple< _tParams1... > | args1,
|  | tuple< _tParams2... > | args2
| ) |  |

inline

在文件 ValueNode.h 第 143 行定义.

template<typename... _tParams1, typename... _tParams2, typename... _tParams3>

YSLib::ValueNode::ValueNode | ( | tuple< _tParams1... > | args1,
|  | tuple< _tParams2... > | args2,
|  | tuple< _tParams3... > | args3
| ) |  |

inline

在文件 ValueNode.h 第 150 行定义.

## 成员函数说明

template<typename _tKey >

bool YSLib::ValueNode::AddChild | ( | _tKey && | k,
|  | ValueNode && | node
| ) |  |

inline

在文件 ValueNode.h 第 354 行定义.

参考 ystdex::try_emplace() , 以及 yforward.

函数调用图:
template<typename _tKey >

void YSLib::ValueNode::AddChild | ( | const_iterator | hint,
|  | _tKey && | k,
|  | const ValueNode & | node
| ) |  |

inline

参见
  try_emplace_hint

在文件 ValueNode.h 第 364 行定义.

参考 ystdex::try_emplace_hint(), Value , 以及 yforward.

函数调用图:
template<typename _tKey >

void YSLib::ValueNode::AddChild | ( | const_iterator | hint,
|  | _tKey && | k,
|  | ValueNode && | node
| ) |  |

inline

在文件 ValueNode.h 第 371 行定义.

参考 ystdex::try_emplace_hint() , 以及 yforward.

函数调用图:
template<typename _tKey , typename... _tParams>

bool YSLib::ValueNode::AddValue | ( | _tKey && | k,
|  | _tParams &&... | args
| ) |  |

inline

添加参数指定值的子节点。

自从
  build 757

参见
  try_emplace

在文件 ValueNode.h 第 387 行定义.

参考 CHRLib::args, YSLib::NoContainer, ystdex::try_emplace() , 以及 yforward.

参考自 NPL::Environment::Define().

函数调用图:

这是这个函数的调用关系图:
template<typename _tKey , typename... _tParams>

bool YSLib::ValueNode::AddValue | ( | const_iterator | hint,
|  | _tKey && | k,
|  | _tParams &&... | args
| ) |  |

inline

参见
  try_emplace_hint

在文件 ValueNode.h 第 395 行定义.

参考 CHRLib::args, YSLib::NoContainer, ystdex::try_emplace_hint() , 以及 yforward.

函数调用图:
template<typename _tString , typename... _tParams>

static bool YSLib::ValueNode::AddValueTo | ( | Container & | con,
|  | _tString && | str,
|  | _tParams &&... | args
| ) |  |

inlinestatic

向容器添加参数指定值的子节点。

参见
  emplace_hint

自从
  build 674

在文件 ValueNode.h 第 409 行定义.

参考 CHRLib::args, YSLib::NoContainer, YSLib::Text::str, ystdex::try_emplace() , 以及 yforward.

函数调用图:

const ValueNode& node YSLib::ValueNode::bool | ( | Value |  | ) | const

自从
  build 730

YSLib::ValueNode::ClearContainer | ( |  | ) |

清除容器并设置值。

自从
  build 776

template<typename _fCallable >

static Container YSLib::ValueNode::CreateRecursively | ( | Container & | con,
|  | _fCallable | f
| ) |  |

inlinestatic

自从
  build 787

在文件 ValueNode.h 第 453 行定义.

参考 ystdex::mapped_set< _type, _fComp, _tAlloc >::emplace(), CHRLib::f() , 以及 ystdex::invoke().

函数调用图:
template<typename _fCallable >

static Container YSLib::ValueNode::CreateRecursively | ( | const Container & | con,
|  | _fCallable | f
| ) |  |

inlinestatic

自从
  build 785

在文件 ValueNode.h 第 465 行定义.

参考 ystdex::mapped_set< _type, _fComp, _tAlloc >::emplace(), CHRLib::f() , 以及 ystdex::invoke().

函数调用图:
template<typename _fCallable >

c Container YSLib::ValueNode::CreateWith | ( | _fCallable | f | ) |

inline

自从
  build 787

在文件 ValueNode.h 第 481 行定义.

template<typename _fCallable >

Container YSLib::ValueNode::CreateWith | ( | _fCallable | f | ) | const

inline

自从
  build 785

在文件 ValueNode.h 第 488 行定义.

YSLib::ValueNode::DefDeCopyMoveCtor | ( | ValueNode |  | ) |

复制赋值：使用复制和交换。

自从
  build 768

YSLib::ValueNode::DefDeCtor | ( | ValueNode |  | ) |

inline

构造：使用容器对象。

自从
  build 502

在文件 ValueNode.h 第 86 行定义.

const container YSLib::ValueNode::emplace | ( | yforward(args) | ... | ) |

自从
  build 667

const container container YSLib::ValueNode::emplace_hint | ( | yforward(args) | ... | ) |

自从
  build 598

const ValueObject& vo ynothrow YSLib::ValueNode::ImplExpr | ( | ClearContainer() | ,
|  | Value | = `vo`
| ) |  |

const ValueObject& vo ynothrow ValueObject&& vo ynothrow YSLib::ValueNode::ImplExpr | ( | ClearContainer() | ,
|  | Value | = `std::move(vo)`
| ) |  |

清除节点容器。

后置条件
  `empty()` 。

自从
  build 667

const ValueObject& vo ynothrow ValueObject&& vo ynothrow ynothrow YSLib::ValueNode::ImplExpr | ( | container. | clear() | ) | const

递归创建容器副本。

自从
  build 767

const ValueNode& node YSLib::ValueNode::ImplRet | ( | ystdex::copy_and_swap *, | node | ) |

自从
  build 336

const ValueNode& node const ValueNode& node YSLib::ValueNode::ImplRet | ( | Add(node) | ,
|  | * | this
| ) |  | const

const ValueNode& node const ValueNode& node ValueNode&& node YSLib::ValueNode::ImplRet | ( | Add(std::move(node)) | ,
|  | * | this
| ) |  | const

const ValueNode& node const ValueNode& node ValueNode&& node const ValueNode& node YSLib::ValueNode::ImplRet | ( | Remove(node) | ,
|  | * | this
| ) |  | const

const ValueNode& node const ValueNode& node ValueNode&& node const ValueNode& node const string& str YSLib::ValueNode::ImplRet | ( | Remove(str) | ,
|  | * | this
| ) |  |

替换同名子节点。

返回
  自身引用。

node Value const ValueNode& node YSLib::ValueNode::ImplRet | ( | insert(node). | second | ) |

自从
  build 667

node Value const ValueNode& node ValueNode&& node YSLib::ValueNode::ImplRet | ( | insert(std::move(node)). | second | ) |

添加参数节点指定容器和值的子节点。

自从
  build 775

参见
  try_emplace

const_iterator i YSLib::ValueNode::ImplRet | ( | erase(i) |  | ) |

自从
  build 680

const YSLib::ValueNode::ImplRet | ( | GetContainer().begin() |  | ) |

自从
  build 767

const container container const ynothrow YSLib::ValueNode::ImplRet | ( | container. | empty() | ) |

const container container const ynothrow YSLib::ValueNode::ImplRet | ( | GetContainerRef().end() |  | ) |

const container container const ynothrow const YSLib::ValueNode::ImplRet | ( | GetContainer().end() |  | ) | -> decltype(container.erase(yforward(args)...)), auto, erase, container.erase(yforward(args)...)) DefFwdTmpl(-> decltype(container.insert(yforward(args)...)), auto, insert, container.insert(yforward(args)...)) template<typename _tKey, class _tParam> yimpl(ystdex::enable_if_inconvertible_t)<_tKey&&, const_iterator, std::pair<iterator, bool>> insert_or_assign(_tKey&& k, _tParam&& arg)

inline

自从
  build 761

在文件 ValueNode.h 第 637 行定义.

参考 ystdex::insert_or_assign() , 以及 yforward.

函数调用图:

const YSLib::ValueNode::ImplRet | ( | GetContainer().rbegin() |  | ) |

const YSLib::ValueNode::ImplRet | ( | GetContainerRef().rend() |  | ) |

const const YSLib::ValueNode::ImplRet | ( | GetContainer().rend() |  | ) |

参见
  ystdex::mapped_set
  ystdex::set_value_move

自从
  build 681

const const ValueNode& node YSLib::ValueNode::ImplRet | ( | {std::move(node.GetContainerRef()), node.GetName(), std::move(node.Value)} |  | ) |

自从
  build 598

const const ValueNode& node const ynothrow YSLib::ValueNode::ImplRet | ( | container. | size() | ) |

交换。

自从
  build 710

template<typename _tKey , class _tParam >

iterator YSLib::ValueNode::insert_or_assign | ( | const_iterator | hint,
|  | _tKey && | k,
|  | _tParam && | arg
| ) |  |

inline

在文件 ValueNode.h 第 659 行定义.

参考 ystdex::insert_or_assign_hint() , 以及 yforward.

参考自 operator%=().

函数调用图:

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

ValueNode & YSLib::ValueNode::operator%= | ( | const ValueNode & | node | ) |

替换同名子节点。

返回
  子节点引用。

自从
  build 792

在文件 ValueNode.cpp 第 37 行定义.

参考 platform::Deref(), insert_or_assign() , 以及 name.

函数调用图:

ValueNode & YSLib::ValueNode::operator%= | ( | ValueNode && | node | ) |

在文件 ValueNode.cpp 第 42 行定义.

参考 platform::Deref(), insert_or_assign(), name , 以及 node.

函数调用图:

YSLib::ValueNode::PDefH | ( | void | ,
|  | SetContent | ,
|  | const ValueNode & | node
| ) |  |

node Value YSLib::ValueNode::PDefH | ( | void | ,
|  | SetContent | ,
|  | ValueNode && | node
| ) |  |

自从
  build 667

YSLib::ValueNode::PDefH | ( | void | ,
|  | Clear |
| ) |  |

清除节点。

注解
  清理容器和修改值的操作之间的顺序未指定。

后置条件
  `!Value && empty()` 。

自从
  build 666

YSLib::ValueNode::PDefH | ( | Container | ,
|  | CreateWith | ,
|  | IValueHolder::Creation | c
| ) |  | const

自从
  build 767

YSLib::ValueNode::PDefH | ( | bool | ,
|  | Remove | ,
|  | const ValueNode & | node
| ) |  |

pure virtual

自从
  build 754

YSLib::ValueNode::PDefH | ( | void | ,
|  | SwapContainer | ,
|  | ValueNode & | node
| ) |  |

交换容器。

警告
  不检查容器之间的所有权，保持循环引用状态析构引起未定义行为。交换容器和值。

YSLib::ValueNode::PDefH | ( | iterator | ,
|  | begin |
| ) |  |

自从
  build 460

YSLib::ValueNode::PDefH | ( | reverse_iterator | ,
|  | rbegin |
| ) |  |

自从
  build 696

const ValueNode& node const ValueNode& node ValueNode&& node const ValueNode& node const string& str const ValueNode& node ImplRet this YSLib::ValueNode::PDefHOp | ( | ValueNode & | ,
|  | / | ,
|  | ValueNode && | node
| ) |  |

YSLib::ValueNode::PDefHOp | ( | bool | ,
|  | const ValueNode & | x,
|  | const ValueNode & | y
| ) |  |

自从
  build 673

template<typename _type , typename _tString , typename... _tParams>

_type& YSLib::ValueNode::Place | ( | _tString && | str,
|  | _tParams &&... | args
| ) |  |

inline

若指定名称子节点不存在则按指定值初始化。

自从
  build 781

返回
  按指定名称查找的指定类型的子节点的值的引用。

参见
  ValueObject::Access

自从
  build 681

在文件 ValueNode.h 第 507 行定义.

参考 CHRLib::args, YSLib::Text::str , 以及 yforward.

template<typename _type , typename _tString , typename... _tParams>

_type& YSLib::ValueNode::PlaceUnchecked | ( | _tString && | str,
|  | _tParams &&... | args
| ) |  |

inline

前置条件
  间接断言：存储对象已存在时类型和访问的类型一致。

参见
  ValueObject::GetObject

在文件 ValueNode.h 第 519 行定义.

参考 CHRLib::args, YSLib::Text::str , 以及 yforward.

template<typename _type , typename _tString , typename... _tParams>

ValueObject& YSLib::ValueNode::PlaceValue | ( | _tString && | str,
|  | _tParams &&... | args
| ) |  |

inline

初始化的值对象引用。

在文件 ValueNode.h 第 529 行定义.

参考 CHRLib::args, YSLib::NoContainer, YSLib::Text::str, ystdex::try_emplace() , 以及 yforward.

函数调用图:
template<typename _func >

Container YSLib::ValueNode::SelectChildren | ( | _func | f | ) | const

inline

复制满足条件的子节点。

自从
  build 664

在文件 ValueNode.h 第 556 行定义.

参考 ystdex::cpp2011::begin(), ystdex::cpp2011::end(), ystdex::for_each_if() , 以及 ystdex::mapped_set< _type, _fComp, _tAlloc >::insert().

函数调用图:
template<typename _func >

Container YSLib::ValueNode::SplitChildren | ( | _func | f | ) |

inline

转移满足条件的子节点。

自从
  build 667

在文件 ValueNode.h 第 571 行定义.

参考 ystdex::cpp2011::begin(), platform::Deref(), ystdex::mapped_set< _type, _fComp, _tAlloc >::emplace(), ystdex::cpp2011::end(), ystdex::mapped_set< _type, _fComp, _tAlloc >::find(), ystdex::for_each_if(), YSLib::NoContainer , 以及 Value.

函数调用图:

void YSLib::ValueNode::ThrowIndexOutOfRange | ( |  | ) |

static

抛出索引越界异常。

异常

  std::out_of_range | 索引越界。

自从
  build 730

在文件 ValueNode.cpp 第 61 行定义.

参考自 YSLib::AccessNode().

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

void YSLib::ValueNode::ThrowWrongNameFound | ( |  | ) |

static

抛出名称错误异常。

异常

  std::out_of_range | 名称错误。

自从
  build 730

在文件 ValueNode.cpp 第 67 行定义.

参考自 YSLib::AccessNode().

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

std::pair<iterator, bool> YSLib::ValueNode::try_emplace | ( | _tKey && | k,
|  | _tParams &&... | args
| ) |  |

inline

在文件 ValueNode.h 第 703 行定义.

参考 CHRLib::args, ystdex::try_emplace() , 以及 yforward.

函数调用图:
template<typename _tKey , typename... _tParams>

iterator YSLib::ValueNode::try_emplace | ( | const_iterator | hint,
|  | _tKey && | k,
|  | _tParams &&... | args
| ) |  |

inline

自从
  build 681

在文件 ValueNode.h 第 710 行定义.

参考 CHRLib::args, ystdex::try_emplace_hint() , 以及 yforward.

函数调用图:

const_iterator i YSLib::ValueNode::yimpl | ( | typename | = `ystdex::enable_if_t< ystdex::is_interoperable<const _tKey&, const string&>::value>` | ) | const

inline

在文件 ValueNode.h 第 542 行定义.

参考 ystdex::erase_first().

函数调用图:
template<typename _tKey , typename... _tParams>

YSLib::ValueNode::yimpl | ( | ystdex::enable_if_inconvertible_t |  | ) |

自从
  build 681

## 友元及相关函数文档

template<typename _type >

_type & Access | ( | ValueNode & | node | ) |

related

访问节点的指定类型对象。

异常

  std::bad_cast | 空实例或类型检查失败 。

自从
  build 666

在文件 ValueNode.h 第 728 行定义.

参考 YSLib::ValueObject::Access() , 以及 Value.

函数调用图:

YF_API ValueNode & AccessNode | ( | ValueNode::Container * | ,
|  | const string & |
| ) |  |

related

访问节点。

异常

  std::out_of_range | 未找到对应节点。

自从
  build 670

在文件 ValueNode.cpp 第 80 行定义.

YF_API const ValueNode & AccessNode | ( | const ValueNode::Container * | ,
|  | const string & |
| ) |  |

related

自从
  build 670

在文件 ValueNode.cpp 第 87 行定义.

YF_API ValueNode & AccessNode | ( | ValueNode & | ,
|  | size_t |
| ) |  |

related

注解
  时间复杂度 O(n) 。

自从
  build 670

在文件 ValueNode.cpp 第 94 行定义.

template<typename _tKey >

observer_ptr< ValueNode > AccessNodePtr | ( | ValueNode::Container * | ,
|  | const _tKey & |
| ) |  |

related

自从
  build 730

在文件 ValueNode.h 第 919 行定义.

template<typename _type >

observer_ptr< _type > AccessPtr | ( | ValueNode & | node | ) |

related

访问节点的指定类型对象指针。

自从
  build 670

在文件 ValueNode.h 第 746 行定义.

template<typename _type , typename _tNodeOrPointer >

auto AccessPtr | ( | observer_ptr< _tNodeOrPointer > | p | ) | -> decltype(YSLib::AccessPtr<_type>(*p))

related

访问节点的指定类型对象指针。

自从
  build 749

在文件 ValueNode.h 第 764 行定义.

参考 CHRLib::p().

函数调用图:

YF_API ValueObject GetValueOf | ( | observer_ptr< const ValueNode > |  | ) |

related

取指定名称指称的值。

自从
  build 749

在文件 ValueNode.cpp 第 144 行定义.

YF_API observer_ptr< const ValueObject > GetValuePtrOf | ( | observer_ptr< const ValueNode > |  | ) |

related

取指定名称指称的值的指针。

在文件 ValueNode.cpp 第 150 行定义.

class _tValue yimpl | ( | ystdex::enable_if_t |  | ) |

friend

在文件 ValueNode.h 第 315 行定义.

## 类成员变量说明

node Value YSLib::ValueNode::Add

在文件 ValueNode.h 第 332 行定义.

node Value const ValueNode& node YSLib::ValueNode::Add

在文件 ValueNode.h 第 335 行定义.

YSLib::ValueNode::begin

在文件 ValueNode.h 第 619 行定义.

const ValueObject& vo ynothrow ValueObject&& vo ynothrow YSLib::ValueNode::ClearContainer

在文件 ValueNode.h 第 442 行定义.

YSLib::ValueNode::ClearTo

在文件 ValueNode.h 第 430 行定义.

const ValueObject& vo ynothrow YSLib::ValueNode::ClearTo

在文件 ValueNode.h 第 432 行定义.

YSLib::ValueNode::const_iterator

在文件 ValueNode.h 第 701 行定义.

Container YSLib::ValueNode::container {}

private

子节点容器。

自从
  build 667

在文件 ValueNode.h 第 80 行定义.

const YSLib::ValueNode::emplace

在文件 ValueNode.h 第 623 行定义.

const container YSLib::ValueNode::emplace_hint

在文件 ValueNode.h 第 627 行定义.

const container container YSLib::ValueNode::empty

在文件 ValueNode.h 第 631 行定义.

参考自 YSLib::AddMIMEItems(), YSLib::UI::TreeList::Bind() , 以及 NPL::TransformToSyntaxNode().

const container container const ynothrow YSLib::ValueNode::end

在文件 ValueNode.h 第 634 行定义.

const container YSLib::ValueNode::iterator

在文件 ValueNode.h 第 627 行定义.

string YSLib::ValueNode::name {}

private

在文件 ValueNode.h 第 75 行定义.

参考自 operator%=() , 以及 YSLib::swap().

node Value const ValueNode& node ValueNode&& node const ValueNode& YSLib::ValueNode::node

初始值:
{
return
try_emplace(k, node.GetContainer(), yforward(k), node.Value).second

在文件 ValueNode.h 第 348 行定义.

参考自 operator%=().

const YSLib::ValueNode::pair< iterator YPP_Comma bool >

在文件 ValueNode.h 第 623 行定义.

YSLib::ValueNode::rbegin

在文件 ValueNode.h 第 670 行定义.

YSLib::ValueNode::Remove

在文件 ValueNode.h 第 539 行定义.

参考自 NPL::Environment::Remove() , 以及 NPL::A1::Forms::Undefine().

const YSLib::ValueNode::rend

在文件 ValueNode.h 第 673 行定义.

const const YSLib::ValueNode::set_value_move

在文件 ValueNode.h 第 684 行定义.

const const ValueNode& node YSLib::ValueNode::size

在文件 ValueNode.h 第 689 行定义.

ValueObject YSLib::ValueNode::Value {}

自从
  build 667

在文件 ValueNode.h 第 84 行定义.

参考自 Access(), AddChild(), YSLib::GetValueOf(), YSLib::GetValuePtrOf(), YReader::ShlReader::SaveBookmarks() , 以及 SplitChildren().

const const ValueNode& node const ynothrow ValueNode& YSLib::ValueNode::ynothrow

在文件 ValueNode.h 第 697 行定义.

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

- ValueNode.h
- ValueNode.cpp