YSTest: platform 命名空间参考

YSTest PreAlpha_b900_20201012 The YSLib Test Project

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

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

## 命名空间

| basic_types
| basic_utilities
| Concurrency
| containers
| Descriptions
| 平台描述空间。
| FAT
| 文件分配表接口。
| IndexSpace
| 索引空间。
| AXYZIndex
| AXYZ 分量索引。
| AXYZMapping
| AXYZ 分量索引映射。
| AZYXMapping
| AZYX 分量索引映射。
| ios
| KeyCategory
| 按键类别。
| KeyCodes
| 本机按键编码。
| references
| strings
| Threading

## 类

struct | AXYZValueTraits
| 逻辑分量值特征。 更多...
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

## 类型定义

template<typename _type , class _tAlloc = pmr::polymorphic_allocator<_type>>
using | deque = std::deque< _type, _tAlloc >
template<typename _type , class _tAlloc = pmr::polymorphic_allocator<_type>>
using | forward_list = std::forward_list< _type, _tAlloc >
template<typename _type , class _tAlloc = pmr::polymorphic_allocator<_type>>
using | list = ystdex::list< _type, _tAlloc >
template<typename _type , class _tAlloc = pmr::polymorphic_allocator<_type>>
using | vector = std::vector< _type, _tAlloc >
template<typename _tKey , typename _tMapped , typename _fComp = ystdex::less<_tKey>, class _tAlloc = pmr::polymorphic_allocator<std::pair<const _tKey, _tMapped>>>
using | map = ystdex::map< _tKey, _tMapped, _fComp, _tAlloc >
template<typename _tKey , typename _tMapped , typename _fComp = ystdex::less<_tKey>, class _tAlloc = pmr::polymorphic_allocator<std::pair<const _tKey, _tMapped>>>
using | multimap = std::multimap< _tKey, _tMapped, _fComp, _tAlloc >
template<typename _tKey , typename _fComp = ystdex::less<_tKey>, class _tAlloc = pmr::polymorphic_allocator<_tKey>>
using | multiset = std::multiset< _tKey, _fComp, _tAlloc >
template<typename _tKey , typename _fComp = ystdex::less<_tKey>, class _tAlloc = pmr::polymorphic_allocator<_tKey>>
using | set = std::set< _tKey, _fComp, _tAlloc >
template<typename _tKey , typename _tMapped , typename _fHash = std::hash<_tKey>, typename _fEqual = ystdex::equal_to<_tKey>, class _tAlloc = pmr::polymorphic_allocator<std::pair<const _tKey, _tMapped>>>
using | unordered_map = std::unordered_map< _tKey, _tMapped, _fHash, _fEqual, _tAlloc >
template<typename _tKey , typename _tMapped , typename _fHash = std::hash<_tKey>, typename _fEqual = ystdex::equal_to<_tKey>, class _tAlloc = pmr::polymorphic_allocator<std::pair<const _tKey, _tMapped>>>
using | unordered_multimap = std::unordered_multimap< _tKey, _tMapped, _fHash, _fEqual, _tAlloc >
template<typename _tKey , typename _fHash = std::hash<_tKey>, typename _fEqual = ystdex::equal_to<_tKey>, class _tAlloc = pmr::polymorphic_allocator<_tKey>>
using | unordered_multiset = std::unordered_multiset< _tKey, _fHash, _fEqual, _tAlloc >
template<typename _tKey , typename _fHash = std::hash<_tKey>, typename _fEqual = ystdex::equal_to<_tKey>, class _tAlloc = pmr::polymorphic_allocator<_tKey>>
using | unordered_set = std::unordered_set< _tKey, _fHash, _fEqual, _tAlloc >
template<typename _type , class _tSeqCon = deque<_type>>
using | stack = std::stack< _type, _tSeqCon >
template<typename _tKey , class _tSeqCon = vector<_tKey>, class _fComp = ystdex::less<_tKey>>
using | priority_queue = std::priority_queue< _tKey, _tSeqCon, _fComp >
template<typename _type , class _tSeqCon = deque<_type>>
using | queue = std::queue< _type, _tSeqCon >
template<typename _tChar , typename _tTraits = std::char_traits<_tChar>, class _tAlloc = pmr::polymorphic_allocator<_tChar>>
using | basic_string = ystdex::basic_string< _tChar, _tTraits, _tAlloc >
| 满足 ISO C++03 std::basic_string 但不保证满足 ISO C++11 的实现。 更多...
using | string = basic_string< char >
using | u16string = basic_string< char16_t >
using | u32string = basic_string< char32_t >
using | wstring = basic_string< wchar_t >
template<typename _tChar , class _tTraits = typename basic_string<_tChar>::traits_type, class _tAlloc = typename basic_string<_tChar>::allocator_type>
using | basic_stringbuf = std::basic_stringbuf< _tChar, _tTraits, _tAlloc >
template<class _tString >
using | stringbuf_for = basic_stringbuf< typename _tString::value_type, typename _tString::traits_type, typename _tString::allocator_type >
using | stringbuf = stringbuf_for< string >
using | wstringbuf = stringbuf_for< wstring >
template<typename _tChar , class _tTraits = typename basic_string<_tChar>::traits_type, class _tAlloc = typename basic_string<_tChar>::allocator_type>
using | basic_istringstream = std::basic_istringstream< _tChar, _tTraits, _tAlloc >
template<class _tString >
using | istringstream_for = basic_istringstream< typename _tString::value_type, typename _tString::traits_type, typename _tString::allocator_type >
using | istringstream = istringstream_for< string >
using | wistringstream = istringstream_for< wstring >
template<typename _tChar , class _tTraits = typename basic_string<_tChar>::traits_type, class _tAlloc = typename basic_string<_tChar>::allocator_type>
using | basic_ostringstream = std::basic_ostringstream< _tChar, _tTraits, _tAlloc >
template<class _tString >
using | ostringstream_for = basic_ostringstream< typename _tString::value_type, typename _tString::traits_type, typename _tString::allocator_type >
using | ostringstream = ostringstream_for< string >
using | wostringstream = ostringstream_for< wstring >
template<typename _tChar , class _tTraits = typename basic_string<_tChar>::traits_type, class _tAlloc = typename basic_string<_tChar>::allocator_type>
using | basic_stringstream = std::basic_stringstream< _tChar, _tTraits, _tAlloc >
template<class _tString >
using | stringstream_for = basic_stringstream< typename _tString::value_type, typename _tString::traits_type, typename _tString::allocator_type >
using | stringstream = stringstream_for< string >
using | wstringstream = stringstream_for< wstring >
using | mode_t = DefaultPMode()
| 文件模式类型。 更多...
using | UniqueFile = unique_ptr_from< FileDescriptor::Deleter >
using | KeyIndex = size_t
| 按键索引类型：标识特定的按键在按键集合中的位置。 更多...
using | KeyInput = std::bitset< KeyBitsetWidth >
| 按键并行位宽。 更多...
using | FileMappingKey = ystdex::pseudo_output
| 文件映射键类型。 更多...
using | ssize_t = ystdex::make_signed_t< std::size_t >
template<class _tDeleter , typename _tDefault = void>
using | unique_ptr_from = unique_ptr< ystdex::defer_element< ystdex::unique_ptr_pointer< void, _tDeleter >, _tDefault >, _tDeleter >
| 取删除器对应的 unique_ptr 实例。 更多...
using | SPos = std::int16_t
| 屏幕坐标度量。 更多...
using | SDst = std::uint16_t
| 屏幕坐标距离。 更多...
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 | ID = std::uintmax_t
| `YF_Platform_*` 宏替换值的公共类型。 更多...
template<ID _vN>
using | MetaID = std::integral_constant< ID, _vN >
| `YF_Platform_*` 宏替换值的对应的元类型。 更多...

## 枚举

enum | FileMappingOption { FileMappingOption::ReadOnly, FileMappingOption::ReadWrite, FileMappingOption::CopyOnWrite }
| 文件映射选项。 更多...
enum | SystemOption { SystemOption::PageSize, SystemOption::MaxSemaphoreNumber, SystemOption::MaxSemaphoreValue, SystemOption::MaxSymlinkLoop }
| 系统配置选项。 更多...

## 函数

