YSTest: Native Encoding Conversion

YSTest PreAlpha_b700_20160611 The YSLib Test Project

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

函数 | 变量
Native Encoding Conversion

本机文本编码转换。

异常

  YSLib::LoggedEvent | 长度为负数或溢出 int 。

更多...

## 函数

YF_API string | platform_ex::Windows::MBCSToMBCS (string_view, unsigned=CP_UTF8, unsigned=CP_ACP)
YF_API wstring | platform_ex::Windows::MBCSToWCS (string_view, unsigned=CP_ACP)
YF_API string | platform_ex::Windows::WCSToMBCS (wstring_view, unsigned=CP_ACP)
const char *str | platform_ex::Windows::ImplRet (MBCSToWCS(str, CP_UTF8)) inline PDefH(wstring
const char *str string_view sv | platform_ex::Windows::ImplRet (MBCSToWCS(sv, CP_UTF8)) inline YB_NONNULL(1) PDefH(string
const char *str string_view sv const wchar_t *str | platform_ex::Windows::ImplRet (WCSToMBCS(str, CP_UTF8)) inline PDefH(string

## 变量

YF_API | platform_ex::Windows::unsigned = CP_UTF8
| platform_ex::Windows::UTF8ToWCS
const char *str string_view sv | platform_ex::Windows::WCSToUTF8
YF_API | platform_ex::Windows::YB_NONNULL (1) UniqueHandle MakeFile(const wchar_t *
| 创建或打开独占的文件或设备。 更多...
using | platform_ex::Windows::FileID = std::uint64_t
| 文件标识。 更多...
using | platform_ex::Windows::VolumeID = std::uint32_t
| 卷序列号。 更多...
YF_API | platform_ex::Windows::bool = {})
YF_API size_t | platform_ex::Windows::QueryFileLinks (UniqueHandle::pointer)
| 查询文件链接数。 更多...
YF_API pair< VolumeID, FileID > | platform_ex::Windows::QueryFileNodeID (UniqueHandle::pointer)
| 查询文件标识。 更多...
YF_API FileID | platform_ex::Windows::QueryFileNodeID (const wchar_t *, bool={})

## 详细描述

本机文本编码转换。

异常

  YSLib::LoggedEvent | 长度为负数或溢出 int 。

自从
  build 644

转换第一个 `unsigned` 参数指定编码的字符串为第二个 `unsigned` 参数指定的编码。

## 类型定义说明

using platform_ex::Windows::FileID = typedef std::uint64_t

文件标识。

参见
  https://msdn.microsoft.com/zh-cn/library/windows/desktop/aa363788(v=vs.85).aspx 。

自从
  build 638

在文件 MinGW32.h 第 775 行定义.

using platform_ex::Windows::VolumeID = typedef std::uint32_t

卷序列号。

在文件 MinGW32.h 第 777 行定义.

## 函数说明

const char* str platform_ex::Windows::ImplRet | ( | MBCSToWCS(str, CP_UTF8) |  | ) |

前置条件
  长度参数非零且不上溢 `int` 时间接断言：字符串指针参数非空。

const char* str string_view sv platform_ex::Windows::ImplRet | ( | MBCSToWCS(sv, CP_UTF8) |  | ) |

前置条件
  间接断言：字符串指针参数非空。

const char* str string_view sv const wchar_t* str platform_ex::Windows::ImplRet | ( | WCSToMBCS(str, CP_UTF8) |  | ) |

前置条件
  长度参数非零且不上溢 `int` 时间接断言：字符串指针参数非空。

YF_API string platform_ex::Windows::MBCSToMBCS | ( | string_view | ,
|  | unsigned | = `CP_UTF8`,
|  | unsigned | = `CP_ACP`
| ) |  |

前置条件
  长度参数非零且不上溢 `int` 时间接断言：字符串指针参数非空。

YF_API wstring platform_ex::Windows::MBCSToWCS | ( | string_view | ,
|  | unsigned | = `CP_ACP`
| ) |  |

前置条件
  长度参数非零且不上溢 `int` 时间接断言：字符串指针参数非空。

参考自 YSLib::TraceForOutermost() , 以及 platform::usystem().

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

YF_API size_t platform_ex::Windows::QueryFileLinks | ( | UniqueHandle::pointer |  | ) |

查询文件链接数。

异常

  Win32Exception | 访问文件或查询文件元数据失败。

自从
  build 660
  build 637

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

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

YF_API pair<VolumeID, FileID> platform_ex::Windows::QueryFileNodeID | ( | UniqueHandle::pointer |  | ) |

查询文件标识。

返回
  卷标识和卷上文件的标识的二元组。

Bug:
  ReFS 上不保证唯一。
  参见
    https://msdn.microsoft.com/zh-cn/library/windows/desktop/aa363788(v=vs.85).aspx 。

自从
  build 638

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

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

YF_API FileID platform_ex::Windows::QueryFileNodeID | ( | const wchar_t * | ,
|  | bool | = `{}`
| ) |  |

YF_API string platform_ex::Windows::WCSToMBCS | ( | wstring_view | ,
|  | unsigned | = `CP_ACP`
| ) |  |

前置条件
  长度参数非零且不上溢 `int` 时间接断言：字符串指针参数非空。

YF_API platform_ex::Windows::YB_NONNULL | ( | 1 |  | ) | const

inline

创建或打开独占的文件或设备。

检查参数指定的 MS-DOS 风格路径冒号。

生成别名校验和。

取注册表中 NLS 键中指定名称的值。

展开字符串中的环境变量。

文件系统目录查找状态。

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

注解
  调用 `::CreateFileW` 实现。

自从
  build 632
  build 660

前置条件
  间接断言：字符串指针参数非空。

自从
  build 549

查找起始的目录名称。

不变性
  `dir_name.length() > 1 && ystdex::ends_with(dir_name, L"\\*")` 。

参见
  GetDirName

自从
  build 593

当前查找的项目名称。

自从
  build 593

构造：使用指定的目录路径。

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

异常

  platform::FileOperationFailure | 打开路径失败，或指定的路径不是目录。

自从
  build 658

打开 UTF-16 路径指定的目录。 目录路径无视结尾的斜杠和反斜杠。 去除结尾斜杠和反斜杠后若为空则视为当前路径。

取子节点的类型。

返回
  当前节点无效或查找的项目名称为空时为 platform::NodeCategory::Empty ， 否则为处理文件信息得到的值。

参见
  CategorizeNode

自从
  build 658

处理文件信息时，首先调用 CategorizeNode 对查找数据归类； 然后打开名称指定的文件进一步调用 CategorizeNode 对打开的文件判断归类。

关闭查找状态。

后置条件
  断言：关闭成功。

读取：迭代当前查找状态。

返回
  若迭代结束后节点且文件名非空，表示当前查找项目名的指针；否则为空指针。

自从
  build 671

若查找节点句柄非空则迭代当前查找状态查找下一个文件系统项。 否则查找节点句柄为空或迭代失败则关闭查找状态并置查找节点句柄空。 最终查找节点非空时保存记录当前查找的项目状态。

读取重分析点内容。

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

异常

  Win32Exception | 打开文件失败。
  std::invalid_argument | 打开的文件不是重分析点。

  std::system_error

  重分析点检查失败。
  - std::errc::not_supported 重分析点标签不被支持。

自从
  build 660

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

注解
  最后参数表示跟踪重解析点。

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

注解
  即使可选参数都为空指针时仍访问文件。最后参数表示跟踪重解析点。

自从
  build 632

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

注解
  即使可选参数都为空指针时仍访问文件。最后参数表示跟踪重解析点。

异常

  Win32Exception | 调用失败。

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

自从
  build 658

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

自从
  build 593

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

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

函数调用图:

## 变量说明

YF_API::FILETIME::FILETIME::FILETIME platform_ex::Windows::bool = {})

在文件 MinGW32.h 第 794 行定义.

YF_API platform_ex::Windows::unsigned = CP_UTF8

在文件 MinGW32.h 第 630 行定义.

参考自 ystdex::iscntrl_C1(), ystdex::iscntrl_ISO8859_1(), ystdex::iscntrl_ISO8859_11(), ystdex::isprint_ISO8859_1(), ystdex::iswprint() , 以及 main().

const char *str platform_ex::Windows::UTF8ToWCS

在文件 MinGW32.h 第 650 行定义.

参考自 platform::CreateHardLink(), platform::CreateSymbolicLink(), platform::ReadLink(), platform::uaccess(), platform::ufopen(), platform::uopen() , 以及 platform::upopen().

const char *str string_view sv const wchar_t *str platform_ex::Windows::WCSToUTF8

在文件 MinGW32.h 第 657 行定义.

参考自 platform::MakePathString(), platform::ReadLink() , 以及 platform::ugetcwd().