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:
68 
74  explicit
75  TextFile(const char*, std::ios_base::openmode = std::ios_base::in,
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>
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 
ConversionResult
编码转换结果。
Definition: chrmap.h:75
yconstexpr char BOM_UTF_32LE[]
Definition: TextFile.h:50
Text::Encoding Encoding
编码。
Definition: TextFile.h:67
yconstexpr Encoding CS_Default
默认字符编码。
Definition: chrmap.h:45
std::uint32_t u32
Definition: yadaptor.h:69
yconstfn const string _tParams && args
Definition: Loader.h:111
文本文件类。
Definition: TextFile.h:56
yconstexpr char BOM_UTF_16LE[]
Unicode 编码模式标记。
Definition: TextFile.h:47
#define YF_API
Definition: Platform.h:64
文件基类。
Definition: File.h:43
YF_API ConversionResult MBCToUC(ucs2_t &, const char *&, Encoding, ConversionState &&={})
按指定编码和转换状态转换字符串中字符为 UCS-2 字符,返回转换的字节数。
Definition: chrproc.cpp:52
yconstexpr char BOM_UTF_32BE[]
Definition: TextFile.h:51
#define DefGetter(_q, _t, _n,...)
Definition: YBaseMacro.h:180
yconstexpr char BOM_UTF_16BE[]
Definition: TextFile.h:48
YSLib 标准字符串(使用 UCS-2 作为内部编码)。
Definition: ystring.h:47
#define ynothrow
YSLib 无异常抛出保证:若支持 noexcept 关键字, 指定特定的 noexcept 异常规范。
Definition: ydef.h:514
yconstexpr char BOM_UTF_8[]
Definition: TextFile.h:49
std::uint8_t u8
通用数据类型。
Definition: yadaptor.h:67
#define yconstexpr
指定编译时常量表达式。
Definition: ydef.h:462
size_t bl
BOM 大小。
Definition: TextFile.h:59
Text::ConversionResult SkipChar(_tParams &&...args) const
按自身编码读取但不保存 Unicode 字符。
Definition: TextFile.h:135