YSTest: FileIO.h 文件参考

YSTest PreAlpha_b800_20170810 The YSLib Test Project

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

- 文件列表
- 文件成员

类 | 命名空间 | 宏定义 | 类型定义 | 函数 | 变量
FileIO.h 文件参考
YFramework Library » YCommonLib

平台相关的文件访问和输入/输出接口。 更多...

`#include "YModules.h"`
`#include <YCLib/Platform.h>`
`#include <YBaseMacro.h>`
`#include <YCLib/Debug.h>`
`#include <chrono>`
`#include <YCLib/Reference.h>`
`#include <ios>`
`#include <fstream>`
FileIO.h 的引用(Include)关系图:
此图展示该文件直接或间接的被哪些文件引用了:

浏览源代码.

## 类

class | platform::FileDescriptor
| 文件描述符包装类。 更多...
struct | platform::FileDescriptor::Deleter
| 删除器。 更多...

## 命名空间

| platform
| 默认平台命名空间。
| platform_ex
| 平台扩展命名空间。

## 宏定义

#define | YCL_Trace_SysE(_lv, _fn, _sig)
| 跟踪 errno 取得的调用状态结果。 更多...
#define | YCL_Raise_SysE(_t, _msg, _sig)
| 按错误值和指定参数抛出第一参数指定类型的对象。 更多...
#define | YCL_RaiseZ_SysE(_t, _expr, _msg, _sig)
#define | YCL_WrapCall_CAPI(_t, _fn, ...)
| 调用系统 C API 或其它可用 errno 取得调用状态的例程。 更多...
#define | YCL_Call_CAPI(_t, _fn, _sig, ...) YCL_WrapCall_CAPI(_t, _fn, __VA_ARGS__)(_sig)
#define | YCL_CallF_CAPI(_t, _fn, ...) YCL_Call_CAPI(_t, _fn, yfsig, __VA_ARGS__)
#define | YCL_TraceWrapCall_CAPI(_fn, ...)
#define | YCL_TraceCall_CAPI(_fn, _sig, ...) YCL_TraceWrapCall_CAPI(_fn, __VA_ARGS__)(_sig)
#define | YCL_TraceCallF_CAPI(_fn, ...) YCL_TraceCall_CAPI(_fn, yfsig, __VA_ARGS__)

## 类型定义

using | platform::UniqueFile = unique_ptr_from< FileDescriptor::Deleter >
using | platform::mode_t = DefaultPMode()
| 文件模式类型。 更多...

## 函数

