YSTest: platform 命名空间参考

YSTest PreAlpha_b800_20170810 The YSLib Test Project

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

- 命名空间列表
- 命名空间成员

命名空间 | 类 | 类型定义 | 函数 | 变量
platform 命名空间参考
Top-level Platform Namespaces

默认平台命名空间。 更多...

## 命名空间

| basic_types
| ColorSpace
| 系统默认颜色空间。
| Concurrency
| containers
| Descriptions
| 平台描述空间。
| FAT
| 文件分配表接口。
| IndexSpace
| 索引空间。
| KeyCategory
| 按键类别。
| KeyCodes
| 本机按键编码。
| references
| Threading

## 类

struct | AXYZValueTraits
class | Color
| 颜色。 更多...
class | DirectorySession
| 目录会话：表示打开的目录。 更多...
class | FileDescriptor
| 文件描述符包装类。 更多...
class | HDirectory
| 目录句柄：表示打开的目录和内容迭代状态。 更多...
struct | HostedIDTagBase
| 宿主平台标识的公共标记类型：指定任意宿主平台。 更多...
struct | IDTag
| 平台标识的整数标记类型。 更多...
struct | IDTag< YF_Platform_Android >
struct | IDTag< YF_Platform_Android_ARM >
struct | IDTag< YF_Platform_Linux >
struct | IDTag< YF_Platform_Linux_x64 >
struct | IDTag< YF_Platform_Linux_x86 >
struct | IDTag< YF_Platform_MinGW32 >
struct | IDTag< YF_Platform_MinGW64 >
struct | IDTag< YF_Platform_Win32 >
struct | IDTag< YF_Platform_Win64 >
struct | IDTagBase
| 平台标识的公共标记类型：指定任意平台。 更多...
struct | IDTagSet
| 取平台标识的整数标记集合类型。 更多...
class | Logger
| 日志记录器。 更多...
class | MappedFile
| 只读内存映射文件。 更多...
class | UnmapDelete

## 类型定义

