YSTest: YSLib::ValueObject类 参考

YSTest PreAlpha_b700_20160611 The YSLib Test Project

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

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

Public 成员函数 | Public 属性 | 相关函数 | 所有成员列表
YSLib::ValueObject类 参考

值类型对象类。 更多...

`#include <YObject.h>`

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

## Public 成员函数

| DefDeCtor (ValueObject) template< typename _type
| 无参数构造。 更多...
| yimpl (typename=ystdex::exclude_self_t< ValueObject, _type >)> ValueObject(_type &&obj)
template<typename _type , typename... _tParams>
| ValueObject (InPlaceTag< _type >, _tParams &&...args)
| 构造：使用对象初始化参数。 更多...
template<typename _type >
| ValueObject (_type *p, PointerTag)
| 构造：使用对象指针。 更多...
template<typename _type >
| ValueObject (unique_ptr< _type > &&p, PointerTag)
| 构造：使用对象 unique_ptr 指针。 更多...
| DefDeCopyCtor (ValueObject) DefDeMoveCtor(ValueObject) DefDeDtor(ValueObject) DefDeCopyAssignment(ValueObject) DefDeMoveAssignment(ValueObject) DefBoolNeg(explicit
| 复制构造：默认实现。 更多...
content | get_holder ()) YF_API friend bool operator
| 比较相等：参数都为空或都非空且存储的对象相等。 更多...
| DefGetter (const ynothrow, const type_info &, Type, content.type()) template< typename _type > inline _type &Access()

访问指定类型对象。

异常

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

更多...

