YSTest: YCommon.h 文件参考

YSTest PreAlpha_b900_20201012 The YSLib Test Project

类 | 命名空间 | 宏定义 | 类型定义 | 枚举 | 函数
YCommon.h 文件参考
YFramework Library » YCommonLib

平台相关的公共组件无关函数与宏定义集合。 更多...

`#include "YModules.h"`
`#include <YCLib/Platform.h>`
`#include <ystdex/functional.hpp>`
`#include <ystdex/cassert.h>`
`#include <cerrno>`
`#include <ystdex/exception.h>`
`#include <cstring>`
`#include <ystdex/cwctype.h>`
`#include <ystdex/cstring.h>`
`#include <YBaseMacro.h>`
`#include <exception>`
YCommon.h 的引用(Include)关系图:
此图展示该文件直接或间接的被哪些文件引用了:

浏览源代码.

## 类

struct | platform::IDTagBase
| 平台标识的公共标记类型：指定任意平台。 更多...
struct | platform::HostedIDTagBase
| 宿主平台标识的公共标记类型：指定任意宿主平台。 更多...
struct | platform::IDTag< _vN >
| 平台标识的整数标记类型。 更多...
struct | platform::IDTag< YF_Platform_Win32 >
struct | platform::IDTag< YF_Platform_Win64 >
struct | platform::IDTag< YF_Platform_MinGW32 >
struct | platform::IDTag< YF_Platform_MinGW64 >
struct | platform::IDTag< YF_Platform_Linux >
struct | platform::IDTag< YF_Platform_Linux_x86 >
struct | platform::IDTag< YF_Platform_Linux_x64 >
struct | platform::IDTag< YF_Platform_Android >
struct | platform::IDTag< YF_Platform_Android_ARM >
struct | platform::IDTagSet< _vN >
| 取平台标识的整数标记集合类型。 更多...

## 命名空间

| platform
| 默认平台命名空间。
| platform::Descriptions
| 平台描述空间。
| platform_ex
| 平台扩展命名空间。

## 宏定义

#define | YCL_IDTag_Spec(_n, _base)
| 指定特定基类类型的 IDTag 特化。 更多...
#define | YCL_IDTag_SpecHost(_n) YCL_IDTag_Spec(_n, HostedIDTagBase)
| 指定宿主平台的 IDTag 特化。 更多...
#define | YCL_IDTag_SpecOnBase(_n, _b) YCL_IDTag_Spec(_n, IDTag<YF_Platform_##_b>)
| 指定基于特定平台的 IDTag 特化。 更多...
#define | YCL_Tag_constfn inline
| 包含平台标签的常量表达式函数。 更多...
#define | YCL_DefPlatformFwdTmpl(_n, _fn) DefFwdTmplAuto(_n, _fn(platform::IDTag<YF_Platform>(), yforward(args)...))
| 定义用于平台模拟的传递模板。 更多...
#define | YCL_CheckDecl_t(_fn) CheckDecl##_fn##_t
| 声明检查存在合式调用的辅助宏。 更多...
#define | YCL_DeclCheck_t(_fn, _call)
#define | YCL_Raise_SysE(_t, _msg, _sig)
| 按错误值和指定参数抛出第一参数指定类型的对象。 更多...
#define | YCL_RaiseZ_SysE(_t, _expr, _msg, _sig)
#define | YCL_Trace_SysE(_lv, _fn, _sig)
| 跟踪 errno 取得的调用状态结果。 更多...
#define | YCL_WrapCall_CAPI(_t, _fn, ...)
| 调用系统 C API 或其它可用 errno 取得调用状态的例程。 更多...
#define | YCL_Call_CAPI(_t, _fn, _sig, ...) YCL_WrapCall_CAPI(_t, _fn, __VA_ARGS__)(_sig)
#define | YCL_CallF_CAPI(_t, _fn, ...) YCL_Call_CAPI(_t, _fn, yfsig, __VA_ARGS__)
#define | YCL_TraceWrapCall_CAPI(_fn, ...)
#define | YCL_TraceCall_CAPI(_fn, _sig, ...) YCL_TraceWrapCall_CAPI(_fn, __VA_ARGS__)(_sig)
#define | YCL_TraceCallF_CAPI(_fn, ...) YCL_TraceCall_CAPI(_fn, yfsig, __VA_ARGS__)

## 类型定义

using | platform::ID = std::uintmax_t
| `YF_Platform_*` 宏替换值的公共类型。 更多...
template<ID _vN>
using | platform::MetaID = std::integral_constant< ID, _vN >
| `YF_Platform_*` 宏替换值的对应的元类型。 更多...

## 枚举

enum

platform::Descriptions::RecordLevel : std::uint8_t {
platform::Descriptions::Emergent = 0x00, platform::Descriptions::Alert = 0x20, platform::Descriptions::Critical = 0x40, platform::Descriptions::Err = 0x60,
platform::Descriptions::Warning = 0x80, platform::Descriptions::Notice = 0xA0, platform::Descriptions::Informative = 0xC0, platform::Descriptions::Debug = 0xE0
}