enum NodeCategory std::uint_least32_t YF_API NodeCategory | platform::CategorizeNode (mode_t) ynothrow
| 文件节点类别。 更多...
YF_API YB_STATELESS mode_t | platform::DefaultPMode () ynothrow
| 取默认权限。 更多...
YF_API bool | platform::HaveSameContents (UniqueFile, UniqueFile, const char *, const char *)
bool | platform::IsNodeShared (FileDescriptor, FileDescriptor) ynothrow
YF_API void | platform::SetBinaryIO (std::FILE *) ynothrowv
| 设置标准库流二进制输入/输出模式。 更多...
| platform::PDefH (void, SetupBinaryStdIO, std::FILE *in=stdin, std::FILE *out=stdout, bool sync={}) ynothrowv ImplExpr(SetBinaryIO(in)
| platform::SetBinaryIO (out)
std::ios_base::sync_with_stdio(sync)) YF_API YB_STATELESS int omode_conv(std YF_API YB_STATELESS int | platform::omode_convb (std::ios_base::openmode) ynothrow
| ISO C++ 标准输入输出接口打开模式转换为 POSIX 文件打开模式。 更多...
template<typename _tChar >
basic_string< _tChar > | platform::FetchCurrentWorkingDirectory (size_t init)
| 尝试按指定的起始缓冲区大小取当前工作目录的路径。 更多...
YF_API | platform::YB_NONNULL (1, 2) bool HaveSameContents(const char *
| 比较文件内容相等。 更多...
yconstfn YB_PURE | platform::PDefH (bool, IsNodeShared, const FileNodeID &x, const FileNodeID &y) ynothrow ImplRet(x!
| 判断参数是否表示共享的文件节点。 更多...

## 变量

YF_API | platform::size_t = 1
YF_API int amode | platform::ynothrowv
YF_API int | platform::oflag
YF_API int mode_t | platform::pmode
| platform::MakePathString
| platform::YB_NONNULL (1) PDefH(string
| 构造适合表示路径的 `char` 字符串。 更多...
const char *s | platform::ImplRet (Nonnull(s)) inline PDefH(const string &
const char *s const string &s | platform::ImplRet (s) YF_API YB_NONNULL(1) string MakePathString(const char16_t *)
| platform::PDefH (string, MakePathString, u16string_view sv) ImplRet(MakePathString(sv.data())) using FileNodeID
| 文件节点标识类型。 更多...
| platform::GetFileAccessTimeOf
std::FILE *fp | platform::bool = {})
std::FILE *fp | platform::ImplRet (FileDescriptor(fp).GetAccessTime()) YF_API YB_NONNULL(1) FileTime GetFileAccessTimeOf(const char *
| platform::GetFileModificationTimeOf
std::FILE *fp | platform::ImplRet (FileDescriptor(fp).GetModificationTime()) YF_API YB_NONNULL(1) FileTime GetFileModificationTimeOf(const char *
| platform::GetFileModificationAndAccessTimeOf
std::FILE *fp | platform::ImplRet (FileDescriptor(fp).GetModificationAndAccessTime()) YF_API YB_NONNULL(1) array< FileTime
std::FILE *fp | platform::GetFileModificationAndAccessTimeOf (const char *, bool={})
YF_API | platform::GetFileModificationAndAccessTimeOf (const char16_t *, bool={})
| platform_ex::MakePathStringU
| platform_ex::YB_NONNULL (1) PDefH(u16string
| 构造适合表示路径的 `char16_t` 字符串。 更多...
const char16_t *s | platform_ex::ImplRet (platform::Nonnull(s)) inline PDefH(const u16string &
const char16_t *s const u16string &s | platform_ex::ImplRet (s) YF_API YB_NONNULL(1) u16string MakePathStringU(const char *)

## 详细描述

平台相关的文件访问和输入/输出接口。

版本
  r2581

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

自从
  build 616

创建时间:
  2015-07-14 18:50:35 +0800

修改时间:
  2016-09-17 12:42 +0800

文本编码:
  UTF-8

模块名称:
  YCLib::FileIO

在文件 FileIO.h 中定义.

## 宏定义说明

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

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

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

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

参考自 platform::CreateHardLink(), platform::CreateSymbolicLink(), platform::FileDescriptor::Flush(), platform::FileDescriptor::GetFlags(), platform::FileDescriptor::GetSize(), platform::FileDescriptor::lock(), platform::FileDescriptor::lock_shared(), platform::ReadLink(), platform::FileDescriptor::SetFlags() , 以及 platform::FileDescriptor::SetMode().

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

值:
do \
{ \
const auto err_(errno); \
\
ystdex::throw_error<_t>(err_, \
platform::ComposeMessageWithSignature(_msg YPP_Comma _sig)); \
}while(false)
platform::ComposeMessageWithSignature
ComposeMessageWithSignature
Definition: Debug.h:464
YPP_Comma
#define YPP_Comma
替换为逗号的预处理记号。
Definition: ydef.h:225

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

自从
  build 714

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

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

参考自 platform::EnsureUniqueFile() , 以及 platform::FileDescriptor::WriteContent().

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

值:
do \
{ \
const auto err_(_expr); \
\
if(err_ != decltype(err_)()) \
ystdex::throw_error<_t>(err_, \
platform::ComposeMessageWithSignature(_msg YPP_Comma _sig)); \
}while(false)
platform::if
if(!p) p
platform::ComposeMessageWithSignature
ComposeMessageWithSignature
Definition: Debug.h:464
YPP_Comma
#define YPP_Comma
替换为逗号的预处理记号。
Definition: ydef.h:225

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

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

参考自 platform::ReadLink().

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

值:
do \
{ \
const int err_(errno); \
\
YTraceDe(_lv, "Failed calling " #_fn " @ %s with error %d: %s.", \
_sig, err_, std::strerror(err_)); \
}while(false)
YTraceDe
#define YTraceDe(...)
YCLib 默认调试跟踪。
Definition: Debug.h:313

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

自从
  build 691

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

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

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

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

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

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

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

值:
[&](const char* sig_) YB_NONNULL(1){ \
const auto res_(_fn(__VA_ARGS__)); \
\
if(YB_UNLIKELY(res_ < decltype(res_)())) \
YCL_Trace_SysE(platform::Descriptions::Warning, _fn, sig_); \
return res_; \
}
YSLib::IO::Path::YB_NONNULL
PDefH(String, GetExtensionOf, const Path &pth) ImplRet(pth.empty()?String() YF_API YB_NONNULL(1) bool VerifyDirectory(const char *)
判断路径表示绝对路径。
Definition: YSLib/Service/FileSystem.h:466
YB_UNLIKELY
#define YB_UNLIKELY(_expr)
分支预测提示。
Definition: ydef.h:464
platform::if
if(!p) p
platform::Descriptions::Warning
Definition: YCommon.h:167
YCL_Trace_SysE
#define YCL_Trace_SysE(_lv, _fn, _sig)
跟踪 errno 取得的调用状态结果。
Definition: FileIO.h:1203

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

参见
  YCL_Trace_SysE

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

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

值:
[&](const char* sig_) YB_NONNULL(1){ \
const auto res_(_fn(__VA_ARGS__)); \
\
if(YB_UNLIKELY(res_ < decltype(res_)())) \
YCL_Raise_SysE(_t, #_fn, sig_); \
return res_; \
}
YSLib::IO::Path::YB_NONNULL
PDefH(String, GetExtensionOf, const Path &pth) ImplRet(pth.empty()?String() YF_API YB_NONNULL(1) bool VerifyDirectory(const char *)
判断路径表示绝对路径。
Definition: YSLib/Service/FileSystem.h:466
YB_UNLIKELY
#define YB_UNLIKELY(_expr)
分支预测提示。
Definition: ydef.h:464
YCL_Raise_SysE
#define YCL_Raise_SysE(_t, _msg, _sig)
按错误值和指定参数抛出第一参数指定类型的对象。
Definition: FileIO.h:1178
platform::if
if(!p) p
ystdex::_t
typename _type::type _t
嵌套类型别名。
Definition: type_traits.hpp:97

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

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

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

参见
  YCL_Raise_SysE

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