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.h164 行定义.

参考 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.h275 行定义.

参考 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.hpp196 行定义.

参考自 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.hpp202 行定义.

template<class _tShl >
void YSLib::CallStored ( )
inline

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

自从
早于 build 132

在文件 ShellHelper.h266 行定义.

template<class _tShl >
void YSLib::CallStoredAtOnce ( )
inline

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

自从
早于 build 132

在文件 ShellHelper.h255 行定义.

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.hpp168 行定义.

参考自 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.hpp182 行定义.

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.hpp690 行定义.

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.h131 行定义.

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

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

template<class _tShell >
_tShell& YSLib::FetchShell ( )
inline

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

自从
build 205

在文件 ShellHelper.h138 行定义.

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

函数调用图:

shared_ptr<Shell> YSLib::FetchShellHandle ( )
inline

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

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

在文件 yapp.h152 行定义.

参考 YSLib::FetchAppInstance().

参考自 YSLib::FetchShell().

函数调用图:

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

template<class _tShl >
shared_ptr<Shell> YSLib::FetchStored ( )
inline

取全局 Shell 句柄。

自从
build 195

在文件 ShellHelper.h155 行定义.

template<class _type , class _tHandle >
_type& YSLib::HandleToReference ( _tHandle  h)
inline

句柄转换:对象引用。

自从
早于 build 132

在文件 ShellHelper.h123 行定义.

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

函数调用图:

template<typename _type >
size_t ystdex::hash_combine_seq ( size_t  seed,
const _type &  val 
)
inline

重复计算序列散列。

参见
hash_combine

在文件 functional.hpp487 行定义.

参考 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.hpp493 行定义.

参考 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.h177 行定义.

参考 YSLib::FetchAppInstance().

函数调用图:

template<typename _fHandler , typename _fCallable >
expanded_caller<_fHandler, decay_t<_fCallable> > ystdex::make_expanded ( _fCallable &&  f)
inline

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

自从
build 448

在文件 functional.hpp412 行定义.

参考 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.hpp146 行定义.

参考自 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 beginend 指定范围迭代器。
自从
build 337

在文件 iterator.hpp160 行定义.

参考 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.hpp239 行定义.

参考 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.hpp742 行定义.

参考 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.hpp213 行定义.

参考 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.hpp220 行定义.

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.h187 行定义.

参考 YSLib::Activate().

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

函数调用图:

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

template<class _tShl >
errno_t YSLib::NowShellToNew ( )
inline

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

自从
早于 build 132

在文件 ShellHelper.h198 行定义.

参考 YSLib::NowShellTo().

函数调用图:

template<class _tShl >
errno_t YSLib::NowShellToStored ( )
inline

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

自从
早于 build 132

在文件 ShellHelper.h209 行定义.

参考 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.h166 行定义.

void YSLib::RemoveGlobalTasks ( )

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

自从
build 320

在文件 ShellHelper.cpp54 行定义.

参考 YSLib::FetchGlobalInstance().

函数调用图:

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

复位桌面。

自从
build 396

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

在文件 ShellHelper.h279 行定义.

参考 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.h219 行定义.

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

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

template<class _tShl >
void YSLib::SetShellToNew ( )
inline

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

自从
早于 build 132

在文件 ShellHelper.h233 行定义.

参考 YSLib::SetShellTo().

函数调用图:

template<class _tShl >
void YSLib::SetShellToStored ( )
inline

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

自从
早于 build 132

在文件 ShellHelper.h244 行定义.

参考 YSLib::SetShellTo().

函数调用图:

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

格式化时间字符串。

自从
build 307

在文件 ShellHelper.cpp84 行定义.

参考自 YSLib::TranslateTime().

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

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

在文件 ShellHelper.cpp94 行定义.

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

函数调用图:

template<bool _bIsPositive, typename _tScalar >
_tScalar& ystdex::xcrease ( _tScalar &  _x)
inline

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

在文件 functional.hpp678 行定义.