| 记录等级。 更多...
enum | platform::SystemOption { platform::SystemOption::PageSize, platform::SystemOption::MaxSemaphoreNumber, platform::SystemOption::MaxSemaphoreValue, platform::SystemOption::MaxSymlinkLoop }
| 系统配置选项。 更多...

## 函数

YB_NORETURN YF_API void | platform::terminate () ynothrow
| 终止函数。 更多...
YB_STATELESS | platform::PDefH (bool, IsPrint, char c) ImplRet(ystdex
| 检查默认区域下指定字符是否为可打印字符。 更多...
| platform::PDefH (ystdex::uchar_t *, ucast, wchar_t *p) ynothrow ImplRet(ystdex
| 调用并捕获异常。 更多...
template<typename _func , typename _type = ystdex::invoke_result_t<_func&>>
_type | platform::RetryOnInterrupted (_func f)
| 循环可能被中断的操作。 更多...
YF_API int | platform::uspawn (const char *)
| 执行 UTF-8 字符串的环境命令。 更多...
YF_API int | platform::usystem (const char *)
| 执行 UTF-8 字符串的环境命令。 更多...
YB_ATTR_nodiscard YF_API | platform::YB_NONNULL (1, 2) bool HaveSameContents(const char *
| 比较文件内容相等。 更多...
YF_API size_t | platform::FetchLimit (SystemOption) ynothrow
| 取限制配置。 更多...

## 详细描述

平台相关的公共组件无关函数与宏定义集合。

版本
  r3977

作者
  FrankHB frank.nosp@m.hb19.nosp@m.89@gm.nosp@m.ail..nosp@m.com

自从
  build 561

创建时间:
  2009-11-12 22:14:28 +0800

修改时间:
  2020-05-31 18:06 +0800

文本编码:
  UTF-8

模块名称:
  YCLib::YCommon

在文件 YCommon.h 中定义.

## 宏定义说明

## ◆ YCL_Call_CAPI

#define YCL_Call_CAPI | ( |  | _t,
|  |  | _fn,
|  |  | _sig,
|  |  | ...
| ) |  | YCL_WrapCall_CAPI(_t, _fn, __VA_ARGS__)(_sig)

在文件 YCommon.h 第 258 行定义.

## ◆ YCL_CallF_CAPI

#define YCL_CallF_CAPI | ( |  | _t,
|  |  | _fn,
|  |  | ...
| ) |  | YCL_Call_CAPI(_t, _fn, yfsig, __VA_ARGS__)

在文件 YCommon.h 第 261 行定义.

## ◆ YCL_CheckDecl_t

#define YCL_CheckDecl_t | ( |  | _fn | ) | CheckDecl##_fn##_t

声明检查存在合式调用的辅助宏。

参见
  ystdex::is_detected

自从
  build 651

在文件 YCommon.h 第 149 行定义.

## ◆ YCL_DeclCheck_t

#define YCL_DeclCheck_t | ( |  | _fn,
|  |  | _call
| ) |  |

值:
template<typename... _tParams> \
using YCL_CheckDecl_t(_fn) \
= decltype(_call(std::declval<_tParams>()...));

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

## ◆ YCL_IDTag_Spec

#define YCL_IDTag_Spec | ( |  | _n,
|  |  | _base
| ) |  |

值:
template<> \
struct IDTag<YF_Platform_##_n> : virtual _base, \
virtual MetaID<YF_Platform_##_n> \
{};

指定特定基类类型的 IDTag 特化。

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

## ◆ YCL_IDTag_SpecHost

#define YCL_IDTag_SpecHost | ( |  | _n | ) | YCL_IDTag_Spec(_n, HostedIDTagBase)

指定宿主平台的 IDTag 特化。

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

## ◆ YCL_IDTag_SpecOnBase

#define YCL_IDTag_SpecOnBase | ( |  | _n,
|  |  | _b
| ) |  | YCL_IDTag_Spec(_n, IDTag<YF_Platform_##_b>)

指定基于特定平台的 IDTag 特化。

在文件 YCommon.h 第 91 行定义.

## ◆ YCL_Raise_SysE

#define YCL_Raise_SysE | ( |  | _t,
|  |  | _msg,
|  |  | _sig
| ) |  |

值:
do \
{ \
const auto err_(errno); \
\
ystdex::throw_error<_t>(err_, \
platform::ComposeMessageWithSignature(_msg YPP_Comma _sig)); \
}while(false)

按错误值和指定参数抛出第一参数指定类型的对象。

自从
  build 714

注解
  省略第一参数时为 std::system_error 。
  先保存可能是左值的 errno 以避免参数中的副作用影响结果。

前置条件
  platform::ComposeMessageWithSignature 已声明（需要包含 Debug.h ）。