using | UniqueFile = unique_ptr_from< FileDescriptor::Deleter >
using | KeyIndex = size_t
| 按键索引类型：标识特定的按键在按键集合中的位置。 更多...
using | KeyInput = std::bitset< KeyBitsetWidth >
| 按键并行位宽。 更多...
using | ssize_t = ystdex::make_signed_t< std::size_t >
using | SPos = std::int16_t
| 屏幕坐标度量。 更多...
using | SDst = std::uint16_t
| 屏幕坐标距离。 更多...
using | mode_t = DefaultPMode()
| 文件模式类型。 更多...
template<size_t _vA, size_t _vX, size_t _vY, size_t _vZ>
using | AXYZTraits = AXYZValueTraits< ystdex::bitseg_traits< _vA, _vX, _vY, _vZ >, 0, 1, 2, 3 >
| AXYZ 逻辑分量特征。 更多...
template<size_t _vX, size_t _vY, size_t _vZ, size_t _vA>
using | XYZATraits = AXYZValueTraits< ystdex::bitseg_traits< _vX, _vY, _vZ, _vA >, 3, 0, 1, 2 >
| XYZA 逻辑分量特征。 更多...
template<size_t _vB, size_t _vG, size_t _vR, size_t _vA>
using | BGRA = (packed) YB_ATTR(aligned(yalignof(typename _tTraits PixelQuadruple< XYZATraits< _vB, _vG, _vR, _vA >, AXYZMapping::ABGR, _vB, _vG, _vR, _vA >
| 像素四元组。 更多...
template<size_t _vR, size_t _vG, size_t _vB, size_t _vA>
using | RGBA = PixelQuadruple< XYZATraits< _vR, _vG, _vB, _vA >, AZYXMapping::ABGR, _vR, _vG, _vB, _vA >
template<size_t _vA, size_t _vR, size_t _vG, size_t _vB>
using | ARGB = PixelQuadruple< AXYZTraits< _vA, _vR, _vG, _vB >, AZYXMapping::ABGR, _vA, _vR, _vG, _vB >
template<size_t _vA, size_t _vB, size_t _vG, size_t _vR>
using | ABGR = PixelQuadruple< AXYZTraits< _vA, _vB, _vG, _vR >, AXYZMapping::ABGR, _vA, _vB, _vG, _vR >
using | MonoType = octet
using | AlphaType = octet
using | ID = std::uintmax_t
| `YF_Platform_*` 宏替换值的公共类型。 更多...
template<ID _vN>
using | MetaID = ystdex::integral_constant< ID, _vN >
| `YF_Platform_*` 宏替换值的对应的元类型。 更多...

## 函数

YF_API bool | Echo (string_view) ynoexcept(YF_Platform
| 使用标准输出流打印字符串并刷新。 更多...
YF_API Logger & | FetchCommonLogger ()
| 取公共日志记录器。 更多...
YF_API | YB_ATTR_gnu_printf (3, 4) YB_NONNULL(1
| 格式输出日志字符串前追加记录源文件名和行号。 更多...
YF_API string | LogWithSource (const char *, int, const char *,...) ynothrow
template<typename _type >
_type && | Nonnull (_type &&p) ynothrowv
| 断言并返回非空参数。 更多...
template<typename _type >
_type && | FwdIter (_type &&i) ynothrowv
| 断言并返回可解引用的迭代器。 更多...
template<typename _type >
yconstfn auto | Deref (_type &&p) -> decltype(*p)
| 断言并解引用非空指针。 更多...
enum NodeCategory std::uint_least32_t YF_API NodeCategory | CategorizeNode (mode_t) ynothrow
| 文件节点类别。 更多...
YF_API YB_STATELESS mode_t | DefaultPMode () ynothrow
| 取默认权限。 更多...
YF_API bool | HaveSameContents (UniqueFile, UniqueFile, const char *, const char *)
bool | IsNodeShared (FileDescriptor, FileDescriptor) ynothrow
YF_API void | WaitForInput ()
| 等待任意按键。 更多...
YF_API KeyIndex | FindFirstKey (const KeyInput &) ynothrow
| 找到输入缓冲区记录中最小的按键编码。 更多...
YF_API KeyIndex | FindNextKey (const KeyInput &, KeyIndex) ynothrow
| 找到输入缓冲区记录中大于指定编码的最小的按键编码。 更多...
YF_API std::uint32_t | GetTicks () ynothrow
| 取 tick 数。 更多...
YF_API std::uint64_t | GetHighResolutionTicks () ynothrow
| 取高精度 tick 数。 更多...
YF_API bool | InitVideo ()
| 初始化视频输出。 更多...
YB_NORETURN YF_API void | terminate () ynothrow
| 异常终止函数。 更多...
string | MakePathString (const char16_t *s)
int | omode_conv (std::ios_base::openmode mode) ynothrow
int | uaccess (const char *path, int amode) ynothrowv
int | uaccess (const char16_t *path, int amode) ynothrowv
int | uopen (const char *filename, int oflag, mode_t pmode) ynothrowv
int | uopen (const char16_t *filename, int oflag, mode_t pmode) ynothrowv
std::FILE * | ufopen (const char *filename, const char *mode) ynothrowv
std::FILE * | ufopen (const char16_t *filename, const char16_t *mode) ynothrowv
std::FILE * | ufopen (const char *filename, std::ios_base::openmode mode) ynothrowv
std::FILE * | ufopen (const char16_t *filename, std::ios_base::openmode mode) ynothrowv
bool | ufexists (const char *filename) ynothrowv
bool | ufexists (const char16_t *filename) ynothrowv
char * | ugetcwd (char *buf, size_t size) ynothrowv
char16_t * | ugetcwd (char16_t *buf, size_t len) ynothrowv
bool | uchdir (const char *path) ynothrowv
bool | umkdir (const char *path) ynothrowv
bool | urmdir (const char *path) ynothrowv
bool | uunlink (const char *path) ynothrowv
bool | uremove (const char *path) ynothrowv
FileTime | GetFileAccessTimeOf (const char *filename, bool follow_link)
FileTime | GetFileAccessTimeOf (const char16_t *filename, bool follow_link)
FileTime | GetFileModificationTimeOf (const char *filename, bool follow_link)
FileTime | GetFileModificationTimeOf (const char16_t *filename, bool follow_link)
| cstat (st, path, follow_link, yfsig)
UniqueFile | EnsureUniqueFile (const char *dst, mode_t mode, size_t allowed_links, bool share)
bool | HaveSameContents (const char *path_a, const char *path_b, mode_t mode)
bool | HaveSameContents (const char16_t *path_a, const char16_t *path_b, mode_t mode)
bool | IsNodeShared (const char *a, const char *b, bool follow_link) ynothrowv
bool | IsNodeShared (const char16_t *a, const char16_t *b, bool follow_link) ynothrowv
bool | IsDirectory (const char *path)
bool | IsDirectory (const char16_t *path)
void | CreateHardLink (const char *dst, const char *src)
void | CreateHardLink (const char16_t *dst, const char16_t *src)
void | CreateSymbolicLink (const char *dst, const char *src, bool is_dir)
void | CreateSymbolicLink (const char16_t *dst, const char16_t *src, bool is_dir)
string | ReadLink (const char *path)
u16string | ReadLink (const char16_t *path)
YF_API void | SetBinaryIO (std::FILE *) ynothrowv
| 设置标准库流二进制输入/输出模式。 更多...
| PDefH (void, SetupBinaryStdIO, std::FILE *in=stdin, std::FILE *out=stdout, bool sync={}) ynothrowv ImplExpr(SetBinaryIO(in)
| SetBinaryIO (out)
std::ios_base::sync_with_stdio(sync)) YF_API YB_STATELESS int omode_conv(std YF_API YB_STATELESS int | omode_convb (std::ios_base::openmode) ynothrow
| ISO C++ 标准输入输出接口打开模式转换为 POSIX 文件打开模式。 更多...
template<typename _tChar >
basic_string< _tChar > | FetchCurrentWorkingDirectory (size_t init)
| 尝试按指定的起始缓冲区大小取当前工作目录的路径。 更多...
YF_API | YB_NONNULL (1, 2) bool HaveSameContents(const char *
| 比较文件内容相等。 更多...
yconstfn YB_PURE | PDefH (bool, IsNodeShared, const FileNodeID &x, const FileNodeID &y) ynothrow ImplRet(x!
| 判断参数是否表示共享的文件节点。 更多...
template<typename _tChar >
yconstfn bool | IsColon (_tChar c) ynothrow
template<typename _tChar >
YCL_Tag_constfn YB_STATELESS _tChar | FetchSeparator_P (IDTag< YF_Platform_Win32 >) ynothrow
template<typename _tChar >
YCL_Tag_constfn YB_STATELESS _tChar | FetchSeparator_P (IDTagBase) ynothrow
template<typename _tChar >
yconstfn YB_STATELESS _tChar | FetchSeparator () ynothrow
YF_API bool | IterateLink (string &, size_t &)
| 迭代访问链接：替换非空路径并按需减少允许链接计数。 更多...
YF_API bool | IterateLink (u16string &, size_t &)
yconstfn | PDefH (char, MapKeyChar, KeyIndex) ynothrow ImplRet(
| 映射按键到键入的字符。 更多...
yconstfn | PDefH (char, MapKeyChar, const KeyInput &, KeyIndex) ynothrow ImplRet(
| PDefH (bool, IsPrint, char c) ImplRet(ystdex
| 检查默认区域下指定字符是否为可打印字符。 更多...

## 变量

YF_API | size_t = 1
_tString ystdex::string_traits< _tString >::const_pointer | tail
bool | follow_link
return st | st_nlink
YF_API int amode | ynothrowv
YF_API int | oflag
YF_API int mode_t | pmode
| ComposeMessageWithSignature
const string & | msg
const string const char *sig const char * | sig
| YB_NONNULL (2) PDefH(string
| 组合消息和函数签名字符串。 更多...
const string const char *sig | ImplRet (msg+" @ "+Nonnull(sig)) inline YB_NONNULL(1
const string const char *sig | PDefH (string, ComposeMessageWithSignature, const char *msg, const char *sig) ImplRet(string(Nonnull(msg))+" @ "+Nonnull(sig)) template< class _type > inline YB_NONNULL(2) string ComposeMessageWithSignature(const _type &msg
return | to_string (msg)+" @ "+Nonnull(sig)
| MakePathString
| YB_NONNULL (1) PDefH(string
| 构造适合表示路径的 `char` 字符串。 更多...
const char *s | ImplRet (Nonnull(s)) inline PDefH(const string &
const char *s const string &s | ImplRet (s) YF_API YB_NONNULL(1) string MakePathString(const char16_t *)
| PDefH (string, MakePathString, u16string_view sv) ImplRet(MakePathString(sv.data())) using FileNodeID
| 文件节点标识类型。 更多...
| GetFileAccessTimeOf
std::FILE *fp | bool = {})
std::FILE *fp | ImplRet (FileDescriptor(fp).GetAccessTime()) YF_API YB_NONNULL(1) FileTime GetFileAccessTimeOf(const char *
| GetFileModificationTimeOf
std::FILE *fp | ImplRet (FileDescriptor(fp).GetModificationTime()) YF_API YB_NONNULL(1) FileTime GetFileModificationTimeOf(const char *
| GetFileModificationAndAccessTimeOf
std::FILE *fp | ImplRet (FileDescriptor(fp).GetModificationAndAccessTime()) YF_API YB_NONNULL(1) array< FileTime
std::FILE *fp | GetFileModificationAndAccessTimeOf (const char *, bool={})
YF_API | GetFileModificationAndAccessTimeOf (const char16_t *, bool={})
const _tString &path | ynothrow
_tString && | path
template<typename _tChar >
YCL_Tag_constfn YB_STATELESS bool | IsSeparator_P (IDTag< YF_Platform_Win32 > tag, _tChar c) ynothrow
template<typename _tChar >
YCL_Tag_constfn YB_STATELESS bool | IsSeparator_P (IDTagBase tag, _tChar c) ynothrow
| YCL_DefPlatformFwdTmpl (IsSeparator, IsSeparator_P) template< typename _tChar > inline YB_NONNULL(2) bool IsAbsolute_P(IDTag< YF_Platform_DS > tag
| 判断指定路径字符串是否表示一个绝对路径。 更多...
template<typename _tChar >
bool | IsAbsolute_P (IDTag< YF_Platform_DS > tag, basic_string_view< _tChar > path) ynothrowv
template<typename _tChar >
bool | IsAbsolute_P (IDTag< YF_Platform_Win32 > tag, basic_string_view< _tChar > path) ynothrowv
template<typename _tChar >
bool | IsAbsolute_P (IDTagBase tag, basic_string_view< _tChar > path) ynothrowv
| YCL_DefPlatformFwdTmpl (IsAbsolute, IsAbsolute_P) template< typename _tChar > YB_NONNULL(2) size_t FetchRootNameLength_P(IDTag< YF_Platform_DS > tag
| 取指定路径的文件系统根节点名称的长度。 更多...
| if (!p) p
| while (platform::IsSeparator_P(tag,*p))++p
return | size_t (p-path)
template<typename _tChar >
size_t | FetchRootNameLength_P (IDTag< YF_Platform_DS >, basic_string_view< _tChar > path) ynothrowv
template<typename _tChar >
size_t | FetchRootNameLength_P (IDTag< YF_Platform_Win32 >, basic_string_view< _tChar > path) ynothrowv
template<typename _tChar >
size_t | FetchRootNameLength_P (IDTagBase tag, basic_string_view< _tChar > path) ynothrowv
| YCL_DefPlatformFwdTmpl (FetchRootNameLength, FetchRootNameLength_P) template< class _tString > yconstfn bool EndsWithNonSeperator_P(IDTagBase tag
| 判断路径字符串是否以非分隔符结束。 更多...
| YCL_DefPlatformFwdTmpl (EndsWithNonSeperator, EndsWithNonSeperator_P) template< class _tString > YCL_Tag_constfn _tString &&TrimTrailingSeperator_P(IDTag< YF_Platform_Win32 >
enum | FileMappingOption { FileMappingOption::ReadOnly, FileMappingOption::ReadWrite, FileMappingOption::CopyOnWrite }
| 文件映射选项。 更多...
using | FileMappingKey = ystdex::pseudo_output
| 文件映射键类型。 更多...
enum | SystemOption { SystemOption::PageSize, SystemOption::MaxSemaphoreNumber, SystemOption::MaxSemaphoreValue, SystemOption::MaxSymlinkLoop }
| 系统配置选项。 更多...
| PDefH (ystdex::uchar_t *, ucast, wchar_t *p) ynothrow ImplRet(ystdex
| 调用并捕获异常。 更多...
template<typename _func , typename _type = ystdex::result_of_t<_func&()>>
_type | RetryOnInterrupted (_func f)
| 循环可能被中断的操作。 更多...
YF_API int | usystem (const char *)
| 执行 UTF-8 字符串的环境命令。 更多...
YF_API size_t | FetchLimit (SystemOption) ynothrow
| 取限制配置。 更多...

## 详细描述

默认平台命名空间。

自从
  build 680

## 类型定义说明

template<size_t _vA, size_t _vB, size_t _vG, size_t _vR>

using platform::ABGR = typedef PixelQuadruple<AXYZTraits<_vA, _vB, _vG, _vR>, AXYZMapping::ABGR, _vA, _vB, _vG, _vR>

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

using platform::AlphaType = typedef octet

在文件 Video.h 第 253 行定义.

template<size_t _vA, size_t _vR, size_t _vG, size_t _vB>

using platform::ARGB = typedef PixelQuadruple<AXYZTraits<_vA, _vR, _vG, _vB>, AZYXMapping::ABGR, _vA, _vR, _vG, _vB>

在文件 Video.h 第 240 行定义.

template<size_t _vA, size_t _vX, size_t _vY, size_t _vZ>

using platform::AXYZTraits = typedef AXYZValueTraits<ystdex::bitseg_traits<_vA, _vX, _vY, _vZ>, 0, 1, 2, 3>

AXYZ 逻辑分量特征。

注解
  调整分量索引参数顺序为逻辑顺序排序的逻辑分量值特征别名。

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

template<size_t _vB, size_t _vG, size_t _vR, size_t _vA>

using platform::BGRA = typedef (packed) YB_ATTR(aligned(yalignof(typename _tTraits PixelQuadruple<XYZATraits<_vB, _vG, _vR, _vA>, AXYZMapping::ABGR, _vB, _vG, _vR, _vA>

像素四元组。

注解
  作为 POD 类型，可以用于储存像素。

警告
  用户应检查存储表示的实际大小是否和本类型一致。

Bug:
  当前忽略对齐和特定类型的一致性。

作为像素的具有四个值分量 ABGR 的联合类型，可被整数或数组表示，以位段实现存储布局控制。 模板参数依次为逻辑分量特征、值分量映射枚举和四个值分量的位宽。 其中表示分量位宽的参数和对应分量在位段中存储的顺序相同。 具体存储布局和存储映射的接口由逻辑分量特征提供。 值分量被值分量映射枚举一一映射为 AXYZ 逻辑分量。 值分量映射枚举应保证映射后的逻辑分量和逻辑分量特征使用的存储索引对应的逻辑分量一致。 不直接依赖数组类型访问存储，因此对字节序中立。

在文件 Video.h 第 230 行定义.

using platform::FileMappingKey = typedef ystdex::pseudo_output

文件映射键类型。

注解
  用于指定映射的标识。
  保证默认构造对象可比较，若与之相等时为匿名映射，否则可为共享映射。
  为可移植性，可使用 const char16_t* 类型固定值（如字符串字面量转换的指针）。

在文件 MemoryMapping.h 第 60 行定义.

using platform::KeyIndex = typedef size_t

按键索引类型：标识特定的按键在按键集合中的位置。

自从
  build 490

在文件 Keys.h 第 42 行定义.

using platform::KeyInput = typedef std::bitset<KeyBitsetWidth>

按键并行位宽。

注解
  不少于实际表示的 KeyPad 按键数。

自从
  build 490

本机输入类型。

自从
  build 298

支持并行按键的缓冲区数据类型。

在文件 Keys.h 第 67 行定义.

YF_API const char16_t platform::mode_t = DefaultPMode()

文件模式类型。

自从
  build 626

在文件 FileIO.h 第 114 行定义.

using platform::MonoType = typedef octet

自从
  build 417

在文件 Video.h 第 252 行定义.

template<size_t _vR, size_t _vG, size_t _vB, size_t _vA>

using platform::RGBA = typedef PixelQuadruple<XYZATraits<_vR, _vG, _vB, _vA>, AZYXMapping::ABGR, _vR, _vG, _vB, _vA>

在文件 Video.h 第 235 行定义.

using platform::SDst = typedef std::uint16_t

屏幕坐标距离。

在文件 Video.h 第 44 行定义.

using platform::SPos = typedef std::int16_t

屏幕坐标度量。

在文件 Video.h 第 43 行定义.

using platform::ssize_t = typedef ystdex::make_signed_t<std::size_t>

在文件 NativeAPI.h 第 94 行定义.

using platform::UniqueFile = typedef unique_ptr_from<FileDescriptor::Deleter>

自从
  build 626

在文件 FileIO.h 第 464 行定义.

template<size_t _vX, size_t _vY, size_t _vZ, size_t _vA>

using platform::XYZATraits = typedef AXYZValueTraits<ystdex::bitseg_traits<_vX, _vY, _vZ, _vA>, 3, 0, 1, 2>

XYZA 逻辑分量特征。

在文件 Video.h 第 157 行定义.

## 枚举类型说明

enum platform::FileMappingOption

strong

文件映射选项。

自从
  build 711

枚举值
ReadOnly |
ReadWrite |
CopyOnWrite |

在文件 MemoryMapping.h 第 44 行定义.

enum platform::SystemOption

strong

系统配置选项。

自从
  build 704

注解
  以 Max 起始的名称表示可具有的最大值。

枚举值

PageSize

内存页面字节数。

注解
  0 表示不支持分页。

自从
  build 712

MaxSemaphoreNumber

一个进程中可具有的信号量的最大数量。

自从
  build 720

MaxSemaphoreValue | 可具有的信号量的最大值。
MaxSymlinkLoop | 在路径解析中符号链接可被可靠遍历的最大次数。

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

## 函数说明

NodeCategory platform::CategorizeNode | ( | mode_t | st_mode | ) |

strong

文件节点类别。

自从
  build 412

在文件 FileIO.cpp 第 388 行定义.

参考 platform::KeyCategory::Character, platform_ex::Windows::Directory, platform::KeyCodes::Win32::Empty , 以及 YB_UNLIKELY.

参考自 platform::FileDescriptor::GetCategory() , 以及 platform::HDirectory::GetNodeCategory().

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

void platform::CreateHardLink | ( | const char * | dst,
|  | const char * | src
| ) |  |

在文件 YCLib/FileSystem.cpp 第 167 行定义.

参考 NPL::c_str(), CreateHardLink(), Nonnull(), ystdex::throw_error(), YAssertNonnull, YCL_CallF_CAPI , 以及 yfsig.

函数调用图:

void platform::CreateHardLink | ( | const char16_t * | dst,
|  | const char16_t * | src
| ) |  |

在文件 YCLib/FileSystem.cpp 第 183 行定义.

参考 NPL::c_str(), MakePathString, ystdex::throw_error(), YAssertNonnull, YCL_CallF_Win32 , 以及 yfsig.

参考自 CreateHardLink().

函数调用图:

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

void platform::CreateSymbolicLink | ( | const char * | dst,
|  | const char * | src,
|  | bool | is_dir
| ) |  |

在文件 YCLib/FileSystem.cpp 第 198 行定义.

参考 NPL::c_str(), CreateSymbolicLink(), Nonnull(), ystdex::throw_error(), YCL_CallF_CAPI, yfsig , 以及 yunused.

函数调用图:

void platform::CreateSymbolicLink | ( | const char16_t * | dst,
|  | const char16_t * | src,
|  | bool | is_dir
| ) |  |

在文件 YCLib/FileSystem.cpp 第 214 行定义.

参考 NPL::c_str(), MakePathString, ystdex::throw_error(), yfsig , 以及 yunused.

参考自 CreateSymbolicLink().

函数调用图:

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

platform::cstat | ( | st | ,
|  | path | ,
|  | follow_link | ,
|  | yfsig |
| ) |  |

参考自 platform::FileDescriptor::GetMode().

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

mode_t platform::DefaultPMode | ( |  | ) |

取默认权限。

自从
  build 638

在文件 FileIO.cpp 第 772 行定义.

template<typename _type >

yconstfn auto platform::Deref | ( | _type && | p | ) | -> decltype(*p)

断言并解引用非空指针。

前置条件
  使用 ADL 指定的 FwdIter 调用表达式的值等价于调用 platform::FwdIter 。
  间接断言：指针非空。

自从
  build 553

在文件 Debug.h 第 451 行定义.

参考 FwdIter(), CHRLib::p() , 以及 yforward.

参考自 YSLib::Drawing::NativeFontSize::Activate(), YSLib::GHEvent< _tRet(_tParams...)>::GEquality< _tRet, _tParams >::AreEqual(), NPL::A1::Forms::BindParameter(), NPL::A1::Forms::CallBinary(), NPL::A1::Forms::CallBinaryAs(), NPL::A1::Forms::CallBinaryFold(), NPL::A1::Forms::CallUnary(), platform_ex::ClearKeyStates(), NPL::A1::Forms::Cons(), NPL::SXML::ConvertAttributeNodeString(), NPL::SXML::ConvertDocumentNode(), NPL::Environment::DefaultResolve(), YSLib::Devices::InputManager::DispatchInput(), NPL::A1::Forms::Eval(), YSLib::FetchShell(), YSLib::GUIApplication::GetEnvironmentRef(), YSLib::ValueObject::GetHolderRef(), platform::HDirectory::GetNodeCategory(), YSLib::ValueObject::GetObject(), YSLib::UI::AMUnitControlList::GetUnitRef(), YSLib::Drawing::ImageTag::GetValue(), NPL::A1::Forms::If(), YSLib::UI::ImplDeDtor(), NPL::A1::Forms::Lambda(), YSLib::DS::UI::DualScreenReader::Locate(), main(), NPL::A1::Forms::MatchParameter(), YSLib::UI::MoveToBottom(), YSLib::UI::MoveToCenter(), YSLib::UI::MoveToRight(), YSLib::Application::OnGotMessage(), YSLib::ValueNode::operator%=(), YSLib::Drawing::CopyLine< _bDec >::operator()(), YSLib::Text::TextFileBuffer::iterator::operator*(), YSLib::Text::TextFileBuffer::iterator::operator++(), YSLib::Text::TextFileBuffer::iterator::operator--(), NPL::SXML::PrintSyntaxNode(), NPL::A1::ReduceCombined(), NPL::A1::ReduceFirst(), NPL::ReduceHeadEmptyList(), YSLib::DS::UI::DualScreenReader::ScrollByPixel(), YSLib::ValueNode::SplitChildren(), YSLib::UI::WidgetLoader::TransformUILayout(), ufopen(), NPL::A1::Forms::Undefine(), NPL::A1::Forms::ValueOf(), NPL::A1::Forms::Vau(), NPL::A1::Forms::VauWithEnvironment(), YSLib::UI::Widget::WrapRenderer(), platform_ex::Windows::YB_NONNULL() , 以及 YSLib::Drawing::Typeface::~Typeface().

函数调用图:

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

YF_API bool platform::Echo | ( | string_view |  | ) |

使用标准输出流打印字符串并刷新。

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

返回
  打印和刷新是否成功。

自从
  build 742

使用标准输出流以平台相关的方式打印字符串，然后刷新流。编码视为 UTF-8 。 DS 平台：使用 std::puts 。 Win32 平台：使用控制台接口，失败时使用 std::cout 。 其它平台：使用 std::cout 。

UniqueFile platform::EnsureUniqueFile | ( | const char * | dst,
|  | mode_t | mode,
|  | size_t | allowed_links,
|  | bool | share
| ) |  |

在文件 FileIO.cpp 第 1201 行定义.

参考 oflag, uopen(), uunlink(), YCL_Raise_SysE, yconstexpr , 以及 yfsig.

参考自 YSLib::IO::CopyFile().

函数调用图:

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

YF_API Logger& platform::FetchCommonLogger | ( |  | ) |

取公共日志记录器。

自从
  build 498

参考自 YSLib::Environment::Environment().

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

basic_string<_tChar> platform::FetchCurrentWorkingDirectory | ( | size_t | init | ) |

尝试按指定的起始缓冲区大小取当前工作目录的路径。

自从
  build 713

前置条件
  间接断言：参数不等于 0 。

注解
  未指定结果是否以分隔符结束。

在文件 FileIO.h 第 1135 行定义.

参考 YSLib::Drawing::r, size_t, ystdex::throw_error(), ugetcwd() , 以及 yfsig.

函数调用图:

size_t platform::FetchLimit | ( | SystemOption | opt | ) |

取限制配置。

返回
  选项存在且值能被返回类型表示时为转换后的对应选项值，否则为默认常数值。

注解
  若无 YB_STATELESS 修饰，当找不到项时，可能使用跟踪输出警告。
  若无 YB_STATELESS 修饰，当找不到项时，可能设置 errno 为 EINVAL 。

参见
  SystemOption
  YTraceDe

以配置选项值作为参数，指定查询特定的限制值。 某些平台调用结果总是翻译时确定的常数，调用此函数无副作用，使用 YB_STATELESS 修饰； 其它平台可能由运行时确定，通过查询宿主环境或语言运行时提供的接口， 确定选项是否存在，以及具体的配置的值。 若选项存在，且对应的值可以 size_t 表示，则返回选项对应的值； 否则，返回一个默认的常数值作为回退，表示在特定环境下能可靠依赖的默认限制。 注意回退值可能平台相关； 但对 POSIX 提供最小值且符合选项含义的情形，使用 POSIX 最小值以提升可移植性。 回退值可能不等于实现实际支持的值。 对表示可具有的最大值的限制，回退值为 `size_t`(-1) ，此时实现实际支持的值可能超过 size_t 的表示范围，或没有指定显式限制（仅受存储或地址空间限制）； 其它回退值取决于选项的具体含义。

在文件 YCommon.cpp 第 69 行定义.

参考 ystdex::max(), MaxSemaphoreNumber, MaxSemaphoreValue, MaxSymlinkLoop, PageSize, size_t, platform::Descriptions::Warning , 以及 YTraceDe.

函数调用图:
template<typename _tChar >

size_t platform::FetchRootNameLength_P | ( | IDTag< YF_Platform_DS > | ,
|  | basic_string_view< _tChar > | path
| ) |  |

在文件 YCLib/FileSystem.h 第 202 行定义.

参考 path , 以及 YAssertNonnull.

template<typename _tChar >

size_t platform::FetchRootNameLength_P | ( | IDTag< YF_Platform_Win32 > | ,
|  | basic_string_view< _tChar > | path
| ) |  |

在文件 YCLib/FileSystem.h 第 231 行定义.

参考 IsColon(), path , 以及 YAssertNonnull.

函数调用图:
template<typename _tChar >

size_t platform::FetchRootNameLength_P | ( | IDTagBase | tag,
|  | basic_string_view< _tChar > | path
| ) |  |

inline

在文件 YCLib/FileSystem.h 第 254 行定义.

参考 IsSeparator_P(), path , 以及 YAssertNonnull.

函数调用图:
template<typename _tChar >

yconstfn YB_STATELESS _tChar platform::FetchSeparator | ( |  | ) |

在文件 YCLib/FileSystem.h 第 90 行定义.

template<typename _tChar >

YCL_Tag_constfn YB_STATELESS _tChar platform::FetchSeparator_P | ( | IDTag< YF_Platform_Win32 > |  | ) |

自从
  build 705

注解
  取平台首选的路径分隔字符。

在文件 YCLib/FileSystem.h 第 77 行定义.

template<typename _tChar >

YCL_Tag_constfn YB_STATELESS _tChar platform::FetchSeparator_P | ( | IDTagBase |  | ) |

在文件 YCLib/FileSystem.h 第 83 行定义.

KeyIndex platform::FindFirstKey | ( | const KeyInput & | keys | ) |

找到输入缓冲区记录中最小的按键编码。

返回
  若存在编码则为最小值，否则为 KeyBitsetWidth 。

自从
  build 490

待办事项:
  支持 libstdc++ 以外的实现。

在文件 Keys.cpp 第 38 行定义.

参考自 platform::KeyCategory::FindFirstKeyInCategroy().

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

KeyIndex platform::FindNextKey | ( | const KeyInput & | keys,
|  | KeyIndex | key
| ) |  |

找到输入缓冲区记录中大于指定编码的最小的按键编码。

返回
  若存在编码则为大于指定编码的最小值，否则为 KeyBitsetWidth 。

自从
  build 490

待办事项:
  支持 libstdc++ 以外的实现。

在文件 Keys.cpp 第 48 行定义.

参考自 platform::KeyCategory::FindFirstKeyInCategroy().

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

_type&& platform::FwdIter | ( | _type && | i | ) |

inline

断言并返回可解引用的迭代器。

前置条件
  断言：迭代器非确定不可解引用。

自从
  build 702

在文件 Debug.h 第 435 行定义.

参考 YSLib::i, ystdex::is_undereferenceable(), YAssert , 以及 yforward.

参考自 Deref().

函数调用图:

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

FileTime platform::GetFileAccessTimeOf | ( | const char * | filename,
|  | bool | follow_link
| ) |  |

在文件 FileIO.cpp 第 1143 行定义.

FileTime platform::GetFileAccessTimeOf | ( | const char16_t * | filename,
|  | bool | follow_link
| ) |  |

在文件 FileIO.cpp 第 1148 行定义.

std::FILE* fp platform::GetFileModificationAndAccessTimeOf | ( | const char * | filename,
|  | bool | follow_link = `{}`
| ) |  |

在文件 FileIO.cpp 第 1165 行定义.

YF_API platform::GetFileModificationAndAccessTimeOf | ( | const char16_t * | filename,
|  | bool | follow_link = `{}`
| ) |  |

在文件 FileIO.cpp 第 1170 行定义.

FileTime platform::GetFileModificationTimeOf | ( | const char * | filename,
|  | bool | follow_link
| ) |  |

在文件 FileIO.cpp 第 1154 行定义.

FileTime platform::GetFileModificationTimeOf | ( | const char16_t * | filename,
|  | bool | follow_link
| ) |  |

在文件 FileIO.cpp 第 1159 行定义.

std::uint64_t platform::GetHighResolutionTicks | ( |  | ) |

取高精度 tick 数。

注解
  单位为纳秒。

警告
  首次调用 StartTicks 前非线程安全。

自从
  build 555

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

参考自 YSLib::FPSCounter::Refresh().

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

std::uint32_t platform::GetTicks | ( |  | ) |

取 tick 数。

注解
  单位为毫秒。

警告
  首次调用 StartTicks 前非线程安全。

自从
  build 555

在文件 Timer.cpp 第 76 行定义.

bool platform::HaveSameContents | ( | const char * | path_a,
|  | const char * | path_b,
|  | mode_t | mode
| ) |  |

在文件 FileIO.cpp 第 1225 行定义.

参考 HaveSameContents().

函数调用图:

bool platform::HaveSameContents | ( | const char16_t * | path_a,
|  | const char16_t * | path_b,
|  | mode_t | mode
| ) |  |

在文件 FileIO.cpp 第 1233 行定义.

参考自 HaveSameContents().

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

bool platform::HaveSameContents | ( | UniqueFile | p_a,
|  | UniqueFile | p_b,
|  | const char * | name_a,
|  | const char * | name_b
| ) |  |

注解
  使用表示文件名称的字符串，仅用于在异常消息中显示（若为空则省略）。
  参数表示的文件已以可读形式打开，否则按流打开失败。
  视文件起始于当前读位置。

自从
  build 658

在文件 FileIO.cpp 第 1242 行定义.

参考 platform_ex::Windows::Directory, IsNodeShared(), Nonnull(), ystdex::streambuf_equal() , 以及 ystdex::throw_error().

函数调用图:

platform::if | ( | ! | p | ) |

const char* s platform::ImplRet | ( | Nonnull(s) |  | ) | const

const char* s const string& s platform::ImplRet | ( | s |  | ) | const

前置条件
  Win32 平台：因实现不直接访问左值，字符的动态类型可为布局兼容的整数类型。
  间接断言：参数非空。

const string const char* sig platform::ImplRet | ( | msg+" @ "+ | Nonnullsig | ) |

std::FILE* fp platform::ImplRet | ( | FileDescriptor(fp).GetAccessTime() |  | ) | const

前置条件
  断言：第一参数非空。

注解
  最后参数表示跟随连接：若文件系统支持，访问链接的文件而不是链接自身。

std::FILE* fp platform::ImplRet | ( | FileDescriptor(fp).GetModificationTime() |  | ) | const

前置条件
  断言：第一参数非空。

注解
  最后参数表示跟随连接：若文件系统支持，访问链接的文件而不是链接自身。

std::FILE* fp platform::ImplRet | ( | FileDescriptor(fp).GetModificationAndAccessTime() |  | ) |

前置条件
  断言：第一参数非空。

注解
  最后参数表示跟随连接：若文件系统支持，访问链接的文件而不是链接自身。

bool platform::InitVideo | ( |  | ) |

初始化视频输出。

警告
  不保证线程安全性。

自从
  build 441

在文件 Video.cpp 第 43 行定义.

template<typename _tChar >

bool platform::IsAbsolute_P | ( | IDTag< YF_Platform_DS > | tag,
|  | basic_string_view< _tChar > | path
| ) |  |

inline

在文件 YCLib/FileSystem.h 第 141 行定义.

参考 IsSeparator_P(), path , 以及 YAssertNonnull.

函数调用图:
template<typename _tChar >

bool platform::IsAbsolute_P | ( | IDTag< YF_Platform_Win32 > | tag,
|  | basic_string_view< _tChar > | path
| ) |  |

inline

在文件 YCLib/FileSystem.h 第 158 行定义.

参考 IsColon(), IsSeparator_P(), path , 以及 YAssertNonnull.

函数调用图:
template<typename _tChar >

bool platform::IsAbsolute_P | ( | IDTagBase | tag,
|  | basic_string_view< _tChar > | path
| ) |  |

inline

在文件 YCLib/FileSystem.h 第 173 行定义.

参考 IsSeparator_P(), path , 以及 YAssertNonnull.

函数调用图:
template<typename _tChar >

yconstfn bool platform::IsColon | ( | _tChar | c | ) |

自从
  build 654

在文件 YCLib/FileSystem.h 第 59 行定义.

参考 CHRLib::c.

参考自 FetchRootNameLength_P() , 以及 IsAbsolute_P().

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

bool platform::IsDirectory | ( | const char * | path | ) |

在文件 YCLib/FileSystem.cpp 第 141 行定义.

参考 bool, NPL::c_str(), platform_ex::Windows::Directory , 以及 IsDirectory().

函数调用图:

bool platform::IsDirectory | ( | const char16_t * | path | ) |

在文件 YCLib/FileSystem.cpp 第 153 行定义.

参考 NPL::c_str(), platform_ex::Windows::Invalid , 以及 MakePathString.

参考自 IsDirectory().

函数调用图:

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

bool platform::IsNodeShared | ( | const char * | a,
|  | const char * | b,
|  | bool | follow_link
| ) |  |

在文件 FileIO.cpp 第 1273 行定义.

参考 YSLib::a, Nonnull() , 以及 ystdex::ntctscmp().

函数调用图:

bool platform::IsNodeShared | ( | const char16_t * | a,
|  | const char16_t * | b,
|  | bool | follow_link
| ) |  |

在文件 FileIO.cpp 第 1279 行定义.

参考 YSLib::a, Nonnull() , 以及 ystdex::ntctscmp().

参考自 HaveSameContents().

函数调用图:

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

bool platform::IsNodeShared | ( | FileDescriptor | x,
|  | FileDescriptor | y
| ) |  |

注解
  取节点失败视为不共享。

参见
  FileDescriptor::GetNodeID

在文件 FileIO.cpp 第 1285 行定义.

参考 NPL::x , 以及 YSLib::UI::y.

template<typename _tChar >

YCL_Tag_constfn YB_STATELESS bool platform::IsSeparator_P | ( | IDTag< YF_Platform_Win32 > | tag,
|  | _tChar | c
| ) |  |

注解
  判断字符是否为平台支持的路径分隔符。

在文件 YCLib/FileSystem.h 第 100 行定义.

参考 CHRLib::c.

参考自 FetchRootNameLength_P() , 以及 IsAbsolute_P().

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

YCL_Tag_constfn YB_STATELESS bool platform::IsSeparator_P | ( | IDTagBase | tag,
|  | _tChar | c
| ) |  |

在文件 YCLib/FileSystem.h 第 106 行定义.

参考 CHRLib::c.

bool platform::IterateLink | ( | string & | path,
|  | size_t & | n
| ) |  |

迭代访问链接：替换非空路径并按需减少允许链接计数。

返回
  是否成功访问了链接。

异常

  std::system_error

  系统错误：调用检查失败。
  - std::errc::too_many_symbolic_link_levels 减少计数后等于 0 。

注解
  忽略空路径。对路径类别中立，用户需自行判断是否为绝对路径或相对路径。
  DS 平台：空实现。

自从
  build 708

在文件 YCLib/FileSystem.cpp 第 303 行定义.

bool platform::IterateLink | ( | u16string & | path,
|  | size_t & | n
| ) |  |

在文件 YCLib/FileSystem.cpp 第 308 行定义.

YF_API string platform::LogWithSource | ( | const char * | ,
|  | int | ,
|  | const char * | ,
|  |  | ...
| ) |  |

string platform::MakePathString | ( | const char16_t * | s | ) |

在文件 FileIO.cpp 第 377 行定义.

参考 CHRLib::MakeMBCS() , 以及 platform_ex::Windows::WCSToUTF8.

参考自 uaccess(), ufopen(), ugetcwd() , 以及 uopen().

函数调用图:

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

_type&& platform::Nonnull | ( | _type && | p | ) |

inline

断言并返回非空参数。

前置条件
  断言：参数非空。

自从
  build 702

在文件 Debug.h 第 422 行定义.

参考 CHRLib::p(), YAssertNonnull , 以及 yforward.

参考自 YSLib::Drawing::GGraphics< unique_ptr< Pixel[]> >::bool(), platform::FAT::CheckColons(), YSLib::Drawing::CopyBitmapBuffer(), YSLib::Drawing::CopyBuffer(), YSLib::IO::CopyFile(), CreateHardLink(), CreateSymbolicLink(), YSLib::Environment::Environment(), YSLib::FetchEnvironmentVariable(), HaveSameContents(), IsNodeShared(), YSLib::LoadNPLA1File(), YSLib::Drawing::PlotHLineSeg(), YSLib::Drawing::PlotVLineSeg(), ReadLink(), YSLib::ArgumentsVector::Reset(), SetBinaryIO(), YSLib::Drawing::to_string(), YSLib::Text::VerifyEncoding(), platform_ex::Windows::RegistryKey::YB_NONNULL() , 以及 YB_NONNULL().

函数调用图:

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

int platform::omode_conv | ( | std::ios_base::openmode | mode | ) |

在文件 FileIO.cpp 第 796 行定义.

参考 YSLib::IO::int , 以及 platform::KeyCategory::None.

参考自 omode_convb().

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

int platform::omode_convb | ( | std::ios_base::openmode | mode | ) |

ISO C++ 标准输入输出接口打开模式转换为 POSIX 文件打开模式。

返回
  若失败为 0 ，否则为对应的值。

自从
  build 648

注解
  忽略二进制模式。
  扩展：不忽略二进制模式。
  POSIX 平台：同 omode_conv 。

在文件 FileIO.cpp 第 840 行定义.

参考 YSLib::IO::int , 以及 omode_conv().

函数调用图:

platform::PDefH | ( | string | ,
|  | MakePathString | ,
|  | u16string_view | sv
| ) |  |

inline

文件节点标识类型。

自从
  build 658
  build 638

platform::PDefH | ( | bool | ,
|  | IsPrint | ,
|  | char | c
| ) |  |

inline

检查默认区域下指定字符是否为可打印字符。

注解
  MSVCRT 的 isprint/iswprint 实现缺陷的变通。

参见
  https://connect.microsoft.com/VisualStudio/feedback/details/799287/isprint-incorrectly-classifies-t-as-printable-in-c-locale

自从
  build 512

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

yconstfn platform::PDefH | ( | char | ,
|  | MapKeyChar | ,
|  | KeyIndex |
| ) |  |

映射按键到键入的字符。

返回
  若未找到对应按键或不支持为 char() ，否则为对应的字符。

注解
  对 Win32 ，返回值不大于 0x80 。

自从
  build 490

待办事项:
  Android 实现。

在文件 Keys.h 第 189 行定义.

yconstfn platform::PDefH | ( | char | ,
|  | MapKeyChar | ,
|  | const KeyInput & | ,
|  | KeyIndex |
| ) |  |

自从
  build 489

在文件 Keys.h 第 192 行定义.

platform::PDefH | ( | ystdex::uchar_t * | ,
|  | ucast | ,
|  | wchar_t * | p
| ) |  |

inline

调用并捕获异常。

警告
  注意避免违反 ISO C++11 [basic.lval]/10 以引起未定义行为。

自从
  build 631
  build 720

循环重复操作。

自从
  build 625

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

参考 CHRLib::p().

函数调用图:

const string const char* sig platform::PDefH | ( | string | ,
|  | ComposeMessageWithSignature | ,
|  | const char * | msg,
|  | const char * | sig
| ) |  | const

platform::PDefH | ( | void | ,
|  | SetupBinaryStdIO | ,
|  | std::FILE * | in = `stdin`,
|  | std::FILE * | out = `stdout`,
|  | bool | sync = `{}`
| ) |  |

inline

警告
  改变默认日志默认发送器前，不应使用 std::cerr 和 std::clog 等依赖 `stderr` 的流，以避免导致同步问题。

参见
  FetchCommonLogger
  Logger::DefaultSendLog

yconstfn YB_PURE platform::PDefH | ( | bool | ,
|  | IsNodeShared | ,
|  | const FileNodeID & | x,
|  | const FileNodeID & | y
| ) |  |

判断参数是否表示共享的文件节点。

注解
  可能设置 errno 。 build 638

string platform::ReadLink | ( | const char * | path | ) |

在文件 YCLib/FileSystem.cpp 第 229 行定义.

参考 NPL::c_str(), MakePathString, Nonnull(), YSLib::Drawing::r, ReadLink(), CHRLib::s, CHRLib::size_t(), ystdex::throw_error(), YAssertNonnull, YCL_CallF_CAPI, YCL_RaiseZ_SysE, yfsig , 以及 yimpl.

函数调用图:

u16string platform::ReadLink | ( | const char16_t * | path | ) |

在文件 YCLib/FileSystem.cpp 第 286 行定义.

参考 NPL::c_str(), MakePathString, platform_ex::MakePathStringU, ystdex::throw_error(), YAssertNonnull , 以及 yfsig.

参考自 ReadLink().

函数调用图:

这是这个函数的调用关系图:
template<typename _func , typename _type = ystdex::result_of_t<_func&()>>

_type platform::RetryOnInterrupted | ( | _func | f | ) |

inline

循环可能被中断的操作。

自从
  build 721

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

void platform::SetBinaryIO | ( | std::FILE * | stream | ) |

设置标准库流二进制输入/输出模式。

前置条件
  间接断言：参数非空。

自从
  build 669

在文件 FileIO.cpp 第 784 行定义.

参考 YSLib::IO::FileDescriptor , 以及 Nonnull().

函数调用图:

platform::SetBinaryIO | ( | out |  | ) |

return platform::size_t | ( | p- | path | ) |

void platform::terminate | ( |  | ) |

异常终止函数。

自从
  build 319

在文件 YCommon.cpp 第 47 行定义.

参考自 YSLib::Environment::Environment(), YSLib::TraceForOutermost() , 以及 ystdex::yassert().

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

return platform::to_string | ( | msg |  | ) |

int platform::uaccess | ( | const char * | path,
|  | int | amode
| ) |  |

在文件 FileIO.cpp 第 848 行定义.

参考 NPL::c_str() , 以及 YAssertNonnull.

函数调用图:

int platform::uaccess | ( | const char16_t * | path,
|  | int | amode
| ) |  |

在文件 FileIO.cpp 第 860 行定义.

参考 NPL::c_str(), MakePathString() , 以及 YAssertNonnull.

函数调用图:

bool platform::uchdir | ( | const char * | path | ) |

在文件 FileIO.cpp 第 1061 行定义.

bool platform::ufexists | ( | const char * | filename | ) |

在文件 FileIO.cpp 第 948 行定义.

参考 ystdex::call_value_or(), ystdex::compose(), ystdex::fexists(), ufopen() , 以及 yimpl.

参考自 YSLib::IO::ClassifyNode(), YSLib::LoadComponents(), YSLib::LoadNPLA1File() , 以及 YSLib::Drawing::FontCache::LoadTypefaces().

函数调用图:

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

bool platform::ufexists | ( | const char16_t * | filename | ) |

在文件 FileIO.cpp 第 958 行定义.

参考 ystdex::call_value_or(), ystdex::compose(), ufopen() , 以及 yimpl.

函数调用图:

std::FILE* platform::ufopen | ( | const char * | filename,
|  | const char * | mode
| ) |  |

在文件 FileIO.cpp 第 898 行定义.

参考 NPL::c_str(), Deref(), YAssert , 以及 YAssertNonnull.

函数调用图:

std::FILE* platform::ufopen | ( | const char16_t * | filename,
|  | const char16_t * | mode
| ) |  |

在文件 FileIO.cpp 第 912 行定义.

参考 NPL::c_str(), Deref(), MakePathString(), YAssert , 以及 YAssertNonnull.

函数调用图:

std::FILE* platform::ufopen | ( | const char * | filename,
|  | std::ios_base::openmode | mode
| ) |  |

在文件 FileIO.cpp 第 926 行定义.

参考 ystdex::openmode_conv() , 以及 ufopen().

函数调用图:

std::FILE* platform::ufopen | ( | const char16_t * | filename,
|  | std::ios_base::openmode | mode
| ) |  |

在文件 FileIO.cpp 第 933 行定义.

参考 NPL::c_str(), MakePathString(), ystdex::openmode_conv() , 以及 YAssertNonnull.

参考自 ufexists() , 以及 ufopen().

函数调用图:

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

char* platform::ugetcwd | ( | char * | buf,
|  | size_t | size
| ) |  |

在文件 FileIO.cpp 第 965 行定义.

参考 YSLib::Text::buf, CatchExpr, YSLib::IO::int, ystdex::cpp2014::make_unique(), MakePathString(), ystdex::ntctscpy(), CHRLib::p() , 以及 YAssertNonnull.

参考自 FetchCurrentWorkingDirectory().

函数调用图:

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

char16_t* platform::ugetcwd | ( | char16_t * | buf,
|  | size_t | len
| ) |  |

在文件 FileIO.cpp 第 1000 行定义.

参考 YSLib::Text::buf, CatchExpr, platform_ex::MakePathStringU, ystdex::ntctscpy() , 以及 YAssertNonnull.

函数调用图:

bool platform::umkdir | ( | const char * | path | ) |

在文件 FileIO.cpp 第 1063 行定义.

参考自 YSLib::IO::EnsureDirectory().

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

int platform::uopen | ( | const char * | filename,
|  | int | oflag,
|  | mode_t | pmode
| ) |  |

在文件 FileIO.cpp 第 873 行定义.

参考 NPL::c_str(), oflag, pmode , 以及 YAssertNonnull.

参考自 YSLib::IO::OpenFile().

函数调用图:

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

int platform::uopen | ( | const char16_t * | filename,
|  | int | oflag,
|  | mode_t | pmode
| ) |  |

在文件 FileIO.cpp 第 885 行定义.

参考 NPL::c_str(), MakePathString(), oflag, pmode , 以及 YAssertNonnull.

参考自 EnsureUniqueFile().

函数调用图:

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

bool platform::uremove | ( | const char * | path | ) |

在文件 FileIO.cpp 第 1083 行定义.

参考自 platform_ex::Windows::YB_NONNULL().

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

bool platform::urmdir | ( | const char * | path | ) |

在文件 FileIO.cpp 第 1071 行定义.

int platform::usystem | ( | const char * | cmd | ) |

执行 UTF-8 字符串的环境命令。

注解
  使用 std::system 实现；若参数为空则和 std::system 行为一致。

自从
  build 539

在文件 YCommon.cpp 第 58 行定义.

参考 NPL::c_str() , 以及 platform_ex::Windows::UTF8ToWCS.

参考自 NPL::A1::Forms::CallSystem().

函数调用图:

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

bool platform::uunlink | ( | const char * | path | ) |

在文件 FileIO.cpp 第 1073 行定义.

参考自 EnsureUniqueFile().

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

void platform::WaitForInput | ( |  | ) |

等待任意按键。

在文件 Input.cpp 第 46 行定义.

参考 platform_ex::FetchKeyDownState() , 以及 platform_ex::UpdateKeyStates().

参考自 YSLib::UI::Console::Pause().

函数调用图:

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

platform::while | ( | platform:: | IsSeparator_Ptag,*p | ) |

YF_API platform::YB_ATTR_gnu_printf | ( | 3 | ,
|  | 4 |
| ) |  |

格式输出日志字符串前追加记录源文件名和行号。

前置条件
  间接断言：第三参数非空。

注解
  允许第一参数为空指针，视为未知。
  当失败时调用 ystdex::trace 记录，但只保留参数中的文件名和行号。

自从
  build 593

platform::YB_NONNULL | ( | 1 |  | ) |

inline

构造适合表示路径的 `char` 字符串。

读取链接指向的路径。

尝试删除指定路径的文件后再以指定路径和模式创建常规文件。

取路径指定的文件链接数。

异常

  std::system_error | 参数无效或文件时间查询失败。

按路径移除一个文件。

按路径删除一个非目录文件。

按路径删除一个空目录。

按路径以默认权限新建一个目录。

切换当前工作路径至指定路径。

取当前工作目录复制至指定缓冲区中。

判断指定 UCS-2 文件名的文件是否存在。

以 UTF-8 文件名打开文件。

以 UCS-2 文件名无缓冲打开文件。

以 UTF-8 文件名无缓冲打开文件。

测试路径可访问性。

注解
  字符类型非 `char` 时转换。

自从
  build 634

前置条件
  间接断言：参数非空。
  断言：第一参数非空。

注解
  若存储分配失败，设置 errno 为 `ENOMEM` 。

自从
  build 669

参数

  path | 路径，意义同 POSIX `::open` 。
  amode | 模式，基本语义同 POSIX.1 2004 ，具体行为取决于实现。 。

注解
  errno 在出错时会被设置，具体值由实现定义。

参数

  filename | 文件名，意义同 POSIX `::open` 。
  oflag | 打开旗标，基本语义同 POSIX.1 2004 ，具体行为取决于实现。
  pmode | 打开模式，基本语义同 POSIX.1 2004 ，具体行为取决于实现。

自从
  build 720

参数

  filename | 文件名，意义同 std::fopen 。
  mode | 打开模式，基本语义同 ISO C11 ，具体行为取决于实现。

前置条件
  断言：`mode && *mode != 0` 。以 UCS-2 文件名打开文件。

参数

  mode | 打开模式，基本语义与 ISO C++11 对应，具体行为取决于实现。 以 UTF-8 文件名打开文件。 以 UCS-2 文件名打开文件。

注解
  使用 ufopen 二进制只读模式打开测试实现。 判断指定 UTF-8 文件名的文件是否存在。

参数

  size | 缓冲区长。

返回
  若成功为第一参数，否则为空指针。

注解
  基本语义同 POSIX.1 2004 的 `::getcwd` 。
  Win32 平台：当且仅当结果为根目录时以分隔符结束。
  其它平台：未指定结果是否以分隔符结束。

自从
  build 699

参数

  buf | UTF-8 缓冲区起始指针。
  buf | UCS-2 缓冲区起始指针。

前置条件
  断言：参数非空。

返回
  操作是否成功。

注解
  errno 在出错时会被设置，具体值除以上明确的外，由实现定义。
  参数表示路径，使用 UTF-8 编码。
  DS 使用 newlib 实现。 MinGW32 使用 MSVCRT 实现。 Android 使用 bionic 实现。 其它 Linux 使用 GLibC 实现。
  POSIX 平台：除路径和返回值外语义同 `::chdir` 。
  权限由实现定义： DS 使用最大权限； MinGW32 使用 `::_wmkdir` 指定的默认权限。
  POSIX 平台：除路径和返回值外语义同 `::rmdir` 。
  POSIX 平台：除路径和返回值外语义同 `::unlink` 。
  Win32 平台：支持移除只读文件，但删除打开的文件总是失败。
  POSIX 平台：除路径和返回值外语义同 `::remove` 。移除非空目录总是失败。
  Win32 平台：支持移除空目录和只读文件，但删除打开的文件总是失败。

参见
  https://msdn.microsoft.com/en-us/library/kc07117k.aspx 。
  FileDescriptor::GetAccessTime

自从
  build 631

参见
  FileDescriptor::GetModificationTime

自从
  build 628

参见
  FileDescriptor::GetModificationAndAccessTime

自从
  build 631

返回
  若成功为连接数，否则若文件不存在时为 0 。

注解
  最后参数表示跟随连接：若文件系统支持，访问链接的文件而不是链接自身。

自从
  build 719

前置条件
  间接断言：第一参数非空。

注解
  参数依次表示目标路径、打开模式、覆盖目标允许的链接数和是否允许共享覆盖。
  第二参数被限制 Mode::User 内。
  若目标已存在，创建或覆盖文件保证目标文件链接数不超过第三参数指定的值。
  若目标已存在、链接数大于 1 且不允许写入共享则先删除目标。
  忽略目标不存在导致的删除失败。

异常

  std::system_error | 创建目标失败。

自从
  build 639

异常

  std::invalid_argument | 指定的路径存在但不是连接。

注解
  支持 Windows 目录链接和符号链接，不特别区分。
  POSIX 平台：不同于 ::realpath ，分配合适的大小而不依赖 PATH_MAX 。自动重试 分配足够长的字符串以支持不完全符合 POSIX 的文件系统（如 Linux 的 procfs ） 导致文件大小为 0 时的情形。

自从
  build 660

在文件 YCLib/FileSystem.h 第 65 行定义.

参考 Nonnull(), ystdex::ntctschr() , 以及 CHRLib::p().

函数调用图:

YF_API platform::YB_NONNULL | ( | 1 | ,
|  | 2 |
| ) |  | const

比较文件内容相等。

创建符号链接。

创建硬链接。

异常

  std::system_error | 文件按流打开失败。

警告
  读取失败时即截断返回，因此需要另行比较文件大小。

参见
  IsNodeShared

自从
  build 658

首先比较文件节点，若为相同文件直接相等，否则清除 errno ，打开文件读取内容并比较。

注解
  间接断言：参数非空。

自从
  build 701

前置条件
  断言：路径指针非空。

异常

  Win32Exception | Win32 平台：本机 API 调用失败。

  std::system_error

  系统错误。
  - std::errc::function_not_supported 操作不被文件系统支持。
  - 可能有其它错误。

注解
  DS 平台：当前实现不支持替换文件系统，因此始终不支持操作。
  前两个参数为目标路径和源路径。
  源路径指定符号链接时，跟随符号链接目标。

自从
  build 633

注解
  第三参数指定是否创建目录链接。
  Win32 平台：成功调用需要操作系统和权限（或组策略）支持。
  非 Win32 平台：忽略第三参数。

自从
  build 651

platform::YCL_DefPlatformFwdTmpl | ( | IsSeparator | ,
|  | IsSeparator_P |
| ) |  |

判断指定路径字符串是否表示一个绝对路径。

待办事项:
  支持非 Win32 文件路径特化。
  参见
    FetchSeparator_P

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

注解
  一般字符串类型在此不支持，需另行重载，以避免空字符的语义问题和重载冲突。

待办事项:
  支持非 POSIX 文件路径特化。

注解
  空路径不是绝对路径。

platform::YCL_DefPlatformFwdTmpl | ( | IsAbsolute | ,
|  | IsAbsolute_P |
| ) |  |

取指定路径的文件系统根节点名称的长度。

自从
  build 652

注解
  计入可能存在的紧随在根名称后的一个或多个文件分隔符。

platform::YCL_DefPlatformFwdTmpl | ( | FetchRootNameLength | ,
|  | FetchRootNameLength_P |
| ) |  |

判断路径字符串是否以非分隔符结束。

自从
  build 653
  build 693

platform::YCL_DefPlatformFwdTmpl | ( | EndsWithNonSeperator | ,
|  | EndsWithNonSeperator_P |
| ) |  |

自从
  build 707

## 变量说明

YF_API const char16_t platform::bool = {})

在文件 FileIO.h 第 1280 行定义.

参考自 YSLib::DS::UI::DualScreenReader::AdjustScrollOffset(), ystdex::examiners::equal::are_equal(), ystdex::call_nonnull_or(), ystdex::call_value_or(), ystdex::invoke_value_or(), IsDirectory(), YSLib::Drawing::Typeface::LookupBitmap(), ystdex::native_little_bit_order(), ystdex::nonnull_or(), ystdex::nptr< _type >::operator bool(), ystdex::nptr< _type >::operator!(), ystdex::details::tcompare< _tWrappedKey, _fComp, false >::operator()(), ystdex::details::tcompare< _tWrappedKey, _fComp, true >::operator()(), ystdex::operator<(), ystdex::operator==(), ystdex::owns_any(), ystdex::owns_nonnull(), ystdex::owns_unique(), platform::FileDescriptor::SetBlocking(), platform::FileDescriptor::SetNonblocking(), ystdex::strict_all_of(), ystdex::strict_any_of() , 以及 ystdex::value_or().

platform::ComposeMessageWithSignature

在文件 Debug.h 第 464 行定义.

bool platform::follow_link

初始值:
{
struct ::stat st

在文件 FileIO.cpp 第 1177 行定义.

platform::GetFileAccessTimeOf

在文件 FileIO.h 第 1272 行定义.

array< FileTime, 2 > platform::GetFileModificationAndAccessTimeOf

在文件 FileIO.h 第 1312 行定义.

platform::GetFileModificationTimeOf

在文件 FileIO.h 第 1291 行定义.

const char *s platform::MakePathString

在文件 FileIO.h 第 62 行定义.

参考自 platform::FAT::LFN::ConvertToMBCS(), CreateHardLink(), CreateSymbolicLink(), IsDirectory(), ReadLink() , 以及 platform_ex::Windows::YB_NONNULL().

const string& platform::msg

在文件 Debug.h 第 464 行定义.

参考自 YSLib::Shells::Shell::DefShlProc(), YSLib::Messaging::MessageQueue::Push() , 以及 ystdex::yassert().

YF_API int platform::oflag

在文件 FileIO.h 第 542 行定义.

参考自 EnsureUniqueFile() , 以及 uopen().

_tString&& platform::path

在文件 YCLib/FileSystem.h 第 285 行定义.

参考自 FetchRootNameLength_P() , 以及 IsAbsolute_P().

YF_API int mode_t platform::pmode

初始值:
= DefaultPMode())
ynothrowv
ynothrowv
#define ynothrowv
YSLib 无异常抛出保证验证：有条件地使用无异常抛出规范。
Definition: ydef.h:786
platform::DefaultPMode
YF_API YB_STATELESS mode_t DefaultPMode() ynothrow
取默认权限。
Definition: FileIO.cpp:772

在文件 FileIO.h 第 542 行定义.

参考自 uopen().

const string const char* sig const char* platform::sig

初始值:
{
using ystdex::to_string
ystdex::to_string
std::string to_string(const std::thread::id &)
转换 thread::id 为字符串表示。

在文件 Debug.h 第 473 行定义.

参考自 ystdex::reraise() , 以及 ystdex::restore_signal().

YF_API platform::size_t = 1

在文件 FileIO.h 第 1353 行定义.

参考自 YSLib::UI::AMUnitList::AdjustViewLengthForHeight(), YSLib::Drawing::BlitScaleComponent(), YSLib::UI::AMUnitList::CheckPoint(), YSLib::Drawing::ClearImage(), FetchCurrentWorkingDirectory(), FetchLimit(), YSLib::Drawing::Fill(), YSLib::GetLastIndexOf(), YSLib::Drawing::FontCache::LoadTypefaces(), YSLib::FPSCounter::Refresh(), YSLib::ArgumentsVector::Reset(), ystdex::temporary_buffer< _type >::temporary_buffer(), YSLib::UI::TreeList::TreeList() , 以及 ystdex::vfmtlen().

return st platform::st_nlink

在文件 FileIO.cpp 第 1186 行定义.

_tString ystdex::string_traits<_tString>::const_pointer platform::tail

在文件 YCLib/FileSystem.h 第 286 行定义.

参考自 NPL::A1::Forms::Cons() , 以及 YSLib::IO::NormalizeDirectoryPathTail().

const _tString& path platform::ynothrow

初始值:
{
return !path.empty() && !platform::IsSeparator_P(tag, path.back())
platform::path
_tString && path
Definition: YCLib/FileSystem.h:285
platform::IsSeparator_P
YCL_Tag_constfn YB_STATELESS bool IsSeparator_P(IDTag< YF_Platform_Win32 > tag, _tChar c) ynothrow
Definition: YCLib/FileSystem.h:100

在文件 YCLib/FileSystem.h 第 274 行定义.

const _tChar *path platform::ynothrowv

初始值:
{
return
platform::IsSeparator_P(tag, Deref(path)) || platform::FindColon(path)
platform::Deref
yconstfn auto Deref(_type &&p) -> decltype(*p)
断言并解引用非空指针。
Definition: Debug.h:451
platform::IsSeparator_P
YCL_Tag_constfn YB_STATELESS bool IsSeparator_P(IDTag< YF_Platform_Win32 > tag, _tChar c) ynothrow
Definition: YCLib/FileSystem.h:100
YSLib::path
YF_API const char * path
Definition: Initialization.h:77

在文件 FileIO.h 第 528 行定义.