template<typename _tChar , class _tString = basic_string<_tChar>>
_tString | to_pmr_string (basic_string_view< _tChar > sv)
template<typename _tChar , class _tString = basic_string<_tChar>, class _tTraits , class _tAlloc , typename = yimpl(ystdex::enable_if_inconvertible_t)< const std::basic_string<_tChar, _tTraits, _tAlloc>&, _tString>>
_tString | to_pmr_string (const std::basic_string< _tChar, _tTraits, _tAlloc > &str)
template<class _tString = string, class _tParam = _tString, yimpl(typename=ystdex::enable_if_convertible_t< _tParam, _tString >) >
_tString | to_pmr_string (_tParam &&str)
template<typename _tChar , class _tString = std::basic_string<_tChar>>
_tString | to_std_string (basic_string_view< _tChar > sv)
template<typename _tChar , class _tString = std::basic_string<_tChar>, class _tTraits , class _tAlloc , typename = yimpl(ystdex::enable_if_inconvertible_t)< const basic_string<_tChar, _tTraits, _tAlloc>&, _tString>>
_tString | to_std_string (const basic_string< _tChar, _tTraits, _tAlloc > &str)
template<class _tString = std::string, class _tParam = _tString, yimpl(typename=ystdex::enable_if_convertible_t< _tParam, _tString >) >
_tString | to_std_string (_tParam &&str)
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 *,...)
template<typename _type >
YB_PURE _type && | Nonnull (_type &&p) ynothrowv
| 断言并返回非空参数。 更多...
template<typename _type >
YB_PURE _type && | FwdIter (_type &&i) ynothrowv
| 断言并返回可解引用的迭代器。 更多...
template<typename _type >
YB_PURE yconstfn auto | Deref (_type &&p) -> decltype(*p)
| 断言并解引用非空指针。 更多...
| YB_NONNULL (2) YB_PURE inline PDefH(std
| 组合消息和函数签名字符串。 更多...
YB_ATTR_nodiscard | YB_NONNULL (1) inline PDefH(string
| 构造适合表示路径的 `char` 字符串。 更多...
YB_ATTR_nodiscard const char *s | ImplRet (Nonnull(s)) YB_ATTR_nodiscard inline PDefH(const string &
YB_ATTR_nodiscard const char *s const string &s | ImplRet (s) YB_ATTR_nodiscard YF_API YB_NONNULL(1) string MakePathString(const char16_t *)
YB_ATTR_nodiscard | PDefH (string, MakePathString, u16string_view sv) ImplRet(MakePathString(sv.data())) using FileNodeID
| 文件节点标识类型。 更多...
enum NodeCategory std::uint_least32_t YB_ATTR_nodiscard YF_API YB_STATELESS NodeCategory | CategorizeNode (mode_t) ynothrow
| 文件节点类别。 更多...
YB_ATTR_nodiscard YF_API YB_STATELESS mode_t | DefaultPMode () ynothrow
| 取默认权限。 更多...
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)) YB_ATTR_nodiscard YF_API YB_STATELESS int omode_conv(std YB_ATTR_nodiscard YF_API YB_STATELESS int | omode_convb (std::ios_base::openmode) ynothrow
| ISO C++ 标准输入输出接口打开模式转换为 POSIX 文件打开模式。 更多...
template<typename _tChar >
YB_ATTR_nodiscard basic_string< _tChar > | FetchCurrentWorkingDirectory (size_t init)
| 尝试按指定的起始缓冲区大小取当前工作目录的路径。 更多...
YB_ATTR_nodiscard std::FILE *fp | ImplRet (FileDescriptor(fp).GetAccessTime()) YB_ATTR_nodiscard YF_API YB_NONNULL(1) FileTime GetFileAccessTimeOf(const char *
YB_ATTR_nodiscard std::FILE *fp | ImplRet (FileDescriptor(fp).GetModificationTime()) YB_ATTR_nodiscard YF_API YB_NONNULL(1) FileTime GetFileModificationTimeOf(const char *
YB_ATTR_nodiscard std::FILE *fp | ImplRet (FileDescriptor(fp).GetModificationAndAccessTime()) YB_ATTR_nodiscard YF_API YB_NONNULL(1) array< FileTime
YB_ATTR_nodiscard std::FILE *fp | GetFileModificationAndAccessTimeOf (const char *, bool={})
YB_ATTR_nodiscard YF_API | GetFileModificationAndAccessTimeOf (const char16_t *, bool={})
YB_ATTR_nodiscard YF_API | YB_NONNULL (1, 2) bool HaveSameContents(const char *
| 比较文件内容相等。 更多...
YB_ATTR_nodiscard YF_API bool | HaveSameContents (UniqueFile, UniqueFile, const char *, const char *)
YB_ATTR_nodiscard YB_PURE yconstfn | PDefH (bool, IsNodeShared, const FileNodeID &x, const FileNodeID &y) ynothrow ImplRet(x !
| 判断参数是否表示共享的文件节点。 更多...
YB_ATTR_nodiscard YF_API bool | IsNodeShared (FileDescriptor, FileDescriptor) ynothrow
template<typename _tChar >
YB_ATTR_nodiscard YB_STATELESS yconstfn bool | IsColon (_tChar c) ynothrow
template<typename _tChar >
YB_STATELESS YCL_Tag_constfn _tChar | FetchSeparator_P (IDTag< YF_Platform_Win32 >) ynothrow
template<typename _tChar >
YB_STATELESS YCL_Tag_constfn _tChar | FetchSeparator_P (IDTagBase) ynothrow
template<typename _tChar >
YB_STATELESS yconstfn _tChar | FetchSeparator () ynothrow
template<typename _tChar >
YB_STATELESS YCL_Tag_constfn bool | IsSeparator_P (IDTag< YF_Platform_Win32 > tag, _tChar c) ynothrow
template<typename _tChar >
YB_STATELESS YCL_Tag_constfn bool | IsSeparator_P (IDTagBase tag, _tChar c) ynothrow
| YCL_DefPlatformFwdTmpl (IsSeparator, IsSeparator_P) template< typename _tChar > YB_ATTR_nodiscard YB_PURE YB_NONNULL(2) inline bool IsAbsolute_P(IDTag< YF_Platform_DS > tag
| 判断指定路径字符串是否表示一个绝对路径。 更多...
template<typename _tChar >
YB_ATTR_nodiscard YB_PURE bool | IsAbsolute_P (IDTag< YF_Platform_DS > tag, basic_string_view< _tChar > path) ynothrowv
template<typename _tChar >
YB_ATTR_nodiscard YB_PURE bool | IsAbsolute_P (IDTag< YF_Platform_Win32 > tag, basic_string_view< _tChar > path) ynothrowv
template<typename _tChar >
YB_ATTR_nodiscard YB_PURE bool | IsAbsolute_P (IDTagBase tag, basic_string_view< _tChar > path) ynothrowv
| YCL_DefPlatformFwdTmpl (IsAbsolute, IsAbsolute_P) template< typename _tChar > YB_ATTR_nodiscard YB_ATTR_returns_nonnull YB_NONNULL(2) YB_PURE inline const _tChar *FetchRootNameEnd_P(IDTag< YF_Platform_DS >
| 取指定路径的文件系统根节点名称的结束位置。 更多...
template<class _tTag , typename _tChar >
YB_ATTR_nodiscard YB_PURE basic_string_view< _tChar >::const_iterator | FetchRootNameEnd_P (_tTag, basic_string_view< _tChar >) ynothrowv
template<class _tTag , class _tString >
auto | FetchRootNameEnd_P (_tTag tag, const _tString &path) ynothrowv -> ystdex::exclude_self_t< string_view_t< _tString >, _tString, decltype(platform::FetchRootNameEnd_P(tag, string_view_t< _tString >(path)))>
| YCL_DefPlatformFwdTmpl (FetchRootNameEnd, FetchRootNameEnd_P) template< typename _tChar > YB_ATTR_nodiscard YB_PURE YB_NONNULL(2) inline size_t FetchRootNameLength_P(IDTag< YF_Platform_DS > tag
| 取指定路径的文件系统根节点名称的长度。 更多...
template<typename _tChar >
YB_ATTR_nodiscard YB_PURE size_t | FetchRootNameLength_P (IDTag< YF_Platform_DS >, basic_string_view< _tChar > path) ynothrowv
template<typename _tChar >
YB_ATTR_nodiscard YB_PURE YB_PURE size_t | FetchRootNameLength_P (IDTag< YF_Platform_Win32 > tag, basic_string_view< _tChar > path) ynothrowv
template<typename _tChar >
YB_ATTR_nodiscard YB_PURE size_t | FetchRootNameLength_P (IDTagBase tag, basic_string_view< _tChar > path) ynothrowv
template<class _tTag , class _tString >
auto | FetchRootNameLength_P (_tTag tag, const _tString &path) ynothrowv -> ystdex::exclude_self_t< string_view_t< _tString >, _tString, decltype(platform::FetchRootNameLength_P(tag, string_view_t< _tString >(path)))>
| YCL_DefPlatformFwdTmpl (FetchRootNameLength, FetchRootNameLength_P) template< typename _tChar > YB_ATTR_nodiscard YB_PURE YB_NONNULL(2) inline const _tChar *FetchRootNameEnd_P(IDTag< YF_Platform_Win32 > tag
| if (!p) p
| while (platform::IsSeparator_P(tag, *p))++p
return | size_t (p - path)
template<typename _tChar >
YB_ATTR_nodiscard YB_PURE size_t | FetchRootPathLength_P (IDTag< YF_Platform_DS >, basic_string_view< _tChar > path) ynothrowv
| if (l > 0)
template<typename _tChar >
YB_ATTR_nodiscard YB_PURE size_t | FetchRootPathLength_P (IDTag< YF_Platform_Win32 > tag, basic_string_view< _tChar > path) ynothrowv
template<typename _tChar >
YB_ATTR_nodiscard YB_PURE size_t | FetchRootPathLength_P (IDTagBase tag, basic_string_view< _tChar > path) ynothrowv
template<class _tTag , class _tString >
auto | FetchRootPathLength_P (_tTag tag, const _tString &path) ynothrowv -> ystdex::exclude_self_t< string_view_t< _tString >, _tString, decltype(platform::FetchRootPathLength_P(tag, string_view_t< _tString >(path)))>
| YCL_DefPlatformFwdTmpl (FetchRootPathLength, FetchRootPathLength_P) template< class _tString > YB_ATTR_nodiscard YB_PURE yconstfn bool EndsWithNonSeperator_P(IDTagBase tag
| 判断路径字符串是否以非分隔符结束。 更多...
| YCL_DefPlatformFwdTmpl (EndsWithNonSeperator, EndsWithNonSeperator_P) template< class _tString > YCL_Tag_constfn _tString &&TrimTrailingSeperator_P(IDTag< YF_Platform_Win32 >
YF_API bool | IterateLink (string &, size_t &)
| 迭代访问链接：替换非空路径并按需减少允许链接计数。 更多...
YF_API bool | IterateLink (u16string &, size_t &)
YF_API void | WaitForInput ()
| 等待任意按键。 更多...
YF_API YB_PURE KeyIndex | FindFirstKey (const KeyInput &) ynothrow
| 找到输入缓冲区记录中最小的按键编码。 更多...
YF_API YB_PURE KeyIndex | FindNextKey (const KeyInput &, KeyIndex) ynothrow
| 找到输入缓冲区记录中大于指定编码的最小的按键编码。 更多...
yconstfn | PDefH (char, MapKeyChar, KeyIndex) ynothrow ImplRet(
| 映射按键到键入的字符。 更多...
yconstfn | PDefH (char, MapKeyChar, const KeyInput &, KeyIndex) ynothrow ImplRet(
YF_API std::uint32_t | GetTicks () ynothrow
| 取 tick 数。 更多...
YF_API std::uint64_t | GetHighResolutionTicks () ynothrow
| 取高精度 tick 数。 更多...
YF_API void | InitVideo () yimpl(ynothrow)
| 初始化视频输出。 更多...
YB_NORETURN YF_API void | terminate () ynothrow
| 终止函数。 更多...
YB_STATELESS | PDefH (bool, IsPrint, char c) ImplRet(ystdex
| 检查默认区域下指定字符是否为可打印字符。 更多...
| PDefH (ystdex::uchar_t *, ucast, wchar_t *p) ynothrow ImplRet(ystdex
| 调用并捕获异常。 更多...
template<typename _func , typename _type = ystdex::invoke_result_t<_func&>>
_type | RetryOnInterrupted (_func f)
| 循环可能被中断的操作。 更多...
YF_API int | uspawn (const char *)
| 执行 UTF-8 字符串的环境命令。 更多...
YF_API int | usystem (const char *)
| 执行 UTF-8 字符串的环境命令。 更多...
YF_API size_t | FetchLimit (SystemOption) 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
std::FILE * | upopen (const char *filename, const char *mode) ynothrowv
std::FILE * | upopen (const char16_t *filename, const char16_t *mode) ynothrowv
int | upclose (std::FILE *fp) 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)
void | SetEnvironmentVariable (const char *envname, const char *envval)

## 变量

YB_ATTR_nodiscard | MakePathString
YB_ATTR_nodiscard YF_API int amode | ynothrowv
YB_ATTR_nodiscard YF_API int | oflag
YB_ATTR_nodiscard YF_API int mode_t | pmode
YB_ATTR_nodiscard | GetFileAccessTimeOf
YB_ATTR_nodiscard std::FILE *fp | bool = {})
YB_ATTR_nodiscard | GetFileModificationTimeOf
YB_ATTR_nodiscard | GetFileModificationAndAccessTimeOf
YB_ATTR_nodiscard YF_API | size_t = 1
return p | p
return | l
const _tString &path | ynothrow
_tString && | path
_tString ystdex::string_traits< _tString >::const_pointer | tail
bool | follow_link
return st | st_nlink

## 详细描述

默认平台命名空间。

自从
  build 680
  build 490

## 类型定义说明

## ◆ ABGR

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

## ◆ ARGB

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

## ◆ AXYZTraits

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

## ◆ BGRA

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

## ◆ FileMappingKey

using platform::FileMappingKey = typedef ystdex::pseudo_output

文件映射键类型。

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

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

## ◆ KeyIndex

using platform::KeyIndex = typedef size_t

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

自从
  build 490

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

## ◆ KeyInput

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

按键并行位宽。

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

自从
  build 490

本机输入类型。

自从
  build 298

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

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

## ◆ MetaID

template<ID _vN>

using platform::MetaID = typedef std::integral_constant<ID, _vN>

`YF_Platform_*` 宏替换值的对应的元类型。

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

## ◆ mode_t

YB_ATTR_nodiscard YF_API const char16_t platform::mode_t = DefaultPMode()

文件模式类型。

自从
  build 626

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

## ◆ RGBA

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

## ◆ SDst

using platform::SDst = typedef std::uint16_t

屏幕坐标距离。

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

## ◆ SPos

using platform::SPos = typedef std::int16_t

屏幕坐标度量。

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

## ◆ ssize_t

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

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

## ◆ UniqueFile

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

自从
  build 626

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

## ◆ XYZATraits

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

## 枚举类型说明

## ◆ FileMappingOption

enum platform::FileMappingOption

strong

文件映射选项。

自从
  build 711

枚举值
ReadOnly |
ReadWrite |
CopyOnWrite |

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

## ◆ SystemOption

enum platform::SystemOption

strong

系统配置选项。

自从
  build 704

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

枚举值

PageSize

内存页面字节数。

注解
  0 表示不支持分页。

自从
  build 712

MaxSemaphoreNumber

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

自从
  build 720

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

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

## 函数说明

## ◆ CategorizeNode()

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

strong

文件节点类别。

自从
  build 412

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

引用了 platform::KeyCategory::Character, platform_ex::Windows::Directory, platform::KeyCodes::Win32::Empty , 以及 YB_UNLIKELY.

被这些函数引用 platform::FileDescriptor::GetCategory() , 以及 platform::HDirectory::GetNodeCategory().

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

## ◆ CreateHardLink() [1/2]

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

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

引用了 NPL::c_str(), CreateHardLink(), NPL::dst, Nonnull(), YSLib::Drawing::src, ystdex::throw_error(), YAssertNonnull, YCL_CallF_CAPI , 以及 yfsig.

被这些函数引用 NPL::InstallHardLink().

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

## ◆ CreateHardLink() [2/2]

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

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

引用了 NPL::c_str(), NPL::dst, MakePathString, YSLib::Drawing::src, ystdex::throw_error(), YAssertNonnull, YCL_CallF_Win32 , 以及 yfsig.

被这些函数引用 CreateHardLink().

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

## ◆ CreateSymbolicLink() [1/2]

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

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

引用了 NPL::c_str(), CreateSymbolicLink(), NPL::dst, Nonnull(), YSLib::Drawing::src, ystdex::throw_error(), YCL_CallF_CAPI, yfsig , 以及 yunused.

被这些函数引用 NPL::InstallSymbolicLink().

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

## ◆ CreateSymbolicLink() [2/2]

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

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

引用了 NPL::c_str(), NPL::dst, MakePathString, YSLib::Drawing::src, ystdex::throw_error(), yfsig , 以及 yunused.

被这些函数引用 CreateSymbolicLink().

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

## ◆ cstat()

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

被这些函数引用 platform::FileDescriptor::GetMode().

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

## ◆ DefaultPMode()

mode_t platform::DefaultPMode | ( |  | ) |

取默认权限。

自从
  build 638

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

## ◆ Deref()

template<typename _type >

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

断言并解引用非空指针。

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

自从
  build 553

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

引用了 FwdIter(), p , 以及 yforward.

被这些函数引用 YSLib::Drawing::NativeFontSize::Activate(), YSLib::GHEvent< _tRet(_tParams...)>::GEquality< _fCallable >::AreEqual(), YSLib::GHEvent< _tRet(_tParams...)>::GEqualityExpanded< _fCallable >::AreEqual(), NPL::Environment::Bind(), NPL::A1::BindParameter(), NPL::A1::Forms::CallBinary(), NPL::A1::Forms::CallBinaryAs(), NPL::A1::Forms::CallBinaryFold(), NPL::A1::Forms::CallRawUnary(), NPL::A1::Forms::CheckListReference(), platform_ex::ClearKeyStates(), NPL::A1::Forms::Cond(), NPL::SXML::ConvertAttributeNodeString(), NPL::SXML::ConvertDocumentNode(), NPL::Environment::DefDeMoveAssignment(), YSLib::Devices::InputManager::DispatchInput(), YSLib::FetchCachedCommandResult(), YSLib::FetchShell(), YSLib::AllocatedHolderOperations< _tHolder, _tByteAlloc >::GetByteAllocatorOf(), YSLib::GUIApplication::GetEnvironmentRef(), YSLib::ValueObject::GetHolderRef(), platform::HDirectory::GetNodeCategory(), YSLib::ValueObject::GetObject(), YSLib::UI::AMUnitControlList::GetUnitRef(), YSLib::Drawing::ImageTag::GetValue(), YSLib::UI::ImplDeDtor(), YSLib::DS::UI::DualScreenReader::Locate(), main(), NPL::MoveResolved(), YSLib::UI::MoveToBottom(), YSLib::UI::MoveToCenter(), YSLib::UI::MoveToRight(), YSLib::Application::OnGotMessage(), YSLib::Drawing::CopyLine< _bDec >::operator()(), NPL::A1::SeparatorTransformer::operator()(), YSLib::Text::TextFileBuffer::iterator::operator*(), YSLib::Text::TextFileBuffer::iterator::operator++(), YSLib::Text::TextFileBuffer::iterator::operator--(), NPL::A1::ReduceCombinedBranch(), NPL::A1::Internals::ReduceForCombinerRef(), NPL::A1::ReduceToLoadExternal(), NPL::ReduceToReferenceAt(), YSLib::DS::UI::DualScreenReader::ScrollByPixel(), YSLib::ValueNode::SplitChildren(), YSLib::UI::WidgetLoader::TransformUILayout(), ufopen(), upopen(), YSLib::UI::Widget::WrapRenderer(), platform_ex::Windows::YB_NONNULL(), YCL_DefPlatformFwdTmpl() , 以及 YSLib::Drawing::Typeface::~Typeface().

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

## ◆ Echo()

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

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

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

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

自从
  build 742

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

## ◆ EnsureUniqueFile()

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

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

引用了 NPL::dst, oflag, uopen(), uunlink(), YCL_Raise_SysE, yconstexpr , 以及 yfsig.

被这些函数引用 YSLib::IO::CopyFile().

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

## ◆ FetchCommonLogger()

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

取公共日志记录器。

自从
  build 498

被这些函数引用 YSLib::Environment::Environment().

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

## ◆ FetchCurrentWorkingDirectory()

template<typename _tChar >

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

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

自从
  build 713

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

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

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

引用了 YSLib::Drawing::r, size_t, ystdex::throw_error(), ugetcwd() , 以及 yfsig.

函数调用图:

## ◆ FetchLimit()

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

引用了 ystdex::cpp2014::max(), MaxSemaphoreNumber, MaxSemaphoreValue, MaxSymlinkLoop, PageSize, size_t, platform::Descriptions::Warning , 以及 YTraceDe.

函数调用图:

## ◆ FetchRootNameEnd_P() [1/2]

template<class _tTag , class _tString >

auto platform::FetchRootNameEnd_P | ( | _tTag | tag,
|  | const _tString & | path
| ) |  | -> ystdex::exclude_self_t<string_view_t<_tString>, _tString, decltype(platform::FetchRootNameEnd_P(tag, string_view_t<_tString>(path)))>

inline

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

## ◆ FetchRootNameEnd_P() [2/2]

template<class _tTag , typename _tChar >

YB_ATTR_nodiscard YB_PURE basic_string_view< _tChar >::const_iterator platform::FetchRootNameEnd_P | ( | _tTag | tag,
|  | basic_string_view< _tChar > | path
| ) |  |

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

引用了 FetchRootNameLength_P() , 以及 path.

被这些函数引用 YCL_DefPlatformFwdTmpl().

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

## ◆ FetchRootNameLength_P() [1/4]

template<class _tTag , class _tString >

auto platform::FetchRootNameLength_P | ( | _tTag | tag,
|  | const _tString & | path
| ) |  | -> ystdex::exclude_self_t<string_view_t<_tString>, _tString, decltype(platform::FetchRootNameLength_P(tag, string_view_t<_tString>(path)))>

inline

自从
  build 836

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

引用了 FetchRootNameLength_P() , 以及 path.

函数调用图:

## ◆ FetchRootNameLength_P() [2/4]

template<typename _tChar >

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

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

引用了 path , 以及 YAssertNonnull.

被这些函数引用 FetchRootNameEnd_P(), FetchRootNameLength_P() , 以及 FetchRootPathLength_P().

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

## ◆ FetchRootNameLength_P() [3/4]

template<typename _tChar >

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

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

引用了 IsColon(), IsSeparator_P(), l, ystdex::cpp2014::min(), path , 以及 YAssertNonnull.

函数调用图:

## ◆ FetchRootNameLength_P() [4/4]

template<typename _tChar >

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

inline

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

引用了 IsSeparator_P(), path , 以及 YAssertNonnull.

函数调用图:

## ◆ FetchRootPathLength_P() [1/4]

template<class _tTag , class _tString >

auto platform::FetchRootPathLength_P | ( | _tTag | tag,
|  | const _tString & | path
| ) |  | -> ystdex::exclude_self_t<string_view_t<_tString>, _tString, decltype(platform::FetchRootPathLength_P(tag, string_view_t<_tString>(path)))>

inline

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

## ◆ FetchRootPathLength_P() [2/4]

template<typename _tChar >

YB_ATTR_nodiscard YB_PURE size_t platform::FetchRootPathLength_P | ( | IDTag< YF_Platform_DS > | ,
|  | basic_string_view< _tChar > | path
| ) |  |

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

引用了 path , 以及 YAssertNonnull.

## ◆ FetchRootPathLength_P() [3/4]

template<typename _tChar >

YB_ATTR_nodiscard YB_PURE size_t platform::FetchRootPathLength_P | ( | IDTag< YF_Platform_Win32 > | tag,
|  | basic_string_view< _tChar > | path
| ) |  |

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

引用了 FetchRootNameLength_P(), l , 以及 path.

函数调用图:

## ◆ FetchRootPathLength_P() [4/4]

template<typename _tChar >

YB_ATTR_nodiscard YB_PURE size_t platform::FetchRootPathLength_P | ( | IDTagBase | tag,
|  | basic_string_view< _tChar > | path
| ) |  |

inline

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

引用了 IsSeparator_P(), path , 以及 YAssertNonnull.

函数调用图:

## ◆ FetchSeparator()

template<typename _tChar >

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

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

## ◆ FetchSeparator_P() [1/2]

template<typename _tChar >

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

自从
  build 705

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

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

## ◆ FetchSeparator_P() [2/2]

template<typename _tChar >

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

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

## ◆ FindFirstKey()

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

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

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

自从
  build 490

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

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

被这些函数引用 platform::KeyCategory::FindFirstKeyInCategroy().

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

## ◆ FindNextKey()

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

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

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

自从
  build 490

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

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

被这些函数引用 platform::KeyCategory::FindFirstKeyInCategroy().

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

## ◆ FwdIter()

template<typename _type >

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

inline

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

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

自从
  build 702

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

引用了 YSLib::i, ystdex::is_undereferenceable(), YAssert , 以及 yforward.

被这些函数引用 Deref().

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

## ◆ GetFileAccessTimeOf() [1/2]

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

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

引用了 follow_link.

## ◆ GetFileAccessTimeOf() [2/2]

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

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

引用了 follow_link.

## ◆ GetFileModificationAndAccessTimeOf() [1/2]

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

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

引用了 follow_link.

## ◆ GetFileModificationAndAccessTimeOf() [2/2]

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

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

引用了 follow_link.

## ◆ GetFileModificationTimeOf() [1/2]

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

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

引用了 follow_link.

## ◆ GetFileModificationTimeOf() [2/2]

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

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

引用了 follow_link.

## ◆ GetHighResolutionTicks()

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

取高精度 tick 数。

注解
  单位为纳秒。

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

自从
  build 555

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

被这些函数引用 YSLib::FPSCounter::Refresh().

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

## ◆ GetTicks()

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

取 tick 数。

注解
  单位为毫秒。

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

自从
  build 555

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

## ◆ HaveSameContents() [1/3]

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

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

引用了 HaveSameContents().

函数调用图:

## ◆ HaveSameContents() [2/3]

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

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

被这些函数引用 HaveSameContents().

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

## ◆ HaveSameContents() [3/3]

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

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

自从
  build 658

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

引用了 NPL::c_str(), platform_ex::Windows::Directory, IsNodeShared(), Nonnull(), ystdex::streambuf_equal() , 以及 ystdex::throw_error().

被这些函数引用 NPL::InstallFile().

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

## ◆ if() [1/2]

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

## ◆ if() [2/2]

platform::if | ( | l | ,
|  | 0 |
| ) |  |

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

引用了 ystdex::is_null(), IsSeparator_P(), l, p , 以及 path.

函数调用图:

## ◆ ImplRet() [1/5]

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

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

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

## ◆ ImplRet() [2/5]

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

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

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

## ◆ ImplRet() [3/5]

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

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

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

## ◆ ImplRet() [4/5]

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

被这些函数引用 PDefH().

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

## ◆ ImplRet() [5/5]

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

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

## ◆ InitVideo()

void platform::InitVideo | ( |  | ) |

初始化视频输出。

警告
  不保证线程安全性。

注解
  当前除 DS 平台外实现为空。

自从
  build 846
  build 441

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

## ◆ IsAbsolute_P() [1/3]

template<typename _tChar >

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

inline

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

引用了 IsSeparator_P(), path , 以及 YAssertNonnull.

函数调用图:

## ◆ IsAbsolute_P() [2/3]

template<typename _tChar >

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

inline

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

引用了 IsColon(), IsSeparator_P(), path , 以及 YAssertNonnull.

函数调用图:

## ◆ IsAbsolute_P() [3/3]

template<typename _tChar >

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

inline

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

引用了 IsSeparator_P(), path , 以及 YAssertNonnull.

函数调用图:

## ◆ IsColon()

template<typename _tChar >

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

自从
  build 654

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

引用了 CHRLib::c.

被这些函数引用 FetchRootNameLength_P() , 以及 IsAbsolute_P().

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

## ◆ IsDirectory() [1/2]

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

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

引用了 bool, NPL::c_str(), platform_ex::Windows::Directory, IsDirectory() , 以及 YSLib::path.

函数调用图:

## ◆ IsDirectory() [2/2]

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

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

引用了 NPL::c_str(), platform_ex::Windows::Directory, platform_ex::Windows::Invalid, MakePathString , 以及 YSLib::path.

被这些函数引用 IsDirectory().

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

## ◆ IsNodeShared() [1/3]

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

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

引用了 YSLib::a, follow_link, Nonnull() , 以及 ystdex::ntctscmp().

函数调用图:

## ◆ IsNodeShared() [2/3]

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

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

引用了 YSLib::a, follow_link, Nonnull() , 以及 ystdex::ntctscmp().

被这些函数引用 HaveSameContents().

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

## ◆ IsNodeShared() [3/3]

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

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

参见
  FileDescriptor::GetNodeID

自从
  build 846

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

引用了 x , 以及 YSLib::UI::y.

## ◆ IsSeparator_P() [1/2]

template<typename _tChar >

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

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

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

引用了 CHRLib::c.

被这些函数引用 FetchRootNameLength_P(), FetchRootPathLength_P(), if(), IsAbsolute_P() , 以及 YCL_DefPlatformFwdTmpl().

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

## ◆ IsSeparator_P() [2/2]

template<typename _tChar >

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

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

引用了 CHRLib::c.

## ◆ IterateLink() [1/2]

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

引用了 YSLib::path.

被这些函数引用 YSLib::IO::ImplExpr().

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

## ◆ IterateLink() [2/2]

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

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

引用了 YSLib::path.

## ◆ LogWithSource()

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

## ◆ MakePathString()

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

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

引用了 CHRLib::s , 以及 platform_ex::Windows::WCSToUTF8.

被这些函数引用 uaccess(), ufopen(), ugetcwd(), uopen() , 以及 upopen().

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

## ◆ Nonnull()

template<typename _type >

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

inline

断言并返回非空参数。

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

自从
  build 702

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

引用了 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::UI::empty(), YSLib::Environment::Environment(), NPL::A1::EvaluateIdentifier(), YSLib::FetchEnvironmentVariable(), HaveSameContents(), IsNodeShared(), PDefH(), YSLib::Drawing::PlotHLineSeg(), YSLib::Drawing::PlotVLineSeg(), NPL::PrepareCollapse(), ReadLink(), YSLib::ArgumentsVector::Reset(), SetBinaryIO(), SetEnvironmentVariable(), YSLib::ValueNode::ThrowWrongNameFound(), YSLib::Drawing::to_string(), YSLib::Text::VerifyEncoding(), platform_ex::Windows::RegistryKey::YB_NONNULL() , 以及 YB_NONNULL().

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

## ◆ omode_conv()

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

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

引用了 YSLib::IO::int , 以及 platform::KeyCategory::None.

被这些函数引用 omode_convb().

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

## ◆ omode_convb()

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

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

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

自从
  build 648

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

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

引用了 YSLib::IO::int , 以及 omode_conv().

被这些函数引用 NPL::A1::Forms::LoadModule_SHBuild().

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

## ◆ PDefH() [1/7]

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

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

注解
  可能设置 errno 。

自从
  build 638

引用了 ImplRet(), Nonnull(), PDefH(), CHRLib::s, YB_ATTR_nodiscard, YB_NONNULL() , 以及 YF_API.

函数调用图:

## ◆ PDefH() [2/7]

YB_STATELESS 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 第 295 行定义.

引用了 CHRLib::c.

## ◆ PDefH() [3/7]

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

自从
  build 489

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

## ◆ PDefH() [4/7]

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

映射按键到键入的字符。

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

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

自从
  build 490

待办事项:
  Android 实现。

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

## ◆ PDefH() [5/7]

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

inline

文件节点标识类型。

自从
  build 658
  build 638

被这些函数引用 PDefH().

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

## ◆ PDefH() [6/7]

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

inline

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

参见
  FetchCommonLogger
  Logger::DefaultSendLog

## ◆ PDefH() [7/7]

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

inline

调用并捕获异常。

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

自从
  build 631
  build 832

循环重复操作。

自从
  build 832

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

引用了 p.

## ◆ ReadLink() [1/2]

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

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

引用了 NPL::c_str(), MakePathString, Nonnull(), YSLib::path, YSLib::Drawing::r, ReadLink(), CHRLib::s, ystdex::throw_error(), YAssertNonnull, YCL_CallF_CAPI, YCL_RaiseZ_SysE, yfsig , 以及 yimpl.

函数调用图:

## ◆ ReadLink() [2/2]

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

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

引用了 NPL::c_str(), MakePathString, platform_ex::MakePathStringU, YSLib::path, ystdex::throw_error(), YAssertNonnull , 以及 yfsig.

被这些函数引用 ReadLink().

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

## ◆ RetryOnInterrupted()

template<typename _func , typename _type = ystdex::invoke_result_t<_func&>>

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

inline

循环可能被中断的操作。

自从
  build 832

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

引用了 CHRLib::f().

函数调用图:

## ◆ SetBinaryIO() [1/2]

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

## ◆ SetBinaryIO() [2/2]

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

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

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

自从
  build 669

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

引用了 YSLib::IO::FileDescriptor, Nonnull(), YAssertNonnull , 以及 yunused.

函数调用图:

## ◆ SetEnvironmentVariable()

void platform::SetEnvironmentVariable | ( | const char * | envname,
|  | const char * | envval
| ) |  |

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

引用了 NPL::c_str(), Nonnull(), ystdex::throw_error(), YCL_CallF_CAPI, yfsig , 以及 yunused.

被这些函数引用 NPL::A1::Forms::LoadModule_std_system().

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

## ◆ size_t()

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

## ◆ terminate()

void platform::terminate | ( |  | ) |

终止函数。

注解
  DS 平台：循环调用 `::swiWaitForVBlank` 。
  其它平台：调用 `std::abort` 。

自从
  build 319

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

被这些函数引用 YSLib::Environment::Environment(), YSLib::TraceForOutermost() , 以及 ystdex::yassert().

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

## ◆ uaccess() [1/2]

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

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

引用了 NPL::c_str(), YSLib::path , 以及 YAssertNonnull.

函数调用图:

## ◆ uaccess() [2/2]

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

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

引用了 NPL::c_str(), MakePathString(), YSLib::path , 以及 YAssertNonnull.

函数调用图:

## ◆ uchdir()

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

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

## ◆ ufexists() [1/2]

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

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

引用了 ystdex::call_value_or(), ystdex::compose(), ystdex::fexists(), ufopen() , 以及 yimpl.

被这些函数引用 YSLib::IO::ClassifyNode(), YSLib::LoadComponents(), YSLib::LoadNPLA1File() , 以及 YSLib::Drawing::FontCache::LoadTypefaces().

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

## ◆ ufexists() [2/2]

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

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

引用了 ystdex::call_value_or(), ystdex::compose(), ufopen() , 以及 yimpl.

函数调用图:

## ◆ ufopen() [1/4]

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

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

引用了 NPL::c_str(), Deref(), YAssert , 以及 YAssertNonnull.

函数调用图:

## ◆ ufopen() [2/4]

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

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

引用了 ystdex::openmode_conv() , 以及 ufopen().

函数调用图:

## ◆ ufopen() [3/4]

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

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

引用了 NPL::c_str(), Deref(), MakePathString(), YAssert , 以及 YAssertNonnull.

函数调用图:

## ◆ ufopen() [4/4]

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

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

引用了 NPL::c_str(), MakePathString(), ystdex::openmode_conv() , 以及 YAssertNonnull.

被这些函数引用 ufexists() , 以及 ufopen().

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

## ◆ ugetcwd() [1/2]

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

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

引用了 YSLib::Text::buf, CatchExpr, ystdex::cpp2014::make_unique(), MakePathString(), ystdex::ntctscpy(), CHRLib::p(), size , 以及 YAssertNonnull.

被这些函数引用 FetchCurrentWorkingDirectory().

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

## ◆ ugetcwd() [2/2]

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

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

引用了 YSLib::Text::buf, CatchExpr, platform_ex::MakePathStringU, ystdex::ntctscpy() , 以及 YAssertNonnull.

函数调用图:

## ◆ umkdir()

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

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

被这些函数引用 YSLib::IO::EnsureDirectory().

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

## ◆ uopen() [1/2]

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

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

引用了 NPL::c_str(), oflag, pmode , 以及 YAssertNonnull.

被这些函数引用 NPL::A1::Forms::LoadModule_SHBuild() , 以及 YSLib::IO::OpenFile().

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

## ◆ uopen() [2/2]

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

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

引用了 NPL::c_str(), MakePathString(), oflag, pmode , 以及 YAssertNonnull.

被这些函数引用 EnsureUniqueFile().

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

## ◆ upclose()

int platform::upclose | ( | std::FILE * | fp | ) |

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

引用了 CHRLib::fp, YAssertNonnull , 以及 YCL_CallGlobal.

被这些函数引用 YSLib::FetchCommandOutput().

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

## ◆ upopen() [1/2]

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

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

引用了 NPL::c_str(), Deref(), YAssert , 以及 YAssertNonnull.

被这些函数引用 YSLib::FetchCommandOutput().

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

## ◆ upopen() [2/2]

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

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

引用了 NPL::c_str(), Deref(), MakePathString(), YAssert , 以及 YAssertNonnull.

函数调用图:

## ◆ uremove()

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

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

被这些函数引用 YSLib::IO::YB_NONNULL().

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

## ◆ urmdir()

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

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

## ◆ uspawn()

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

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

注解
  Win32 平台：使用 ::CreateProcessW 实现。标准输出不指定使用 Unicode 字符。
  非 Win32 平台：当前实现同 usystem 。

参见
  usystem

自从
  build 837

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

引用了 YSLib::IO::int, platform_ex::Windows::UTF8ToWCS, platform_ex::Windows::WaitUnique(), YCL_Raise_Win32E , 以及 yfsig.

函数调用图:

## ◆ usystem()

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

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

注解
  Win32 平台：使用 ::_wsystem 实现。标准输出不指定使用 Unicode 字符。
  非 Win32 平台：使用 std::system 实现；若参数为空则和 std::system 行为一致。

自从
  build 539

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

引用了 NPL::c_str() , 以及 platform_ex::Windows::UTF8ToWCS.

被这些函数引用 NPL::A1::Forms::CallSystem().

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

## ◆ uunlink()

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

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

被这些函数引用 EnsureUniqueFile().

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

## ◆ WaitForInput()

void platform::WaitForInput | ( |  | ) |

等待任意按键。

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

引用了 platform_ex::FetchKeyDownState() , 以及 platform_ex::UpdateKeyStates().

被这些函数引用 YSLib::UI::Console::Pause().

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

## ◆ while()

platform::while | ( | platform::IsSeparator_P(tag, *p) |  | ) |

## ◆ YB_ATTR_gnu_printf()

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

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

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

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

自从
  build 888

## ◆ YB_NONNULL() [1/2]

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

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

读取链接指向的路径。

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

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

按路径移除一个文件。

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

按路径删除一个空目录。

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

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

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

判断指定 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 。

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

参数

  mode | 打开模式，基本语义同 ISO C11 ，具体行为取决于实现。

前置条件
  断言：`mode && *mode != 0` 。

以 UCS-2 文件名打开文件。

参数

  mode | 打开模式，基本语义与 ISO C++11 对应，具体行为取决于实现。

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

以 UCS-2 文件名打开文件。

注解
  使用 ufopen 二进制只读模式打开测试实现。

判断指定 UTF-8 文件名的文件是否存在。

参数

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

前置条件
  断言：`filename` 。
  间接断言： `mode` 。

注解
  不支持的平台操作失败设置 errno 为 ENOSYS 。

警告
  应使用 upclose 而不是 ::close 关闭管道流，否则可能引起未定义行为。

参见
  upclose

自从
  build 566

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

关闭管道流。

前置条件
  参数非空，表示通过和 upopen 或使用相同实现打开的管道流。

注解
  基本语义同 POSIX.1 2004 的 `::pclose` ，具体行为取决于实现。

自从
  build 566

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

参数

  size | 缓冲区长。

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

注解
  基本语义同 POSIX.1 2004 的 `::getcwd` 。
  若存储分配失败，设置 errno 为 `ENOMEM` 。
  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 。

异常

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

参见
  FileDescriptor::GetAccessTime

自从
  build 631

参见
  FileDescriptor::GetModificationTime

自从
  build 628

参见
  FileDescriptor::GetModificationAndAccessTime

自从
  build 631

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

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

自从
  build 846

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

注解
  参数依次表示目标路径、打开模式、覆盖目标允许的链接数和是否允许共享覆盖。
  第二参数被限制 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 第 68 行定义.

引用了 Nonnull(), ystdex::ntctschr() , 以及 p.

函数调用图:

## ◆ YB_NONNULL() [2/2]

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

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

注解
  DS 平台：不支持操作。

警告
  不保证线程安全。

异常

  std::system_error | 设置失败。

自从
  build 762

## ◆ YCL_DefPlatformFwdTmpl() [1/6]

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

自从
  build 707

## ◆ YCL_DefPlatformFwdTmpl() [2/6]

platform::YCL_DefPlatformFwdTmpl | ( | FetchRootNameEnd | ,
|  | FetchRootNameEnd_P |
| ) |  |

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

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

引用了 FetchRootNameEnd_P(), path , 以及 size_t.

函数调用图:

## ◆ YCL_DefPlatformFwdTmpl() [3/6]

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

自从
  build 653
  build 836

## ◆ YCL_DefPlatformFwdTmpl() [4/6]

platform::YCL_DefPlatformFwdTmpl | ( | FetchRootPathLength | ,
|  | FetchRootPathLength_P |
| ) |  |

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

自从
  build 693

待办事项:
  支持字符指针。

## ◆ YCL_DefPlatformFwdTmpl() [5/6]

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

取指定路径的文件系统根节点名称的结束位置。

自从
  build 652

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

自从
  build 836

引用了 p , 以及 path.

## ◆ YCL_DefPlatformFwdTmpl() [6/6]

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

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

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

参见
  FetchSeparator_P

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

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

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

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

引用了 Deref(), IsSeparator_P() , 以及 path.

函数调用图:

## 变量说明

## ◆ bool

YF_API const char16_t platform::bool = {})

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

被这些函数引用 YSLib::DS::UI::DualScreenReader::AdjustScrollOffset(), ystdex::examiners::equal::are_equal(), ystdex::call_nonnull_or(), ystdex::call_value_or(), NPL::ContextNode::DefaultResolve(), YSLib::GHEvent< _tRet(_tParams...)>::Equals(), YSLib::GHEvent< _tRet(_tParams...)>::EqualsUnchecked(), ystdex::function_not_empty(), ystdex::details::rb_tree::tree< key_type, value_type, first_of<>, key_compare, allocator_type >::insert_left_q(), ystdex::invoke_value_or(), ystdex::is_aligned_ptr(), IsDirectory(), YSLib::IsNullPointer(), NPL::IsReferenceTerm(), NPL::A1::Forms::LoadModule_std_environments(), ystdex::native_little_bit_order(), ystdex::nonnull_or(), ystdex::nptr< link_type >::operator bool(), ystdex::nptr< link_type >::operator!(), ystdex::cpp2017::operator!=(), ystdex::details::tcompare< _tWrappedKey, _fComp, false >::operator()(), ystdex::details::tcompare< _tWrappedKey, _fComp, true >::operator()(), ystdex::cpp2017::operator<(), ystdex::cpp2017::operator<=(), ystdex::cpp2017::optional< _tNodeAlloc >::operator==(), ystdex::cpp2017::operator>(), ystdex::cpp2017::operator>=(), ystdex::owns_any(), ystdex::owns_nonnull(), ystdex::owns_unique(), YSLib::Drawing::ComponentTraits< 1 >::Saturate(), platform::FileDescriptor::SetBlocking(), platform::FileDescriptor::SetNonblocking(), ystdex::strict_all_of(), ystdex::strict_any_of() , 以及 ystdex::value_or().

## ◆ follow_link

bool platform::follow_link

初始值:
{
struct ::stat st

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

被这些函数引用 GetFileAccessTimeOf(), GetFileModificationAndAccessTimeOf(), GetFileModificationTimeOf() , 以及 IsNodeShared().

## ◆ GetFileAccessTimeOf

YB_ATTR_nodiscard platform::GetFileAccessTimeOf

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

## ◆ GetFileModificationAndAccessTimeOf

array< FileTime, 2 > platform::GetFileModificationAndAccessTimeOf

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

## ◆ GetFileModificationTimeOf

YB_ATTR_nodiscard platform::GetFileModificationTimeOf

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

## ◆ l

return platform::l

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

被这些函数引用 YSLib::Drawing::TextRegion::ClearLine(), YSLib::Drawing::TextRegion::ClearTextLine(), CHRLib::GUCSMapper< CharSet::UTF_8 >::Encode(), FetchRootNameLength_P(), FetchRootPathLength_P(), NPL::A1::Forms::ForwardListFirst(), ystdex::get_mid(), if(), YSLib::UI::ImplDeDtor(), NPL::A1::Forms::LoadModule_SHBuild(), CHRLib::Transcoding< _vFrom, _vTo, _tDispatcher >::MakeViewTranscoded(), CHRLib::Transcoding< _vFrom, CharSet::Null, _tDispatcher >::MakeViewTranscoded(), ystdex::openmode_conv(), YSLib::Drawing::operator*(), ystdex::details::rb_tree::tree< key_type, value_type, first_of<>, key_compare, allocator_type >::rb_verify(), CHRLib::UCToMBC(), YSLib::UI::HexViewArea::UpdateData(), YSLib::UI::TextBox::UpdateTextBoxClippedText(), ystdex::vfmtlen() , 以及 ystdex::vsfmt().

## ◆ MakePathString

YB_ATTR_nodiscard const char *s platform::MakePathString

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

被这些函数引用 platform::FAT::LFN::ConvertToMBCS(), CreateHardLink(), CreateSymbolicLink(), IsDirectory(), ReadLink() , 以及 YSLib::IO::YB_NONNULL().

## ◆ oflag

YB_ATTR_nodiscard YF_API int platform::oflag

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

被这些函数引用 EnsureUniqueFile() , 以及 uopen().

## ◆ p

return p platform::p

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

被这些函数引用 ystdex::pmr::resource_pool::access_meta(), YSLib::AccessNode(), YSLib::AccessNodePtr(), YSLib::AccessPtr(), ystdex::pmr::resource_pool::chunk_t::add_free(), YSLib::AddMIMEItems(), ystdex::pmr::cpp2017::memory_resource::allocate(), ystdex::pmr::resource_pool::allocate(), ystdex::pmr::oversized_map::allocate(), ystdex::any_cast(), platform_ex::Attach(), ystdex::details::rb_tree::tree< key_type, value_type, first_of<>, key_compare, allocator_type >::attach_node(), ystdex::basic_membuf< _tChar, _tTraits >::basic_membuf(), ystdex::call_nonnull_or(), ystdex::call_value_or(), YSLib::UI::ClearFocusingOf(), ystdex::clone_monomorphic_ptr(), ystdex::clone_polymorphic_ptr(), NPL::Collapse(), YSLib::Drawing::CompactPixmap::CompactPixmap(), ystdex::const_pointer_cast(), ystdex::pmr::polymorphic_allocator< _type >::construct(), ystdex::default_init_allocator< _type, _tAlloc >::construct(), ystdex::details::rb_tree::tree< key_type, value_type, first_of<>, key_compare, allocator_type >::copy_node(), YSLib::PointerHolder< _type, _tTraits >::Create(), ystdex::pmr::cpp2017::memory_resource::deallocate(), ystdex::pmr::polymorphic_allocator< _type >::deallocate(), ystdex::pmr::resource_pool::deallocate(), ystdex::pmr::oversized_map::deallocate(), ystdex::class_allocator< _type >::deallocate(), ystdex::pmr::polymorphic_allocator< _type >::deallocate_bytes(), ystdex::details::list_rep< _type, std::allocator< _type > >::deallocate_node(), ystdex::details::rb_tree::tree< key_type, value_type, first_of<>, key_compare, allocator_type >::deallocate_node(), ystdex::pmr::polymorphic_allocator< _type >::deallocate_object(), NPL::A1::DefaultEvaluateLeaf(), NPL::ContextNode::DefaultHandleException(), NPL::ContextNode::DefaultResolve(), ystdex::pmr::polymorphic_allocator< _type >::delete_object(), Deref(), platform_ex::Detach(), ystdex::pmr::pool_resource::do_deallocate(), ystdex::pmr::cpp2017::synchronized_pool_resource::do_deallocate(), YSLib::UI::DoReleaseFocus(), YSLib::UI::DoRequestFocus(), ystdex::dynamic_pointer_cast(), YSLib::ValueObject::emplace(), YSLib::GHEvent< _tRet(_tParams...)>::Equals(), NPL::A1::FormContextHandler::Equals(), YSLib::ValueObject::EqualsRaw(), YSLib::ValueObject::EqualsUnchecked(), NPL::A1::EvaluateIdentifier(), YSLib::FetchCommandOutput(), YSLib::Drawing::FetchDefaultTypeface(), YSLib::UI::FetchTopLevel(), NPL::A1::Forms::First(), NPL::A1::Forms::FirstVal(), ystdex::function_not_empty(), ystdex::details::any_base::get(), ystdex::get_init(), ystdex::get_raw(), YSLib::GetRawPtrOf(), YSLib::Drawing::FontFamily::GetTypefacePtr(), YSLib::Drawing::FontFamily::GetTypefaceRef(), YSLib::Drawing::ImageTag::GetValue(), YSLib::Drawing::HSL::HSL(), if(), YSLib::ImplDeDtor(), YSLib::UI::ImplDeDtor(), YSLib::Drawing::ImplDeDtor(), ystdex::any_ops::holder_handler< _tHolder >::init(), ystdex::cpp2017::basic_string< char >::insert(), ystdex::list< chunk_pr_t, polymorphic_allocator< chunk_pr_t > >::insert(), ystdex::details::rb_tree::tree< key_type, value_type, first_of<>, key_compare, allocator_type >::insert_attach(), ystdex::details::rb_tree::tree< key_type, value_type, first_of<>, key_compare, allocator_type >::insert_node(), ystdex::invoke_value_or(), ystdex::is_aligned_ptr(), ystdex::details::rb_tree::tree< key_type, value_type, first_of<>, key_compare, allocator_type >::is_insert_left(), ystdex::details::rb_tree::tree< key_type, value_type, first_of<>, key_compare, allocator_type >::is_insert_left_strict(), ystdex::is_undereferenceable(), YSLib::UI::IsFocused(), YSLib::IsNullPointer(), ystdex::iterate_exceptions(), NPL::LiftToReturn(), NPL::A1::Forms::LoadModule_SHBuild(), ystdex::make_observer(), ystdex::make_ready_future(), ystdex::make_weak(), NPL::A1::Forms::MakeEnvironment(), YSLib::UI::MakeLabel(), ystdex::any_ops::iterator_handler< _type, _tReference >::manage(), YSLib::UI::Menu::Menu(), NPL::MoveCollapsed(), NPL::MoveResolved(), NPL::MoveRValueToForward(), ystdex::pmr::cpp2017::new_delete_resource(), ystdex::pmr::polymorphic_allocator< _type >::new_object(), ystdex::details::node_handle< _tKey, _type, _tNodeAlloc >::node_handle(), Nonnull(), ystdex::nonnull_or(), ystdex::ntctschr(), ystdex::openmode_conv(), YSLib::Text::OpenSkippedBOMtream(), YSLib::operator!=(), platform::UnmapDelete::operator()(), ystdex::free_delete< _type >::operator()(), ystdex::free_delete< _type[]>::operator()(), YSLib::Drawing::HBitmap::Deleter::operator()(), ystdex::temporary_buffer_delete< _type[]>::operator()(), std::hash< ystdex::nptr< _type > >::operator()(), std::hash< ystdex::observer_ptr< _type > >::operator()(), ystdex::placement_delete< _type, _tPointer >::operator()(), ystdex::allocator_guard_delete< _tAlloc >::operator()(), ystdex::allocator_delete< _tAlloc >::operator()(), YSLib::UI::Window::operator+=(), YSLib::UI::Window::operator-=(), YSLib::operator==(), ystdex::owns_any(), ystdex::owns_nonnull(), ystdex::owns_unique(), ystdex::owns_unique_nonnull(), PDefH(), ystdex::polymorphic_cast(), ystdex::polymorphic_crosscast(), NPL::PrepareCollapse(), ystdex::pvoid(), NPL::A1::REPLContext::ReadFrom(), ystdex::details::rb_tree::tree< _tKey, _type, _fKeyOfValue, _fComp, _tAlloc >::alloc_node::reconstruct(), NPL::A1::ReduceCombinedBranch(), NPL::ReduceToReference(), YSLib::UI::ProgressBar::Refresh(), YSLib::UI::ReleaseFocusCascade(), YSLib::UI::ReleaseFocusFrom(), YSLib::Messaging::MessageQueue::Remove(), NPL::Environment::Replace(), YSLib::UI::RequestFocusCascade(), YSLib::UI::RequestFocusFrom(), YSLib::reset(), ystdex::reset(), NPL::ResolveEnvironment(), NPL::ResolveTerm(), ystdex::block_buffer::set(), YSLib::UI::BufferedRenderer::SetImageBuffer(), YSLib::Drawing::Font::SetStyle(), YSLib::UI::AMUnitControlList::SetUnit(), NPL::A1::SetupTraceDepth(), YSLib::UI::Widget::SetView(), ystdex::share_raw(), ystdex::static_pointer_cast(), YSLib::UI::Caret::Stop(), ystdex::str_find(), ystdex::str_find_first_not_of(), ystdex::str_find_first_of(), ystdex::str_find_last_not_of(), ystdex::str_find_last_of(), ystdex::str_rfind(), YSLib::UI::TabControl::SwitchPage(), NPL::TermToString(), ystdex::details::to_address(), ystdex::to_address(), NPL::TokenizeTerm(), YSLib::TraceForOutermost(), NPL::TransformToSyntaxNode(), YSLib::TranslateTime(), NPL::TraverseSubnodes(), ystdex::details::rb_tree::tree_insert_and_rebalance(), ystdex::unchecked_any_cast(), ystdex::details::any_emplace< any >::unchecked_target_ref(), ystdex::uninitialized_construct_using_allocator(), ystdex::unique_raw(), ystdex::unsafe_any_cast(), YSLib::UI::TextBox::UpdateTextBoxClippedText(), ystdex::pmr::resource_pool::upstream(), ystdex::value_or(), YSLib::ValueObject::ValueObject(), YB_NONNULL(), YCL_DefPlatformFwdTmpl() , 以及 YSLib::GUIHost::~GUIHost().

## ◆ path

_tString&& platform::path

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

被这些函数引用 YSLib::FetchLocalFHSRootPath(), FetchRootNameEnd_P(), FetchRootNameLength_P(), FetchRootPathLength_P(), if(), YSLib::InitializeSystemFontCache(), IsAbsolute_P(), YSLib::LoadNPLA1File() , 以及 YCL_DefPlatformFwdTmpl().

## ◆ pmode

YB_ATTR_nodiscard YF_API int mode_t platform::pmode

初始值:
= DefaultPMode())
ynothrowv

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

被这些函数引用 YSLib::IO::OpenFile() , 以及 uopen().

## ◆ size_t

YB_ATTR_nodiscard YF_API platform::size_t = 1

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

被这些函数引用 ystdex::pmr::adjust_pool_options(), FetchCurrentWorkingDirectory(), FetchLimit(), ystdex::details::floor_lb_shift(), ystdex::details::get_size_of_n(), ystdex::vfmtlen() , 以及 YCL_DefPlatformFwdTmpl().

## ◆ st_nlink

return st platform::st_nlink

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

## ◆ tail

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

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

被这些函数引用 YSLib::IO::NormalizeDirectoryPathTail().

## ◆ ynothrow

const _tString& path platform::ynothrow

初始值:
{
return !path.empty() && !platform::IsSeparator_P(tag, path.back())

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

## ◆ ynothrowv

YB_ATTR_nodiscard const _tChar *path platform::ynothrowv

初始值:
{
return
platform::IsSeparator_P(tag, Deref(path)) || platform::FindColon(path)

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

platform::IsSeparator_P
YB_STATELESS YCL_Tag_constfn bool IsSeparator_P(IDTag< YF_Platform_Win32 > tag, _tChar c) ynothrow
Definition: YCLib/FileSystem.h:103
platform::path
_tString && path
Definition: YCLib/FileSystem.h:464
YSLib::path
YB_ATTR_nodiscard YF_API const char * path
Definition: Initialization.h:116
platform::Deref
YB_PURE yconstfn auto Deref(_type &&p) -> decltype(*p)
断言并解引用非空指针。
Definition: Debug.h:547
ynothrowv
#define ynothrowv
YSLib 无异常抛出保证验证：有条件地使用无异常抛出规范。
Definition: ydef.h:1219
platform::DefaultPMode
YB_ATTR_nodiscard YF_API YB_STATELESS mode_t DefaultPMode() ynothrow
取默认权限。
Definition: FileIO.cpp:770