YSTest: cctype.h 源文件

YSTest PreAlpha_b800_20170810 The YSLib Test Project

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

- 文件列表
- 文件成员

cctype.h
浏览该文件的文档.
1 /*
2 © 2014-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 YB_INC_ystdex_cctype_h_
29 #define YB_INC_ystdex_cctype_h_ 1
30
31 #include "../ydef.h" // for yconstfn, CHAR_MIN, yimpl;
32 #include <cwctype> // for std::towlower, std::towupper;
33 #include <cctype> // for std::tolower, std::toupper;
34
35 namespace ystdex
36 {
37
39
40 yconstfn bool
42 iscntrl_C0(char c) ynothrow
43 {
44 #if CHAR_MIN < 0
45 return c >= 0 && c < 0x20;
46 #else
47 return c < 0x20;
48 #endif
49 }
50
52 yconstfn bool
53 iscntrl_C1(char c) ynothrow
54 {
55 return (unsigned(c) & 0xFFU) >= 0x80 && (unsigned(c) & 0xFFU) < 0xA0;
56 }
57
62 yconstfn bool
63 iscntrl_ASCII(char c) ynothrow
64 {
65 return iscntrl_C0(c) || c == 0x7F;
66 }
67
69 yconstfn bool
70 iscntrl_ISO8859_11(char c) ynothrow
71 {
72 return iscntrl_C0(c)
73 || ((unsigned(c) & 0xFFU) >= 0x7F && (unsigned(c) & 0xFFU) <= 0xA0);
74 }
75
77 yconstfn bool
78 iscntrl_ISO8859_1(char c) ynothrow
79 {
80 return iscntrl_ISO8859_11(c) || (unsigned(c) & 0xFFU) == 0xAD;
81 }
82
83
88 yconstfn bool
89 isprint_ASCII(char c) ynothrow
90 {
91 return c >= 0x20 && c < 0x7F;
92 }
93
95 yconstfn bool
96 isprint_ISO8859_1(char c) ynothrow
97 {
98 return isprint_ASCII(c) || unsigned(c) > 0xA0;
99 }
100
107 yconstfn bool
108 isprint(char c) ynothrow
109 {
110 return yimpl(isprint_ISO8859_1(c));
111 }
112
121 yconstfn bool
122 isdigit(char c) ynothrow
123 {
124 return (unsigned(c) - '0') < 10U;
125 }
126
127
134 template<typename _tChar>
135 inline _tChar
136 tolower(_tChar c) ynothrow
137 {
138 return _tChar(std::towupper(wint_t(c)));
139 }
140 inline char
141 tolower(char c) ynothrow
142 {
143 return char(std::tolower(c));
144 }
145
146
147 template<typename _tChar>
148 inline _tChar
149 toupper(_tChar c) ynothrow
150 {
151 return _tChar(std::towlower(wint_t(c)));
152 }
153 inline char
154 toupper(char c) ynothrow
155 {
156 return char(std::toupper(c));
157 }
159
160
161 } // namespace ystdex;
162
163 #endif
164
ystdex::iscntrl_ISO8859_11
bool iscntrl_ISO8859_11(char c)
使用 ISO/IEC 8859-11(Latin/Thai) 字符集的 std::iscntrl 实现。
Definition: cctype.h:70
yconstfn
#define yconstfn
指定编译时常量函数。
Definition: ydef.h:680
ystdex::isdigit
bool isdigit(char c)
区域无关的 std::isdigit 实现。
Definition: cctype.h:122
ystdex::toupper
_tChar toupper(_tChar c)
Definition: cctype.h:149
ystdex::tolower
_tChar tolower(_tChar c)
转换大小写字符。
Definition: cctype.h:136
ystdex::tolower
char tolower(char c)
Definition: cctype.h:141
yimpl
#define yimpl(...)
实现标签。
Definition: ydef.h:262
ystdex::iscntrl_ASCII
bool iscntrl_ASCII(char c)
使用 US-ASCII 字符集的 std::isprint 实现。
Definition: cctype.h:63
platform_ex::Windows::unsigned
YF_API unsigned
Definition: NLS.h:52
ystdex::toupper
char toupper(char c)
Definition: cctype.h:154
ynothrow
#define ynothrow
YSLib 无异常抛出保证：若支持 noexcept 关键字， 指定特定的 noexcept 异常规范。
Definition: ydef.h:766
ystdex
特性测试宏。
Definition: ydef.h:822
ystdex::iscntrl_C0
bool iscntrl_C0(char c)
判断指定字符是否为 ISO/IEC 2022 定义的 C0 控制字符。
Definition: cctype.h:42
ystdex::iscntrl_C1
bool iscntrl_C1(char c)
判断指定字符是否为 ISO/IEC 2022 定义的 C1 控制字符。
Definition: cctype.h:53
ystdex::iscntrl_ISO8859_1
bool iscntrl_ISO8859_1(char c)
使用 ISO/IEC 8859-1 字符集的 std::iscntrl 实现。
Definition: cctype.h:78
CHRLib::c
c
Definition: CharacterProcessing.h:81
ystdex::isprint_ASCII
bool isprint_ASCII(char c)
使用 US-ASCII 字符集的 std::isprint 实现。
Definition: cctype.h:89
ystdex::isprint_ISO8859_1
bool isprint_ISO8859_1(char c)
使用 ISO/IEC 8859-1 字符集的 std::isprint 实现。
Definition: cctype.h:96
ystdex::isprint
bool isprint(char c)
区域无关的 std::isprint 实现。
Definition: cctype.h:108