YSTest: TextFile.h 源文件

YSTest PreAlpha_b500_20140530 The YSLib Test Project

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

- 文件列表
- 文件成员

全部 类 命名空间 文件 函数 变量 类型定义 枚举 枚举值 友元 宏定义 组 页
TextFile.h
浏览该文件的文档.
1 /*
2 © 2009-2014 FrankHB.
3
4 This file is part of the YSLib project, and may only be used,
5 modified, and distributed under the terms of the YSLib project
6 license, LICENSE.TXT. By continuing to use, modify, or distribute
7 this file you indicate that you have read the license and
8 understand and accept it fully.
9 */
10
28 #ifndef YSL_INC_Service_TextFile_h_
29 #define YSL_INC_Service_TextFile_h_ 1
30
31 #include "YModules.h"
32 #include YFM_YSLib_Service_File
33 #include YFM_YSLib_Adaptor_YContainer // for string;
34
35 namespace YSLib
36 {
37
47 yconstexpr char BOM_UTF_16LE[]{"\xFF\xFE"};
48 yconstexpr char BOM_UTF_16BE[]{"\xFE\xFF"};
49 yconstexpr char BOM_UTF_8[]{"\xEF\xBB\xBF"};
50 yconstexpr char BOM_UTF_32LE[]{"\xFF\xFE\x00\x00"};
51 yconstexpr char BOM_UTF_32BE[]{"\x00\x00\xFE\xFF"};
53
54
56 class YF_API TextFile : public File
57 {
58 private:
59 size_t bl;
60
61 public:
67 Text::Encoding Encoding;
68
74 explicit
75 TextFile(const char*, std::ios_base::openmode = std::ios_base::in,
76 Text::Encoding = Text::CS_Default);
81 explicit
82 TextFile(const String&);
83
89 string
90 GetBOM() const;
91 DefGetter(const ynothrow, u8, BOMSize, bl)
92 DefGetter(const ynothrow, size_t, TextSize, GetSize() - GetBOMSize()) \
94 DefGetter(const ynothrow, size_t, TextPosition, GetPosition() - bl) \
96
102 size_t
103 CheckBOM(Text::Encoding&);
104
109 void
110 Locate(u32) const;
111
115 void
116 Rewind() const;
117
122 template<typename _tChar, typename... _tParams>
123 inline Text::ConversionResult
124 ReadChar(_tChar& c, _tParams&&... args) const
125 {
126 return MBCToUC(c, GetPtr(), Encoding, args...);
127 }
128
133 template<typename... _tParams>
134 inline Text::ConversionResult
135 SkipChar(_tParams&&... args) const
136 {
137 return MBCToUC(GetPtr(), Encoding, args...);
138 }
139
145 bool
146 Truncate(size_t) const override;
147 };
148
149 } // namespace YSLib;
150
151 #endif
152
CHRLib::ConversionResult
ConversionResult
编码转换结果。
Definition: chrmap.h:75
YSLib::BOM_UTF_32LE
yconstexpr char BOM_UTF_32LE[]
Definition: TextFile.h:50
YSLib::TextFile::Encoding
Text::Encoding Encoding
编码。
Definition: TextFile.h:67
CHRLib::CS_Default
yconstexpr Encoding CS_Default
默认字符编码。
Definition: chrmap.h:45
YSLib::u32
std::uint32_t u32
Definition: yadaptor.h:69
YSLib::UI::args
yconstfn const string _tParams && args
Definition: Loader.h:111
YSLib::TextFile
文本文件类。
Definition: TextFile.h:56
YSLib::BOM_UTF_16LE
yconstexpr char BOM_UTF_16LE[]
Unicode 编码模式标记。
Definition: TextFile.h:47
YF_API
#define YF_API
Definition: Platform.h:64
YSLib::File
文件基类。
Definition: File.h:43
CHRLib::MBCToUC
YF_API ConversionResult MBCToUC(ucs2_t &, const char *&, Encoding, ConversionState &&={})
按指定编码和转换状态转换字符串中字符为 UCS-2 字符，返回转换的字节数。
Definition: chrproc.cpp:52
YSLib::BOM_UTF_32BE
yconstexpr char BOM_UTF_32BE[]
Definition: TextFile.h:51
DefGetter
#define DefGetter(_q, _t, _n,...)
Definition: YBaseMacro.h:180
YSLib::BOM_UTF_16BE
yconstexpr char BOM_UTF_16BE[]
Definition: TextFile.h:48
YSLib::Text::String
YSLib 标准字符串（使用 UCS-2 作为内部编码）。
Definition: ystring.h:47
ynothrow
#define ynothrow
YSLib 无异常抛出保证：若支持 noexcept 关键字， 指定特定的 noexcept 异常规范。
Definition: ydef.h:514
YSLib::BOM_UTF_8
yconstexpr char BOM_UTF_8[]
Definition: TextFile.h:49
YSLib::u8
std::uint8_t u8
通用数据类型。
Definition: yadaptor.h:67
yconstexpr
#define yconstexpr
指定编译时常量表达式。
Definition: ydef.h:462
YSLib::TextFile::bl
size_t bl
BOM 大小。
Definition: TextFile.h:59
CHRLib::CharSet::Encoding
Encoding
Definition: encoding.h:53
CHRLib::c
c
Definition: chrproc.h:76
YModules.h
YSLib::TextFile::SkipChar
Text::ConversionResult SkipChar(_tParams &&...args) const
按自身编码读取但不保存 Unicode 字符。
Definition: TextFile.h:135