template<typename _type >
const _type & | Access () const
| PDefH (void, Clear,) ynothrow ImplExpr(content.clear()) PDefH(void
| 清除。 更多...
template<typename _type >
_type & | GetObject () ynothrowv
| 取指定类型的对象。 更多...
template<typename _type >
const _type & | GetObject () const ynothrowv
template<typename _type >
observer_ptr< _type > | AccessPtr () ynothrow
| 访问指定类型对象指针。 更多...
template<typename _type >
observer_ptr< const _type > | AccessPtr () const ynothrow
template<typename _type , typename... _tParams>
void | Emplace (_tParams &&...args)
template<typename _type >
void | Emplace (_type *p, PointerTag)
template<typename _type , typename... _tParams>
_type & | EmplaceIfEmpty (_tParams &&...args)

## Public 属性

ystdex::any | content
| swap

## 相关函数

(请注意: 这些不是成员函数.)
#define | DefSwap(_q, _t)
| 依赖项模板。 更多...

## 详细描述

值类型对象类。

前置条件
  满足 CopyConstructible 。

警告
  非虚析构。
  若修改子节点的 name 则行为未定义。

自从
  build 217

具有值语义和深复制语义的对象。

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

## 构造及析构函数说明

template<typename _type , typename... _tParams>

YSLib::ValueObject::ValueObject | ( | InPlaceTag< _type > | ,
|  | _tParams &&... | args
| ) |  |

inline

构造：使用对象初始化参数。

模板参数

  _type | 目标类型。
  _tParams | 目标类型初始化参数类型。

前置条件
  _type 可被 _tParams 参数初始化。

自从
  build 678

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

template<typename _type >

YSLib::ValueObject::ValueObject | ( | _type * | p,
|  | PointerTag |
| ) |  |

inline

构造：使用对象指针。

注解
  得到包含指针指向的指定对象的实例，并获得所有权。
  使用 PointerHolder 管理资源（默认使用 delete 释放资源）。

自从
  build 340

在文件 YObject.h 第 314 行定义.

template<typename _type >

YSLib::ValueObject::ValueObject | ( | unique_ptr< _type > && | p,
|  | PointerTag |
| ) |  |

inline

构造：使用对象 unique_ptr 指针。

注解
  得到包含指针指向的指定对象的实例，并获得所有权。
  使用 PointerHolder 管理资源（默认使用 delete 释放资源）。

自从
  build 450

在文件 YObject.h 第 325 行定义.

参考 platform::p.

## 成员函数说明

template<typename _type >

const _type& YSLib::ValueObject::Access | ( |  | ) | const

inline

在文件 YObject.h 第 400 行定义.

参考自 YSLib::ValueNode::Access().

这是这个函数的调用关系图:
template<typename _type >

observer_ptr<_type> YSLib::ValueObject::AccessPtr | ( |  | ) |

inline

访问指定类型对象指针。

自从
  build 670

在文件 YObject.h 第 413 行定义.

参考 ystdex::make_observer().

函数调用图:
template<typename _type >

observer_ptr<const _type> YSLib::ValueObject::AccessPtr | ( |  | ) | const

inline

在文件 YObject.h 第 419 行定义.

参考 ystdex::make_observer().

函数调用图:

YSLib::ValueObject::DefDeCopyCtor | ( | ValueObject |  | ) |

复制构造：默认实现。

自从
  build 332

转移构造：默认实现。

自从
  build 332

析构：默认实现。

自从
  build 332
  build 332

判断是否为空或非空。

自从
  build 320

YSLib::ValueObject::DefDeCtor | ( | ValueObject |  | ) |

无参数构造。

注解
  得到空实例。

自从
  build 296

构造：使用对象引用。

前置条件
  obj 可作为转移构造参数。

自从
  build 448

YSLib::ValueObject::DefGetter | ( | const ynothrow | ,
|  | const type_info & | ,
|  | Type | ,
|  | content. | type()
| ) |  |

inline

访问指定类型对象。

异常

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

自从
  build 683
  build 334

在文件 YObject.h 第 384 行定义.

template<typename _type , typename... _tParams>

void YSLib::ValueObject::Emplace | ( | _tParams &&... | args | ) |

inline

自从
  build 677

在文件 YObject.h 第 429 行定义.

参考 CHRLib::args, ystdex::details::any_emplace< _tAny >::emplace(), ystdex::any_ops::use_holder , 以及 yforward.

函数调用图:
template<typename _type >

void YSLib::ValueObject::Emplace | ( | _type * | p,
|  | PointerTag |
| ) |  |

inline

在文件 YObject.h 第 438 行定义.

参考 ystdex::details::any_emplace< _tAny >::emplace() , 以及 ystdex::any_ops::use_holder.

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

_type& YSLib::ValueObject::EmplaceIfEmpty | ( | _tParams &&... | args | ) |

inline

在文件 YObject.h 第 447 行定义.

参考 CHRLib::args , 以及 yforward.

content YSLib::ValueObject::get_holder | ( |  | ) |

比较相等：参数都为空或都非空且存储的对象相等。

自从
  build 673

template<typename _type >

_type& YSLib::ValueObject::GetObject | ( |  | ) |

inline

取指定类型的对象。

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

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

参考 platform::Deref().

函数调用图:
template<typename _type >

const _type& YSLib::ValueObject::GetObject | ( |  | ) | const

inline

在文件 YObject.h 第 377 行定义.

参考 platform::Deref().

函数调用图:

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

清除。

后置条件
  `*this == ValueObject()` 。

自从
  build 296

交换。

自从
  build 409

YSLib::ValueObject::yimpl | ( | typename | = `ystdex::exclude_self_t<ValueObject, _type>` | ) |

inline

在文件 YObject.h 第 290 行定义.

## 友元及相关函数文档

#define DefSwap | ( |  | ynothrow,
|  |  | ValueObject
| ) |  |

related

值:
PDefH(void, swap, _t& _x, _t& _y) _q \
ImplExpr(_x.swap(_y))

依赖项模板。

自从
  build 409

模板参数

  _type | 被依赖的对象类型，需能被无参数构造。
  _tOwnerPointer | 依赖所有者指针类型。

警告
  依赖所有者指针需要实现所有权语义， 否则出现无法释放资源引起内存泄漏或其它非预期行为。

自从
  build 195

待办事项:
  线程模型及安全性。

基于被依赖的默认对象，可通过写时复制策略创建新对象；可能为空。

## 类成员变量说明

ystdex::any YSLib::ValueObject::content

自从
  build 332

在文件 YObject.h 第 276 行定义.

YSLib::ValueObject::swap

在文件 YObject.h 第 470 行定义.

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

- YObject.h