YSTest: TextFile.h 源文件

YSTest PreAlpha_b800_20170810 The YSLib Test Project

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

- 文件列表
- 文件成员

TextFile.h
浏览该文件的文档.
1 /*
2 © 2009-2016 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 // for string, File;
33
34 namespace YSLib
35 {
36
37 namespace Text
38 {
39
48 YB_NONNULL(1, 2) Text::Encoding
49 VerifyEncoding(std::FILE*, char*, size_t, size_t, Encoding = CS_Default);
51 YB_NONNULL(2) Text::Encoding
52 VerifyEncoding(std::streambuf&, char*, size_t, size_t, Encoding = CS_Default);
53 YB_NONNULL(2) Text::Encoding
54 VerifyEncoding(std::istream&, char*, size_t, size_t, Encoding = CS_Default);
56
57
67 yconstexpr const char BOM_UTF_16LE[]{"\xFF\xFE"};
68 yconstexpr const char BOM_UTF_16BE[]{"\xFE\xFF"};
69 yconstexpr const char BOM_UTF_8[]{"\xEF\xBB\xBF"};
70 yconstexpr const char BOM_UTF_32LE[]{"\xFF\xFE\x00\x00"};
71 yconstexpr const char BOM_UTF_32BE[]{"\x00\x00\xFE\xFF"};
73
75
76
81 inline YB_NONNULL(1, 2) PDefH(bool, CheckBOM, const char* buf, const char* str,
82 size_t n)
83 ImplRet(std::char_traits<char>::compare(Nonnull(buf), str, n) == 0)
84 template<size_t _vN>
85 inline YB_NONNULL(1) bool
86 CheckBOM(const char* buf, const char(&str)[_vN])
87 {
88 return CheckBOM(buf, str, _vN - 1);
89 }
91
93 template<size_t _vN>
95 inline bool
96 CheckBOM(string_view sv, const char(&str)[_vN])
97 {
98 return !(sv.length() < _vN - 1) && CheckBOM(sv.data(), str, _vN - 1);
99 }
105 YF_API bool
107 CheckBOM(std::istream&, string_view);
108 template<size_t _vN>
109 inline bool
110 CheckBOM(std::istream& is, const char(&str)[_vN])
111 {
112 return CheckBOM(is, {str, _vN - 1});
113 }
115
116
117
119
120
126 YF_API YB_NONNULL(1) pair<Encoding, size_t>
127 DetectBOM(const char*);
133 YF_API pair<Encoding, size_t>
134 DetectBOM(string_view);
145 YF_API pair<Encoding, size_t>
147 DetectBOM(std::streambuf&, size_t, Encoding = CS_Default);
148 YF_API pair<Encoding, size_t>
149 DetectBOM(std::istream&, size_t, Encoding = CS_Default);
151
152
159 YF_API size_t
160 WriteBOM(std::ostream&, Text::Encoding);
161
162 } // namespace Text;
163
164 } // namespace YSLib;
165
166 #endif
167
YModules.h
YSLib::Text::ImplRet
const char const char size_t n ImplRet(std::char_traits< char >::compare(Nonnull(buf), str, n)==0) template< size_t _vN > inline YB_NONNULL(1) bool CheckBOM(const char *buf
YSLib
YSLib 命名空间。
Definition: AndroidHost.h:45
YSLib::Text::BOM_UTF_32LE
yconstexpr const char BOM_UTF_32LE[]
Definition: TextFile.h:70
YSLib::Text::BOM_UTF_16LE
YB_NONNULL(1, 2) Text YB_NONNULL(2) Text YB_NONNULL(2) Text yconstexpr const char BOM_UTF_16LE[]
验证编码。
Definition: TextFile.h:67
Text
YSLib::Text::CheckBOM
CheckBOM
Definition: TextFile.h:81
YSLib::Text::BOM_UTF_16BE
yconstexpr const char BOM_UTF_16BE[]
Definition: TextFile.h:68
yconstexpr
#define yconstexpr
指定编译时常量表达式。
Definition: ydef.h:679
YSLib::Text::buf
const char * buf
Definition: TextFile.h:81
YSLib::PDefH
PDefH(Environment &, FetchEnvironment,) ImplRet(FetchGlobalInstance().GetEnvironmentRef()) inline PDefH(GUIHost &
取单一环境对象引用。
YSLib::Text::BOM_UTF_32BE
yconstexpr const char BOM_UTF_32BE[]
Definition: TextFile.h:71
YF_API
#define YF_API
Definition: Platform.h:56
YSLib::Text::DetectBOM
YF_API size_t DetectBOM(const char *)
Definition: TextFile.cpp:103
YSLib::Text::WriteBOM
YF_API size_t WriteBOM(std::ostream &, Text::Encoding)
写入指定编码的 BOM 。
Definition: TextFile.cpp:191
YSLib::Text::VerifyEncoding
Encoding VerifyEncoding(std::FILE *fp, char *s, size_t buflen, size_t txt_len, Encoding enc)
Definition: TextFile.cpp:40
YSLib::Text::BOM_UTF_8
yconstexpr const char BOM_UTF_8[]
Definition: TextFile.h:69
std
Definition: memory.hpp:1183
platform::Nonnull
_type && Nonnull(_type &&p) ynothrowv
断言并返回非空参数。
Definition: Debug.h:422
CHRLib::CS_Default
yconstexpr const Encoding CS_Default(CharSet::UTF_8)
默认字符编码。
CHRLib::CharSet::Encoding
Encoding
字符流编码标识。
Definition: Encoding.h:58
YSLib::Text::str
const char const char * str
Definition: TextFile.h:81
YSLib::Text::YB_NONNULL
YB_NONNULL(1, 2) PDefH(bool
检查第一参数是否具有指定的 BOM 。
ystdex::string_view
basic_string_view< char > string_view
Definition: string_view.hpp:415