在文件 YCommon.h 第 202 行定义.

## ◆ YCL_RaiseZ_SysE

#define YCL_RaiseZ_SysE | ( |  | _t,
|  |  | _expr,
|  |  | _msg,
|  |  | _sig
| ) |  |

值:
do \
{ \
const auto err_(_expr); \
\
if(err_ != decltype(err_)()) \
ystdex::throw_error<_t>(err_, \
platform::ComposeMessageWithSignature(_msg YPP_Comma _sig)); \
}while(false)

注解
  按表达式求值，检查是否为零初始化的值。

在文件 YCommon.h 第 212 行定义.

## ◆ YCL_Tag_constfn

#define YCL_Tag_constfn inline

包含平台标签的常量表达式函数。

注解
  由于标签类型使用虚基类的限制，不能使用合式的 constexpr 。

自从
  build 727

在文件 YCommon.h 第 115 行定义.

## ◆ YCL_Trace_SysE

#define YCL_Trace_SysE | ( |  | _lv,
|  |  | _fn,
|  |  | _sig
| ) |  |

值:
do \
{ \
const int err_(errno); \
\
YTraceDe(_lv, "Failed calling " #_fn " @ %s with error %d: %s.", \
_sig, err_, std::strerror(err_)); \
}while(false)

跟踪 errno 取得的调用状态结果。

自从
  build 691

在文件 YCommon.h 第 227 行定义.

## ◆ YCL_TraceCall_CAPI

#define YCL_TraceCall_CAPI | ( |  | _fn,
|  |  | _sig,
|  |  | ...
| ) |  | YCL_TraceWrapCall_CAPI(_fn, __VA_ARGS__)(_sig)

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

## ◆ YCL_TraceCallF_CAPI

#define YCL_TraceCallF_CAPI | ( |  | _fn,
|  |  | ...
| ) |  | YCL_TraceCall_CAPI(_fn, yfsig, __VA_ARGS__)

在文件 YCommon.h 第 282 行定义.

## ◆ YCL_TraceWrapCall_CAPI

#define YCL_TraceWrapCall_CAPI | ( |  | _fn,
|  |  | ...
| ) |  |

值:
[&](const char* sig_) YB_NONNULL(2){ \
const auto res_(_fn(__VA_ARGS__)); \
\
if(YB_UNLIKELY(res_ < decltype(res_)())) \
YCL_Trace_SysE(platform::Descriptions::Warning, _fn, sig_); \
return res_; \
}

注解
  若失败跟踪 errno 的结果。
  格式转换说明符置于最前以避免宏参数影响结果。

参见
  YCL_Trace_SysE

在文件 YCommon.h 第 270 行定义.

## ◆ YCL_WrapCall_CAPI

#define YCL_WrapCall_CAPI | ( |  | _t,
|  |  | _fn,
|  |  | ...
| ) |  |

值:
[&](const char* sig_) YB_NONNULL(2){ \
const auto res_(_fn(__VA_ARGS__)); \
\
if(YB_UNLIKELY(res_ < decltype(res_)())) \
YCL_Raise_SysE(_t, #_fn, sig_); \
return res_; \
}

调用系统 C API 或其它可用 errno 取得调用状态的例程。

前置条件
  系统 C API 返回结果类型满足 DefaultConstructible 和 LessThanComparable 要求。

注解
  比较返回默认构造的结果值，相等表示成功，小于表示失败且设置 errno 。
  调用时直接使用实际参数，可指定非标识符的表达式，不保证是全局名称。
  若失败抛出第一参数指定类型的对象。
  省略第一参数时为 std::system_error 。

参见
  YCL_Raise_SysE

在文件 YCommon.h 第 249 行定义.

platform::if
if(!p) p
YPP_Comma
#define YPP_Comma
替换为逗号的预处理记号。
Definition: ydef.h:370
YCL_CheckDecl_t
#define YCL_CheckDecl_t(_fn)
声明检查存在合式调用的辅助宏。
Definition: YCommon.h:148
YTraceDe
#define YTraceDe(...)
YCLib 默认调试跟踪。
Definition: Debug.h:407
platform::Descriptions::Warning
@ Warning
Definition: YCommon.h:183
YSLib::_tParams
YB_ATTR_nodiscard YB_PURE typename _tParams
Definition: ValueNode.h:1294
YSLib::IO::Path::YB_NONNULL
PDefH(String, GetExtensionOf, const Path &pth) ImplRet(pth.empty() ? String() YF_API YB_NONNULL(1) bool VerifyDirectory(const char *)
判断路径表示绝对路径。
Definition: YSLib/Service/FileSystem.h:516
ystdex::_t
typename _type::type _t
嵌套类型别名。
Definition: meta.hpp:45
YB_UNLIKELY
#define YB_UNLIKELY(_expr)
分支预测提示。
Definition: ydef.h:828