YSTest: YSLib::ValueNode类 参考

YSTest PreAlpha_b900_20201012 The YSLib Test Project

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

值类型节点。 更多...

`#include <ValueNode.h>`

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

## 类

struct | MappedSetTraits

## Public 类型

using | allocator_type = pmr::polymorphic_allocator< ValueNode >
| 分配器类型。 更多...
template<typename _type >
using | is_key_t = ystdex::is_interoperable< const _type &, const string & >
template<typename _tKey >
using | enable_if_key_t = ystdex::enable_if_t< is_key_t< _tKey >::value >
template<typename _tOther >
using | enable_not_key_t = ystdex::enable_if_t<!is_key_t< _tOther >::value >
using | Container = ystdex::mapped_set< ValueNode, ystdex::less<>, MappedSetTraits, allocator_type >
using | key_type = 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) explicit ValueNode(allocator_type a)
| 构造：使用分配器。 更多...
| ValueNode (const Container &con)
| 构造：使用容器对象引用和可选的分配器。 更多...
| ValueNode (const Container &con, allocator_type a)
| ValueNode (Container &&con)
| ValueNode (Container &&con, allocator_type a)
template<typename _tString , typename... _tParams, yimpl(typename=enable_value_constructible_t< _tParams... >) >
| ValueNode (NoContainerTag, _tString &&str, _tParams &&... args)
| 构造：使用字符串引用和值类型对象构造参数。 更多...
template<typename _tString , typename... _tParams, yimpl(typename=enable_value_constructible_t< _tParams... >) >
| ValueNode (std::allocator_arg_t, allocator_type a, NoContainerTag, _tString &&str, _tParams &&... args)
| 构造：使用字符串引用、值类型对象构造参数和分配器。 更多...
template<typename _tString , typename... _tParams, yimpl(typename=enable_value_constructible_t< _tParams... >) >
| ValueNode (const Container &con, _tString &&str, _tParams &&... args)
| 构造：使用容器对象引用、字符串引用和值类型对象构造参数。 更多...
template<typename _tString , typename... _tParams, yimpl(typename=enable_value_constructible_t< _tParams... >) >
| ValueNode (Container &&con, _tString &&str, _tParams &&... args)
template<typename _tString , typename... _tParams, yimpl(typename=enable_value_constructible_t< _tParams... >) >
| ValueNode (std::allocator_arg_t, allocator_type a, const Container &con, _tString &&str, _tParams &&... args)
| 构造：使用容器对象引用、字符串引用、值类型对象构造参数和分配器。 更多...
template<typename _tString , typename... _tParams, yimpl(typename=enable_value_constructible_t< _tParams... >) >
| ValueNode (std::allocator_arg_t, allocator_type a, Container &&con, _tString &&str, _tParams &&... args)
template<typename _tIn >
| ValueNode (const pair< _tIn, _tIn > &pr, allocator_type a={})
| 构造：使用输入迭代器对和可选的分配器。 更多...
template<typename _tIn , typename _tString >
| ValueNode (const pair< _tIn, _tIn > &pr, _tString &&str, allocator_type a={})
| 构造：使用输入迭代器对、字符串引用、值参数和可选的分配器。 更多...
template<typename... _tParams1>
| ValueNode (tuple< _tParams1... > args1, allocator_type a={})
| 原地构造：使用容器、名称、值的参数元组和可选的分配器。 更多...
template<typename... _tParams1, typename... _tParams2>
| ValueNode (tuple< _tParams1... > args1, tuple< _tParams2... > args2, allocator_type a={})
template<typename... _tParams1, typename... _tParams2, typename... _tParams3>
| ValueNode (tuple< _tParams1... > args1, tuple< _tParams2... > args2, tuple< _tParams3... > args3, allocator_type a={})
| ValueNode (const ValueNode &nd)
| 复制构造：使用参数和参数指定的分配器。 更多...
| ValueNode (const ValueNode &nd, allocator_type a)
| DefDeMoveCtor (ValueNode) ValueNode(ValueNode &&nd
allocator_type a | container (std::move(nd.container), a)
allocator_type a | Value (std::move(nd.Value))
| DefBoolNeg (explicit, bool(Value)||!container.empty()) friend PDefHOp(bool
const ValueNode const ValueNode &y ynothrow | ImplRet (x.name==y.name) friend PDefHOp(bool
const ValueNode const ValueNode &y ynothrow const ValueNode const string &str ynothrow | ImplRet (x.name==str) template< typename _tKey > YB_ATTR_nodiscard YB_PURE friend bool operator
| 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 >
Container | CreateWith (_fCallable f) &&
template<typename _fCallable >
Container | CreateWith (_fCallable f) const &&
void | MoveContent (ValueNode &&)
| 转移参数内容。 更多...
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 _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=enable_if_key_t< _tKey >)> inline bool Remove(const _tKey &k)
template<typename _func >
Container | SelectChildren (_func f) const
| 复制满足条件的子节点。 更多...
template<typename _func >
Container | SplitChildren (_func f)
| 转移满足条件的子节点。 更多...
| PDefH (void, SwapContainer, ValueNode &node) ynothrowv ImplExpr(YAssert(get_allocator()
| 交换容器。 更多...
Invalid allocator container | swap (node.container)) void SwapContent(ValueNode &) ynothrowv
| 交换容器和值。 更多...
| 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)...)) YB_ATTR_nodiscard 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)...)) YB_ATTR_nodiscard YB_PURE PDefH(allocator_type, get_allocator,) const ynothrow ImplRet(container.get_allocator()) 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)
YB_ATTR_nodiscard YB_PURE | PDefH (reverse_iterator, rbegin,) ImplRet(GetContainerRef().rbegin()) YB_ATTR_nodiscard YB_PURE PDefH(const_reverse_iterator
YB_ATTR_nodiscard YB_PURE const | ImplRet (GetContainer().rbegin()) YB_ATTR_nodiscard YB_PURE PDefH(reverse_iterator
YB_ATTR_nodiscard YB_PURE const | ImplRet (GetContainerRef().rend()) YB_ATTR_nodiscard YB_PURE PDefH(const_reverse_iterator
YB_ATTR_nodiscard YB_PURE const const | ImplRet (GetContainer().rend()) YB_ATTR_nodiscard YB_PURE PDefH(size_t
YB_ATTR_nodiscard YB_PURE const const 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_hint (const_iterator hint, _tKey &&k, _tParams &&... args)

## 静态 Public 成员函数

template<class _tCon , typename _fCallable , yimpl(typename=ystdex::enable_if_t< std::is_same< Container &, ystdex::remove_cvref_t< _tCon > & >::value >) >
static Container | CreateRecursively (_tCon &&con, _fCallable f)
static YB_NORETURN void | ThrowIndexOutOfRange (size_t)
| 抛出索引越界异常。 更多...
static YB_NORETURN void | ThrowWrongNameFound (string_view)
| 抛出名称错误异常。 更多...

## Public 属性

ValueObject | Value {}
allocator_type a | ynothrowv: name(std::move(nd.name))
PDefHOp(ValueNode &,=, const ValueNode &node) ImplRet(ystdex ValueNode & | operator%= (ValueNode &&)
| 复制赋值：使用参数的分配器构造的副本和交换操作。 更多...
const ValueNode & | x
const ValueNode const ValueNode &y ynothrow const ValueNode & | x
| Remove
Invalid allocator | found
| 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
YB_ATTR_nodiscard YB_PURE | rbegin
YB_ATTR_nodiscard YB_PURE const | rend
YB_ATTR_nodiscard YB_PURE const const | size
YB_ATTR_nodiscard YB_PURE const const const ynothrow ValueNode & | ynothrowv
| const_iterator

## Private 类型

template<typename... _tParams>
using | enable_value_constructible_t = ystdex::enable_if_t< std::is_constructible< ValueObject, _tParams... >::value >

## Private 属性

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

## 相关函数

(请注意: 这些不是成员函数.)
template<typename _type >
YB_ATTR_nodiscard YB_PURE _type & | Access (ValueNode &node)
| 访问节点的指定类型对象。 更多...
template<typename _type , typename... _tParams>
YB_ATTR_nodiscard YB_PURE _type & | AccessChild (ValueNode &node, _tParams &&... args)
| 访问子节点的指定类型对象。 更多...

## 详细描述

值类型节点。

警告
  非虚析构。
  作为子节点时应保证修改操作不影响键（名称）的等价性，否则访问容器行为未定义。
  若操作引入循环引用，可能造成资源泄漏，且不保证容器行为满足 C++ 容器要求。

自从
  build 330

包含名称字符串和值类型对象的对象节点。 使用字符串作为外部访问的键，但容器类型直接保存的键是自身。 内部包含一个 Container 类型的关联容器，保持被删除以外的其它元素不失效。 因为 Container 对实现无其它要求，构造开销不保证可忽略，不使用合一构造。

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

## 成员类型定义说明

## ◆ allocator_type

using YSLib::ValueNode::allocator_type = pmr::polymorphic_allocator<ValueNode>

分配器类型。

自从
  build 844

注解
  支持 uses-allocator 构造并适合直接传递对象的值。

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

## ◆ const_iterator

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

自从
  build 460

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

## ◆ const_reverse_iterator

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

自从
  build 696

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

## ◆ Container

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

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

## ◆ enable_if_key_t

template<typename _tKey >

using YSLib::ValueNode::enable_if_key_t = ystdex::enable_if_t<is_key_t<_tKey>::value>

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

## ◆ enable_not_key_t

template<typename _tOther >

using YSLib::ValueNode::enable_not_key_t = ystdex::enable_if_t<!is_key_t<_tOther>::value>

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

## ◆ enable_value_constructible_t

template<typename... _tParams>

using YSLib::ValueNode::enable_value_constructible_t = ystdex::enable_if_t< std::is_constructible<ValueObject, _tParams...>::value>

private

自从
  build 844

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

## ◆ is_key_t

template<typename _type >

using YSLib::ValueNode::is_key_t = ystdex::is_interoperable<const _type&, const string&>

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

## ◆ iterator

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

自从
  build 460

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

## ◆ key_type

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

自从
  build 678

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

## ◆ reverse_iterator

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

自从
  build 696

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

## 构造及析构函数说明

## ◆ ValueNode() [1/17]

YSLib::ValueNode::ValueNode | ( | const Container & | con | ) |

inline

构造：使用容器对象引用和可选的分配器。

自从
  build 845

复制或转移第一参数指定的容器对象作为节点的内容。 若指定了分配器参数，使用指定的分配器；否则，复制或转移容器中的分配器。

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

## ◆ ValueNode() [2/17]

YSLib::ValueNode::ValueNode | ( | const Container & | con,
|  | allocator_type | a
| ) |  |

inline

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

## ◆ ValueNode() [3/17]

YSLib::ValueNode::ValueNode | ( | Container && | con | ) |

inline

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

## ◆ ValueNode() [4/17]

YSLib::ValueNode::ValueNode | ( | Container && | con,
|  | allocator_type | a
| ) |  |

inline

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

## ◆ ValueNode() [5/17]

template<typename _tString , typename... _tParams, yimpl(typename=enable_value_constructible_t< _tParams... >) >

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

inline

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

注解
  不使用容器。

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

## ◆ ValueNode() [6/17]

template<typename _tString , typename... _tParams, yimpl(typename=enable_value_constructible_t< _tParams... >) >

YSLib::ValueNode::ValueNode | ( | std::allocator_arg_t | ,
|  | allocator_type | a,
|  | NoContainerTag | ,
|  | _tString && | str,
|  | _tParams &&... | args
| ) |  |

inline

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

注解
  不使用容器。

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

## ◆ ValueNode() [7/17]

template<typename _tString , typename... _tParams, yimpl(typename=enable_value_constructible_t< _tParams... >) >

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

inline

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

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

## ◆ ValueNode() [8/17]

template<typename _tString , typename... _tParams, yimpl(typename=enable_value_constructible_t< _tParams... >) >

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

inline

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

## ◆ ValueNode() [9/17]

template<typename _tString , typename... _tParams, yimpl(typename=enable_value_constructible_t< _tParams... >) >

YSLib::ValueNode::ValueNode | ( | std::allocator_arg_t | ,
|  | allocator_type | a,
|  | const Container & | con,
|  | _tString && | str,
|  | _tParams &&... | args
| ) |  |

inline

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

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

## ◆ ValueNode() [10/17]

template<typename _tString , typename... _tParams, yimpl(typename=enable_value_constructible_t< _tParams... >) >

YSLib::ValueNode::ValueNode | ( | std::allocator_arg_t | ,
|  | allocator_type | a,
|  | Container && | con,
|  | _tString && | str,
|  | _tParams &&... | args
| ) |  |

inline

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

## ◆ ValueNode() [11/17]

template<typename _tIn >

YSLib::ValueNode::ValueNode | ( | const pair< _tIn, _tIn > & | pr,
|  | allocator_type | a = `{}`
| ) |  |

inline

构造：使用输入迭代器对和可选的分配器。

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

## ◆ ValueNode() [12/17]

template<typename _tIn , typename _tString >

YSLib::ValueNode::ValueNode | ( | const pair< _tIn, _tIn > & | pr,
|  | _tString && | str,
|  | allocator_type | a = `{}`
| ) |  |

inline

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

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

## ◆ ValueNode() [13/17]

template<typename... _tParams1>

YSLib::ValueNode::ValueNode | ( | tuple< _tParams1... > | args1,
|  | allocator_type | a = `{}`
| ) |  |

inline

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

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

## ◆ ValueNode() [14/17]

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

YSLib::ValueNode::ValueNode | ( | tuple< _tParams1... > | args1,
|  | tuple< _tParams2... > | args2,
|  | allocator_type | a = `{}`
| ) |  |

inline

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

## ◆ ValueNode() [15/17]

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

YSLib::ValueNode::ValueNode | ( | tuple< _tParams1... > | args1,
|  | tuple< _tParams2... > | args2,
|  | tuple< _tParams3... > | args3,
|  | allocator_type | a = `{}`
| ) |  |

inline

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

## ◆ ValueNode() [16/17]

YSLib::ValueNode::ValueNode | ( | const ValueNode & | nd | ) |

inline

复制构造：使用参数和参数指定的分配器。

自从
  build 879

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

## ◆ ValueNode() [17/17]

YSLib::ValueNode::ValueNode | ( | const ValueNode & | nd,
|  | allocator_type | a
| ) |  |

inline

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

## 成员函数说明

## ◆ container()

allocator_type a YSLib::ValueNode::container | ( | std::move(nd.container) | ,
|  | a |
| ) |  |

## ◆ CreateRecursively()

template<class _tCon , typename _fCallable , yimpl(typename=ystdex::enable_if_t< std::is_same< Container &, ystdex::remove_cvref_t< _tCon > & >::value >) >

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

inlinestatic

自从
  build 845

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

引用了 ystdex::mapped_set< _type, _fComp, _tTraits, _tAlloc >::emplace(), CHRLib::f(), ystdex::invoke() , 以及 NPL::tm.

函数调用图:

## ◆ CreateWith() [1/4]

template<typename _fCallable >

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

inline

自从
  build 834

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

引用了 CHRLib::f().

函数调用图:

## ◆ CreateWith() [2/4]

template<typename _fCallable >

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

inline

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

引用了 CHRLib::f().

函数调用图:

## ◆ CreateWith() [3/4]

template<typename _fCallable >

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

inline

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

引用了 CHRLib::f().

函数调用图:

## ◆ CreateWith() [4/4]

template<typename _fCallable >

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

inline

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

引用了 CHRLib::f().

函数调用图:

## ◆ DefBoolNeg()

YSLib::ValueNode::DefBoolNeg | ( | explicit | ,
|  | bool(Value)||!container.empty() |
| ) |  |

自从
  build 336
  build 673

## ◆ DefDeCtor()

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

inline

构造：使用分配器。

注解
  因为 Container 对实现无要求，不显式保证无异常抛出。

自从
  build 844

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

## ◆ DefDeMoveCtor()

YSLib::ValueNode::DefDeMoveCtor | ( | ValueNode |  | ) | &&

自从
  build 330

## ◆ emplace()

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

自从
  build 667

## ◆ emplace_hint()

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

自从
  build 598

## ◆ ImplRet() [1/11]

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

## ◆ ImplRet() [2/11]

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

交换。

前置条件
  分配器相等。

自从
  build 844

## ◆ ImplRet() [3/11]

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

自从
  build 680

## ◆ ImplRet() [4/11]

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

自从
  build 767

## ◆ ImplRet() [5/11]

const container container const ynothrow const YSLib::ValueNode::ImplRet | ( | GetContainer().end() |  | ) | -> decltype(container.erase(yforward(args)...)), auto, erase, container.erase(yforward(args)...)) YB_ATTR_nodiscard YB_PURE PDefH(allocator_type, get_allocator, ) const ynothrow ImplRet(container.get_allocator()) 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 第 859 行定义.

引用了 ystdex::insert_or_assign() , 以及 yforward.

函数调用图:

## ◆ ImplRet() [6/11]

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

## ◆ ImplRet() [7/11]

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

自从
  build 598

## ◆ ImplRet() [8/11]

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

## ◆ ImplRet() [9/11]

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

## ◆ ImplRet() [10/11]

const ValueNode const ValueNode& y ynothrow const ValueNode const string& str ynothrow YSLib::ValueNode::ImplRet | ( | x. | name = `=str` | ) |

自从
  build 730

引用了 x.

## ◆ ImplRet() [11/11]

const ValueNode const ValueNode& y ynothrow YSLib::ValueNode::ImplRet | ( | x. | name = `= y.name` | ) |

自从
  build 679

## ◆ insert_or_assign()

template<typename _tKey , class _tParam >

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

inline

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

引用了 ystdex::insert_or_assign_hint() , 以及 yforward.

函数调用图:

## ◆ MoveContent()

void YSLib::ValueNode::MoveContent | ( | ValueNode && | node | ) |

转移参数内容。

前置条件
  断言：参数不是 *this 。

自从
  build 844

转移参数指定的节点的内容到对象。转移后的节点内容是转移前的参数内容。 允许被转移的参数直接或间接地被容器引用。

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

引用了 YSLib::YAssert().

函数调用图:

## ◆ PDefH() [1/5]

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

pure virtual

自从
  build 754

## ◆ PDefH() [2/5]

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

自从
  build 767

## ◆ PDefH() [3/5]

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

自从
  build 460

## ◆ PDefH() [4/5]

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

自从
  build 696

## ◆ PDefH() [5/5]

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

交换容器。

前置条件
  断言：分配器相等。

警告
  不检查容器之间的所有权关系，可能引起循环引用。

自从
  build 844

## ◆ Place()

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

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

inline

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

自从
  build 781

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

参见
  ValueObject::Access

自从
  build 681

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

引用了 YSLib::args, YSLib::str , 以及 yforward.

## ◆ PlaceUnchecked()

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

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

inline

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

参见
  ValueObject::GetObject

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

引用了 YSLib::args, YSLib::str , 以及 yforward.

## ◆ PlaceValue()

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

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

inline

初始化的值对象引用。

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

引用了 YSLib::args, YSLib::NoContainer, YSLib::str, ystdex::try_emplace() , 以及 yforward.

函数调用图:

## ◆ SelectChildren()

template<typename _func >

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

inline

复制满足条件的子节点。

自从
  build 664

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

引用了 ystdex::cpp2017::begin(), ystdex::cpp2017::end(), CHRLib::f(), ystdex::for_each_if() , 以及 ystdex::mapped_set< _type, _fComp, _tTraits, _tAlloc >::insert().

函数调用图:

## ◆ SplitChildren()

template<typename _func >

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

inline

转移满足条件的子节点。

自从
  build 667

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

引用了 ystdex::cpp2017::begin(), platform::Deref(), ystdex::mapped_set< _type, _fComp, _tTraits, _tAlloc >::emplace(), ystdex::cpp2017::end(), CHRLib::f(), ystdex::mapped_set< _type, _fComp, _tTraits, _tAlloc >::find(), ystdex::for_each_if(), YSLib::NoContainer , 以及 Value.

函数调用图:

## ◆ swap()

Invalid allocator container YSLib::ValueNode::swap | ( | node. | container | ) | &

交换容器和值。

## ◆ ThrowIndexOutOfRange()

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

static

抛出索引越界异常。

异常

  std::out_of_range | 索引越界。

自从
  build 849

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

引用了 ystdex::sfmt().

被这些函数引用 YSLib::AccessNode().

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

## ◆ ThrowWrongNameFound()

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

static

抛出名称错误异常。

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

异常

  std::out_of_range | 名称错误。

自从
  build 849

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

引用了 name, platform::Nonnull() , 以及 ystdex::sfmt().

被这些函数引用 YSLib::AccessNode() , 以及 NPL::A1::SetupTraceDepth().

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

## ◆ try_emplace()

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

inline

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

引用了 YSLib::args, ystdex::try_emplace() , 以及 yforward.

函数调用图:

## ◆ try_emplace_hint()

template<typename _tKey , typename... _tParams>

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

inline

自从
  build 844

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

引用了 YSLib::args, ystdex::try_emplace_hint() , 以及 yforward.

函数调用图:

## ◆ Value()

allocator_type a YSLib::ValueNode::Value | ( | std::move(nd.Value) |  | ) |

inline

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

## ◆ yimpl() [1/2]

const_iterator i YSLib::ValueNode::yimpl | ( | typename | = `enable_if_key_t<_tKey>` | ) | const &

inline

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

引用了 ystdex::erase_first().

函数调用图:

## ◆ yimpl() [2/2]

template<typename _tKey , typename... _tParams>

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

自从
  build 681

## 友元及相关函数文档

## ◆ Access()

template<typename _type >

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

related

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

自从
  build 666

异常

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

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

## ◆ AccessChild()

template<typename _type , typename... _tParams>

YB_ATTR_nodiscard YB_PURE _type & AccessChild | ( | ValueNode & | node,
|  | _tParams &&... | args
| ) |  |

related

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

自从
  build 670

异常

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

注解
  使用 ADL AccessNode 。

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

引用了 YSLib::AccessNode(), YSLib::args , 以及 yforward.

函数调用图:

## 类成员变量说明

## ◆ begin

YSLib::ValueNode::begin

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

## ◆ const_iterator

YSLib::ValueNode::const_iterator

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

## ◆ container

Container YSLib::ValueNode::container {}

private

子节点容器。

自从
  build 667

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

## ◆ emplace

const YSLib::ValueNode::emplace

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

## ◆ emplace_hint

const container YSLib::ValueNode::emplace_hint

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

## ◆ empty

const container container YSLib::ValueNode::empty

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

## ◆ end

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

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

## ◆ found

Invalid allocator YSLib::ValueNode::found

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

## ◆ iterator

const container YSLib::ValueNode::iterator

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

## ◆ name

string YSLib::ValueNode::name {}

private

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

被这些函数引用 ThrowWrongNameFound().

## ◆ operator%=

ValueNode & YSLib::ValueNode::operator%=

复制赋值：使用参数的分配器构造的副本和交换操作。

自从
  build 768

前置条件
  被转移的参数不是被子节点容器直接或间接所有的其它节点。

警告
  违反前置条件的转移可能引起循环引用。

替换同名子节点。

返回
  自身引用。

替换同名子节点。

返回
  子节点引用。

自从
  build 792

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

## ◆ pair< iterator YPP_Comma bool >

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

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

## ◆ rbegin

YB_ATTR_nodiscard YB_PURE YSLib::ValueNode::rbegin

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

## ◆ Remove

YSLib::ValueNode::Remove

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

## ◆ rend

YB_ATTR_nodiscard YB_PURE const YSLib::ValueNode::rend

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

## ◆ size

YB_ATTR_nodiscard YB_PURE const const YSLib::ValueNode::size

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

## ◆ Value

ValueObject YSLib::ValueNode::Value {}

自从
  build 667

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

被这些函数引用 YSLib::GetValueOf(), YSLib::GetValuePtrOf(), NPL::ImplRet(), YReader::ShlReader::SaveBookmarks() , 以及 SplitChildren().

## ◆ x [1/2]

const ValueNode& YSLib::ValueNode::x

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

## ◆ x [2/2]

const ValueNode const ValueNode& y ynothrow const ValueNode& YSLib::ValueNode::x

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

## ◆ ynothrowv [1/2]

allocator_type a YSLib::ValueNode::ynothrowv

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

## ◆ ynothrowv [2/2]

YB_ATTR_nodiscard YB_PURE const const const ynothrow ValueNode& YSLib::ValueNode::ynothrowv

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

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

- ValueNode.h
- ValueNode.cpp