source: trunk/Include/Classes/ActiveBasic/CType/CType.ab@ 400

Last change on this file since 400 was 400, checked in by イグトランス (egtra), 16 years ago

_System_CThreadCollectionでのクラスインスタンスへのポインタの使用を除去、参照変数構文へ。

File size: 4.7 KB
Line 
1/*!
2@file Classes/ActiveBasic/CType/CType.ab
3@brief ASCII文字分類関数群
4@author Egtra
5@date 2007/11/25
6*/
7
8Namespace ActiveBasic
9Namespace CType
10
11Namespace Detail
12
13Function Widen(c As CHAR) As WCHAR
14 Return c As Byte As WCHAR
15End Function
16
17Function Narrow(c As WCHAR) As CHAR
18 Return c As Byte As CHAR
19End Function
20
21End Namespace 'Detail
22
23/*!
24@brief ASCIIのアルファベットまたは数字かどうか
25@author Egtra
26@date 2007/11/25
27*/
28Function IsAlnum(c As WCHAR) As Boolean
29 Return IsUpper(c) Or IsLower(c) Or IsDigit(c)
30End Function
31
32/*!
33@brief ASCIIのアルファベットかどうか
34@author Egtra
35@date 2007/11/25
36*/
37Function IsAlpha(c As WCHAR) As Boolean
38 Return IsUpper(c) Or IsLower(c)
39End Function
40
41/*!
42@brief ASCIIの行内に置ける空白文字かどうか
43@author Egtra
44@date 2007/11/25
45ようするにASCIIでは空白とタブ
46*/
47Function IsBlank(c As WCHAR) As Boolean
48 Return c = &h20 Or c = &h09 'space or tab
49End Function
50
51/*!
52@brief ASCIIの制御文字かどうか
53@author Egtra
54@date 2007/11/25
55*/
56Function IsCntrl(c As WCHAR) As Boolean
57 Return c < &h20 Or c = &h7f
58End Function
59
60/*!
61@brief ASCIIの数字かどうか
62@author Egtra
63@date 2007/11/25
64*/
65Function IsDigit(c As WCHAR) As Boolean
66 Return (c As DWord Xor &h30) < 10
67End Function
68
69/*!
70@brief ASCIIの図形文字かどうか
71@author Egtra
72@date 2007/11/25
73図形文字とは、空白以外の表示文字
74*/
75Function IsGraph(c As WCHAR) As Boolean
76 Return (c As DWord - &h21) < (&h7e - &h21)
77End Function
78
79/*!
80@brief ASCIIのアルファベッの小文字かどうか
81@author Egtra
82@date 2007/11/25
83*/
84Function IsLower(c As WCHAR) As Boolean
85 Return c As DWord - &h61 < 26 ' &h61 = Asc("a")
86End Function
87
88/*!
89@brief ASCIIの表示文字かどうか
90@author Egtra
91@date 2007/11/25
92制御文字でないもの、空白も表示文字に含む
93*/
94Function IsPrint(c As WCHAR) As Boolean
95 Return (c As DWord - &h20) < (&h7e - &h20)
96End Function
97
98/*!
99@brief ASCIIの区切り数字かどうか
100@author Egtra
101@date 2007/11/25
102アルファベットでも数字でもない図形文字のこと
103*/
104Function IsPunct(c As WCHAR) As Boolean
105 Return c < &h7f And IsGraph(c) And (Not IsAlnum(c))
106End Function
107
108/*!
109@brief ASCIIの空白文字かどうか
110@author Egtra
111@date 2008/01/22
112*/
113Function IsSpace(c As WCHAR) As Boolean
114 Return c As DWord - 9 < 4 Or c = &h20 ' &h41 = Asc("A")
115End Function
116
117/*!
118@brief ASCIIのアルファベットの大文字かどうか
119@author Egtra
120@date 2007/11/25
121*/
122Function IsUpper(c As WCHAR) As Boolean
123 Return c As DWord - &h41 < 26 ' &h41 = Asc("A")
124End Function
125
126/*!
127@brief ASCIIの十六進法で記す際に用いられる文字かどうか
128@author Egtra
129@date 2007/11/25
130*/
131Function IsXDigit(c As WCHAR) As Boolean
132 Return IsDigit(c) Or ((c As DWord And (Not &h20)) - &h41 < 5)
133End Function
134
135/*!
136@brief ASCIIのアルファベット大文字を小文字にする
137@author Egtra
138@date 2007/11/25
139*/
140Function ToLower(c As WCHAR) As WCHAR
141 If IsUpper(c) Then
142 Return c Or &h20
143 Else
144 Return c
145 End If
146End Function
147
148/*!
149@brief ASCIIのアルファベット小文字を大文字にする
150@author Egtra
151@date 2007/11/25
152*/
153Function ToUpper(c As WCHAR) As WCHAR
154 If IsLower(c) Then
155 Return c And (Not &h20)
156 Else
157 Return c
158 End If
159End Function
160
161/*!
162@overload
163*/
164Function IsAlnum(c As CHAR) As Boolean
165 Return IsAlnum(Detail.Widen(c))
166End Function
167
168/*!
169@overload
170*/
171Function IsAlpha(c As CHAR) As Boolean
172 Return IsAlpha(Detail.Widen(c))
173End Function
174
175/*!
176@overload
177*/
178Function IsBlank(c As CHAR) As Boolean
179 Return IsBlank(Detail.Widen(c))
180End Function
181
182/*!
183@overload
184*/
185Function IsCntrl(c As CHAR) As Boolean
186 Return IsCntrl(Detail.Widen(c))
187End Function
188
189/*!
190@overload
191*/
192Function IsDigit(c As CHAR) As Boolean
193 Return IsDigit(Detail.Widen(c))
194End Function
195
196/*!
197@overload
198*/
199Function IsGraph(c As CHAR) As Boolean
200 Return IsGraph(Detail.Widen(c))
201End Function
202
203/*!
204@overload
205*/
206Function IsLower(c As CHAR) As Boolean
207 Return IsLower(Detail.Widen(c))
208End Function
209
210/*!
211@overload
212*/
213Function IsPrint(c As CHAR) As Boolean
214 Return IsPrint(Detail.Widen(c))
215End Function
216
217/*!
218@overload
219*/
220Function IsPunct(c As CHAR) As Boolean
221 Return IsPunct(Detail.Widen(c))
222End Function
223
224/*!
225@overload
226*/
227Function IsSpace(c As CHAR) As Boolean
228 Return IsSpace(Detail.Widen(c))
229End Function
230
231/*!
232@overload
233*/
234Function IsUpper(c As CHAR) As Boolean
235 Return IsUpper(Detail.Widen(c))
236End Function
237
238/*!
239@overload
240*/
241Function IsXDigit(c As CHAR) As Boolean
242 Return IsXDigit(Detail.Widen(c))
243End Function
244
245/*!
246@overload
247*/
248Function ToLower(c As CHAR) As CHAR
249 Return Detail.Narrow(ToLower(Detail.Widen(c)))
250End Function
251
252/*!
253@overload
254*/
255Function ToUpper(c As CHAR) As CHAR
256 Return Detail.Narrow(ToUpper(Detail.Widen(c)))
257End Function
258
259End Namespace 'CType
260End Namespace 'ActiveBasic
Note: See TracBrowser for help on using the repository browser.