YSTest: Helper Functions

YSTest PreAlpha_b500_20140530 The YSLib Test Project

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

全部 类 命名空间 文件 函数 变量 类型定义 枚举 枚举值 友元 宏定义 组 页
模块 | 命名空间 | 函数
Helper Functions

助手功能。 更多...

Helper Functions 的协作图:

## 模块

| Get Unique Pointer
| 使用指定类型指针构造 std::unique_ptr 实例。
| Get Shared Pointer
| 使用指定类型指针构造 std::shared_ptr 实例。

## 命名空间

| YSLib::DS::UI
| Shell 快捷操作。

## 函数

template<typename _fHandler , typename _fCallable >
expanded_caller< _fHandler, decay_t< _fCallable > > | ystdex::make_expanded (_fCallable &&f)
| 构造接受冗余参数的可调用对象。 更多...
template<bool _bIsPositive, typename _tScalar >
_tScalar & | ystdex::xcrease (_tScalar &_x)
| 编译期选择自增/自减运算。 更多...
template<bool _bIsPositive, typename _tScalar1 , typename _tScalar2 >
_tScalar1 & | ystdex::delta_assign (_tScalar1 &_x, _tScalar2 &_y)
| 编译期选择加法/减法复合赋值运算。 更多...
template<typename _tIterator1 , typename _tIterator2 >
auto | ystdex::make_move_iterator_pair (_tIterator1 it1, _tIterator2 it2) -> decltype(std::make_pair(std::make_move_iterator(it1), std::make_move_iterator(it2)))
| 取转移迭代器对。 更多...
template<typename _tRange >
auto | ystdex::make_move_iterator_pair (_tRange &c) -> decltype(ystdex::make_move_iterator_pair(begin(c), end(c)))
| 取指定序列范围（包含序列容器及内建数组等）的转移迭代器对。 更多...
template<typename _type , typename... _tParams>
std::shared_ptr< _type > | ystdex::make_shared (_tParams &&...args)
| 使用 new 和指定参数构造指定类型的 std::shared_ptr 实例。 更多...
template<typename _type >
decay_t< _type > | ystdex::decay_copy (_type &&arg)
| 退化复制。 更多...
template<typename _type >
qualified_decay< _type >::type | ystdex::decay_forward (_type &&arg)
| 退化传递。 更多...
shared_ptr< Shell > | YSLib::FetchShellHandle () ynothrow
| 取当前应用程序线程空间中活动的 Shell 句柄。 更多...
bool | YSLib::Activate (const shared_ptr< Shell > &hShl)
| 激活 Shell 对象：控制权转移给此对象以维持单线程运行。 更多...
template<VisualEvent _vID>
| YSLib::UI::EventT (typename EventTypeMapping< _vID >::HandlerType)&FetchEvent(IWidget &wgt)
| 取部件事件。 更多...
| YSLib::UI::PDefH (void, RequestFocus, IWidget &wgt) ImplExpr(RequestFocusFrom(wgt
| 向部件容器释放获得焦点，成功后向自身发送 GotFocus 事件。 更多...
wgt | YSLib::UI::PDefH (void, ReleaseFocus, IWidget &wgt) ImplExpr(ReleaseFocusFrom(wgt
| 释放焦点，成功后向自身发送 LostFocus 事件。 更多...
pt pt Y | YSLib::UI::PDefH (IWidget *, FetchContainerPtr, const IWidget &wgt) ImplRet(wgt.GetView().ContainerPtr) inline PDefH(IWidget *
| 取部件的容器指针。 更多...
pt pt Y const IWidget &wgt | YSLib::UI::ImplRet (wgt.GetView().FocusingPtr) inline PDefH(const Point &
| 取部件位置。 更多...
pt pt Y const IWidget &wgt const IWidget &wgt | YSLib::UI::ImplRet (wgt.GetView().GetLocation()) inline PDefH(const Size &
| 取部件大小。 更多...
template<typename _tIterator , typename _fTransformer >
transformed_iterator< typename array_ref_decay< _tIterator > ::type, _fTransformer > | make_transform (_tIterator &&i, _fTransformer f)
| 创建转换迭代器。 更多...
template<typename _type >
size_t | ystdex::hash_combine_seq (size_t seed, const _type &val)
| 重复计算序列散列。 更多...
template<typename _type , typename... _tParams>
size_t | ystdex::hash_combine_seq (size_t seed, const _type &x, const _tParams &...args)
template<typename _type , typename... _tParams>
enable_if_t<!is_array< _type > ::value, std::unique_ptr < _type > > | ystdex::make_unique (_tParams &&...args)
| 使用 new 和指定参数构造指定类型的 std::unique_ptr 实例。 更多...
template<typename _type , typename... _tParams>
enable_if_t< is_array< _type > ::value &&extent< _type > ::value==0, std::unique_ptr < _type > > | ystdex::make_unique (size_t size)
template<typename _type , typename... _tParams>
enable_if_t< extent< _type > ::value!=0, void > | ystdex::make_unique (_tParams &&...)=delete
template<typename _type , size_t _vN>
size_t | ystdex::arrlen (_type(&)[_vN])
| 计算指定数组类型对象的长度。 更多...
template<typename _type , size_t _vN>
size_t | ystdex::arrlen (_type(&&)[_vN])
template<class _type , class _tHandle >
_type & | YSLib::HandleToReference (_tHandle h) ythrow(std
| 句柄转换：对象引用。 更多...
template<class _tShell >
_tShell & | YSLib::FetchShell ()
| 取指定 Shell 句柄对应的 Shell 引用 。 更多...
template<class _tShl >
shared_ptr< Shell > | YSLib::FetchStored ()
| 取全局 Shell 句柄。 更多...
template<class _tShl >
void | YSLib::ReleaseStored ()
| 释放全局 Shell 。 更多...
bool | YSLib::IsNowShell (const shared_ptr< Shell > &hShl)
| 判断句柄指定的 Shell 是否为当前线程空间中运行的 Shell 。 更多...
errno_t | YSLib::NowShellTo (const shared_ptr< Shell > &hShl)
| 向句柄指定的 Shell 对象转移线程控制权。 更多...
template<class _tShl >
errno_t | YSLib::NowShellToNew ()
| 向新建 Shell 对象转移控制权。 更多...
template<class _tShl >
errno_t | YSLib::NowShellToStored ()
| 向全局 Shell 管理器的对象转移控制权。 更多...
void | YSLib::SetShellTo (const shared_ptr< Shell > &hShl, Messaging::Priority prior=Messaging::NormalPriority)
| 通过主消息队列向指定 Shell 对象转移控制权。 更多...
template<class _tShl >
void | YSLib::SetShellToNew ()
| 通过主消息队列向新建 Shell 对象转移控制权。 更多...
template<class _tShl >
void | YSLib::SetShellToStored ()
| 通过主消息队列向全局 Shell 管理器内的对象转移控制权。 更多...
template<class _tShl >
void | YSLib::CallStoredAtOnce ()
| 封装向全局 Shell 管理器内的对象转移控制权。 更多...
template<class _tShl >
void | YSLib::CallStored ()
| 封装通过消息队列向全局 Shell 管理器内的对象转移控制权。 更多...
void | YSLib::ResetDesktop (Desktop &dsk, Devices::Screen &scr)
| 复位桌面。 更多...
YF_API void | YSLib::RemoveGlobalTasks ()
| 从全局消息队列中移除所有后台消息。 更多...
yconstexpr const char * | YSLib::DefaultTimeFormat ("%04u-%02u-%02u %02u:%02u:%02u")
| 默认时间格式字符串。 更多...
YF_API const char * | YSLib::TranslateTime (const std::tm &, const char *=DefaultTimeFormat)
| 格式化时间字符串。 更多...
YF_API const char * | YSLib::TranslateTime (const std::time_t &, const char *=DefaultTimeFormat) ythrow(GeneralEvent)
template<typename _tIn >
void | YSLib::UI::Styles::AddHandlers (HandlerTable &table, std::type_index idx, _tIn first, _tIn last)
| 向样式处理器表添加指定类型的处理器。 更多...

## 详细描述

助手功能。

自从
  build 243

仅帮助简化编码形式或确定接口，并不包含编译期之后逻辑功能实现的代码设施。

## 函数说明

bool YSLib::Activate | ( | const shared_ptr< Shell > & | hShl | ) |

inline

激活 Shell 对象：控制权转移给此对象以维持单线程运行。

前置条件
  断言： `bool(hShl)` 。

警告
  不保证线程安全性。

在文件 yapp.h 第 164 行定义.

参考 YSLib::FetchAppInstance(), YSLib::Application::Switch() , 以及 YAssert.

参考自 YSLib::Execute(), YSLib::NowShellTo() , 以及 YReader::ShlTextReader::StartAutoScroll().

函数调用图:

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

void YSLib::UI::Styles::AddHandlers | ( | HandlerTable & | table,
|  | std::type_index | idx,
|  | _tIn | first,
|  | _tIn | last
| ) |  |

向样式处理器表添加指定类型的处理器。

注解
  被添加的值需能表示为 StyleItem 和 Handler 的有序对， 使用 ADL `get<0U>` 和 `get<1U>` 实现访问其中的成员。

自从
  build 469

在文件 ystyle.h 第 275 行定义.

参考 ystdex::iterator_transformation::first().

参考自 YSLib::UI::Styles::AddHandlers() , 以及 YSLib::UI::Styles::PDefH().

函数调用图:

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

size_t ystdex::arrlen | ( | _type(&) | [_vN] | ) |

inline

计算指定数组类型对象的长度。

自从
  build 291

在文件 utility.hpp 第 196 行定义.

参考自 YReader::FetchEncodingString(), platform_ex::Windows::HostWindow::HostWindow() , 以及 YReader::ShlTextReader::SettingSession::SettingSession().

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

size_t ystdex::arrlen | ( | _type(&&) | [_vN] | ) |

inline

在文件 utility.hpp 第 202 行定义.

template<class _tShl >

void YSLib::CallStored | ( |  | ) |

inline

封装通过消息队列向全局 Shell 管理器内的对象转移控制权。

自从
  早于 build 132

在文件 ShellHelper.h 第 266 行定义.

template<class _tShl >

void YSLib::CallStoredAtOnce | ( |  | ) |

inline

封装向全局 Shell 管理器内的对象转移控制权。

自从
  早于 build 132

在文件 ShellHelper.h 第 255 行定义.

template<typename _type >

decay_t<_type> ystdex::decay_copy | ( | _type && | arg | ) |

退化复制。

参见
  ISO C++11 30.2.6[thread.decaycopy] 。
  http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3255.html 。

自从
  build 439

在文件 utility.hpp 第 168 行定义.

参考自 ystdex::make_array(), YSLib::ValueNode::MakeNode() , 以及 YSLib::UnpackToNode().

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

qualified_decay<_type>::type ystdex::decay_forward | ( | _type && | arg | ) |

退化传递。

注解
  类似 decay_copy ，但仅对函数或数组及其引用类型退化，不复制其它值。

自从
  build 383

在文件 utility.hpp 第 182 行定义.

yconstexpr const char* YSLib::DefaultTimeFormat | ( | "%04u-%02u-%02u %02u:%02u:%02u" |  | ) |

默认时间格式字符串。

自从
  build 307

template<bool _bIsPositive, typename _tScalar1 , typename _tScalar2 >

_tScalar1& ystdex::delta_assign | ( | _tScalar1 & | _x,
|  | _tScalar2 & | _y
| ) |  |

inline

编译期选择加法/减法复合赋值运算。

自从
  build 284

在文件 functional.hpp 第 690 行定义.

template<VisualEvent _vID>

YSLib::UI::EventT | ( | typename EventTypeMapping< _vID >::HandlerType |  | ) |

inline

取部件事件。

取控件事件。

模板参数

  _vID | 指定事件类型。

参数

  wgt | 指定部件。

异常

  BadEvent | 异常中立：由控制器抛出。

注解
  需要确保 EventTypeMapping 中有对应的 EventType ，否则无法匹配此函数模板。
  若控件事件不存在则自动添加空事件。

自从
  build 237

注解
  需要确保 EventTypeMapping 中有对应的 EventType ，否则无法匹配此函数模板。
  若控件事件不存在则自动添加空事件。

模板参数

  _vID | 指定事件类型。

参数

  controller | 指定部件的控制器。

异常

  BadEvent | 异常中立：由控制器抛出。

注解
  需要确保 EventTypeMapping 中有对应的 EventType ，否则无法匹配此函数模板。
  若控件事件不存在则自动添加空事件。

自从
  build 195

在文件 ycontrol.h 第 131 行定义.

参考自 YSLib::UI::DoEvent() , 以及 YSLib::UI::NewEvent().

这是这个函数的调用关系图:
template<class _tShell >

_tShell& YSLib::FetchShell | ( |  | ) |

inline

取指定 Shell 句柄对应的 Shell 引用 。

自从
  build 205

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

参考 YSLib::FetchShellHandle() , 以及 YAssert.

函数调用图:

shared_ptr<Shell> YSLib::FetchShellHandle | ( |  | ) |

inline

取当前应用程序线程空间中活动的 Shell 句柄。

警告
  应用程序实例初始化前不保证线程安全性。

在文件 yapp.h 第 152 行定义.

参考 YSLib::FetchAppInstance().

参考自 YSLib::FetchShell().

函数调用图:

这是这个函数的调用关系图:
template<class _tShl >

shared_ptr<Shell> YSLib::FetchStored | ( |  | ) |

inline

取全局 Shell 句柄。

自从
  build 195

在文件 ShellHelper.h 第 155 行定义.

template<class _type , class _tHandle >

_type& YSLib::HandleToReference | ( | _tHandle | h | ) |

inline

句柄转换：对象引用。

自从
  早于 build 132

在文件 ShellHelper.h 第 123 行定义.

参考 ystdex::get_raw() , 以及 YB_LIKELY.

函数调用图:
template<typename _type >

size_t ystdex::hash_combine_seq | ( | size_t | seed,
|  | const _type & | val
| ) |  |

inline

重复计算序列散列。

参见
  hash_combine

在文件 functional.hpp 第 487 行定义.

参考 ystdex::hash_combine().

参考自 ystdex::details::combined_hash_tuple< _bNoExcept, _type, variadic_sequence< _vSeq...> >::call() , 以及 ystdex::hash_combine_seq().

函数调用图:

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

size_t ystdex::hash_combine_seq | ( | size_t | seed,
|  | const _type & | x,
|  | const _tParams &... | args
| ) |  |

inline

在文件 functional.hpp 第 493 行定义.

参考 ystdex::hash_combine_seq().

函数调用图:

pt pt Y const IWidget& wgt YSLib::UI::ImplRet | ( | wgt.GetView(). | FocusingPtr | ) | const

取部件位置。

自从
  build 239

pt pt Y const IWidget& wgt const IWidget& wgt YSLib::UI::ImplRet | ( | wgt. | GetView).GetLocation( | ) | const

取部件大小。

自从
  build 259

bool YSLib::IsNowShell | ( | const shared_ptr< Shell > & | hShl | ) |

inline

判断句柄指定的 Shell 是否为当前线程空间中运行的 Shell 。

自从
  早于 build 132

在文件 ShellHelper.h 第 177 行定义.

参考 YSLib::FetchAppInstance().

函数调用图:
template<typename _fHandler , typename _fCallable >

expanded_caller<_fHandler, decay_t<_fCallable> > ystdex::make_expanded | ( | _fCallable && | f | ) |

inline

构造接受冗余参数的可调用对象。

自从
  build 448

在文件 functional.hpp 第 412 行定义.

参考 YSLib::UI::f , 以及 yforward.

template<typename _tIterator1 , typename _tIterator2 >

auto ystdex::make_move_iterator_pair | ( | _tIterator1 | it1,
|  | _tIterator2 | it2
| ) |  | -> decltype( std::make_pair(std::make_move_iterator(it1), std::make_move_iterator(it2)))

inline

取转移迭代器对。

自从
  build 337

在文件 iterator.hpp 第 146 行定义.

参考自 ystdex::make_move_iterator_pair().

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

auto ystdex::make_move_iterator_pair | ( | _tRange & | c | ) | -> decltype(ystdex::make_move_iterator_pair(begin(c), end(c)))

inline

取指定序列范围（包含序列容器及内建数组等）的转移迭代器对。

注解
  使用 ADL `begin` 和 `end` 指定范围迭代器。

自从
  build 337

在文件 iterator.hpp 第 160 行定义.

参考 CHRLib::c , 以及 ystdex::make_move_iterator_pair().

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

std::shared_ptr<_type> ystdex::make_shared | ( | _tParams &&... | args | ) |

inline

使用 new 和指定参数构造指定类型的 std::shared_ptr 实例。

模板参数

  _type | 被指向类型。

注解
  不同于 std::make_shared ，不依赖于具体 allocator 和 deleter 类型信息。
  std::make_shared 的具体实现一般会导致目标文件增大。

自从
  build 298

在文件 memory.hpp 第 239 行定义.

参考 yforward.

template<typename _tIterator , typename _fTransformer >

transformed_iterator< typename array_ref_decay< _tIterator >::type, _fTransformer > make_transform | ( | _tIterator && | i,
|  | _fTransformer | f
| ) |  |

related

创建转换迭代器。

注解
  使用 ADL 。

自从
  build 494

在文件 iterator.hpp 第 742 行定义.

参考 YSLib::UI::f , 以及 yforward.

template<typename _type , typename... _tParams>

enable_if_t<!is_array<_type>::value, std::unique_ptr<_type> > ystdex::make_unique | ( | _tParams &&... | args | ) |

inline

使用 new 和指定参数构造指定类型的 std::unique_ptr 实例。

模板参数

  _type | 被指向类型。

参见
  http://herbsutter.com/gotw/_102/ 。
  ISO WG21/N3797 20.7.2[memory.syn] 。

自从
  build 476

在文件 memory.hpp 第 213 行定义.

参考 yforward.

参考自 CHRLib::strdup() , 以及 CHRLib::ucsdup().

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

enable_if_t<is_array<_type>::value && extent<_type>::value == 0, std::unique_ptr<_type> > ystdex::make_unique | ( | size_t | size | ) |

inline

在文件 memory.hpp 第 220 行定义.

template<typename _type , typename... _tParams>

enable_if_t<extent<_type>::value != 0, void> ystdex::make_unique | ( | _tParams && | ... | ) |

delete

errno_t YSLib::NowShellTo | ( | const shared_ptr< Shell > & | hShl | ) |

inline

向句柄指定的 Shell 对象转移线程控制权。

自从
  早于 build 132

在文件 ShellHelper.h 第 187 行定义.

参考 YSLib::Activate().

参考自 YReader::ShlReader::Exit(), YSLib::NowShellToNew() , 以及 YSLib::NowShellToStored().

函数调用图:

这是这个函数的调用关系图:
template<class _tShl >

errno_t YSLib::NowShellToNew | ( |  | ) |

inline

向新建 Shell 对象转移控制权。

自从
  早于 build 132

在文件 ShellHelper.h 第 198 行定义.

参考 YSLib::NowShellTo().

函数调用图:
template<class _tShl >

errno_t YSLib::NowShellToStored | ( |  | ) |

inline

向全局 Shell 管理器的对象转移控制权。

自从
  早于 build 132

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

参考 YSLib::NowShellTo().

函数调用图:

YSLib::UI::PDefH | ( | void | ,
|  | RequestFocus | ,
|  | IWidget & | wgt
| ) |  |

inline

向部件容器释放获得焦点，成功后向自身发送 GotFocus 事件。

wgt YSLib::UI::PDefH | ( | void | ,
|  | ReleaseFocus | ,
|  | IWidget & | wgt
| ) |  |

inline

释放焦点，成功后向自身发送 LostFocus 事件。

pt pt Y YSLib::UI::PDefH | ( | IWidget * | ,
|  | FetchContainerPtr | ,
|  | const IWidget & | wgt
| ) |  |

inline

取部件的容器指针。

注解
  使用此函数确保返回值传递的值语义。

自从
  build 225

取焦点对象指针。

返回
  若为保存了子部件中的焦点对象的容器则返回指针，否则返回 `nullptr` 。

自从
  build 473

template<class _tShl >

void YSLib::ReleaseStored | ( |  | ) |

inline

释放全局 Shell 。

自从
  build 195

在文件 ShellHelper.h 第 166 行定义.

void YSLib::RemoveGlobalTasks | ( |  | ) |

从全局消息队列中移除所有后台消息。

自从
  build 320

在文件 ShellHelper.cpp 第 54 行定义.

参考 YSLib::FetchGlobalInstance().

函数调用图:

void YSLib::ResetDesktop | ( | Desktop & | dsk,
|  | Devices::Screen & | scr
| ) |  |

inline

复位桌面。

自从
  build 396

销毁每个桌面并在原存储位置创建新的对象。

在文件 ShellHelper.h 第 279 行定义.

参考 YSLib::UI::Styles::Desktop.

参考自 YSLib::DS::ResetDSDesktops().

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

void YSLib::SetShellTo | ( | const shared_ptr< Shell > & | hShl,
|  | Messaging::Priority | prior = `Messaging::NormalPriority`
| ) |  |

inline

通过主消息队列向指定 Shell 对象转移控制权。

自从
  早于 build 132

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

参考自 YSLib::SetShellToNew() , 以及 YSLib::SetShellToStored().

这是这个函数的调用关系图:
template<class _tShl >

void YSLib::SetShellToNew | ( |  | ) |

inline

通过主消息队列向新建 Shell 对象转移控制权。

自从
  早于 build 132

在文件 ShellHelper.h 第 233 行定义.

参考 YSLib::SetShellTo().

函数调用图:
template<class _tShl >

void YSLib::SetShellToStored | ( |  | ) |

inline

通过主消息队列向全局 Shell 管理器内的对象转移控制权。

自从
  早于 build 132

在文件 ShellHelper.h 第 244 行定义.

参考 YSLib::SetShellTo().

函数调用图:

const char * YSLib::TranslateTime | ( | const std::tm & | tm,
|  | const char * | format = `DefaultTimeFormat`
| ) |  |

格式化时间字符串。

自从
  build 307

在文件 ShellHelper.cpp 第 84 行定义.

参考自 YSLib::TranslateTime().

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

const char * YSLib::TranslateTime | ( | const std::time_t & | t,
|  | const char * | format = `DefaultTimeFormat`
| ) |  |

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

参考 YSLib::Drawing::format(), YSLib::TranslateTime() , 以及 YB_UNLIKELY.

函数调用图:
template<bool _bIsPositive, typename _tScalar >

_tScalar& ystdex::xcrease | ( | _tScalar & | _x | ) |

inline

编译期选择自增/自减运算。

在文件 functional.hpp 第 678 行定义.