Code

remove warnings
[inkscape.git] / src / dom / charclass.cpp
1 /**\r
2  * Phoebe DOM Implementation.\r
3  *\r
4  * This is a C++ approximation of the W3C DOM model, which follows\r
5  * fairly closely the specifications in the various .idl files, copies of\r
6  * which are provided for reference.  Most important is this one:\r
7  *\r
8  * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html\r
9  *\r
10  * Authors:\r
11  *   Bob Jamison\r
12  *\r
13  * Copyright (C) 2005 Bob Jamison\r
14  *\r
15  *  This library is free software; you can redistribute it and/or\r
16  *  modify it under the terms of the GNU Lesser General Public\r
17  *  License as published by the Free Software Foundation; either\r
18  *  version 2.1 of the License, or (at your option) any later version.\r
19  *\r
20  *  This library is distributed in the hope that it will be useful,\r
21  *  but WITHOUT ANY WARRANTY; without even the implied warranty of\r
22  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
23  *  Lesser General Public License for more details.\r
24  *\r
25  *  You should have received a copy of the GNU Lesser General Public\r
26  *  License along with this library; if not, write to the Free Software\r
27  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA\r
28  */\r
29 \r
30 #include "charclass.h"\r
31 \r
32 \r
33 /**\r
34  * (impl) LetterOrDigit ::=\r
35  *        Letter | Digit\r
36  */\r
37 bool isLetterOrDigit(int ch)\r
38 {\r
39     if (isLetter(ch))\r
40         return true;\r
41     if (isDigit(ch))\r
42         return true;\r
43     return false;\r
44 }\r
45 \r
46 /**\r
47  * (84) Letter ::=\r
48  *        BaseChar | Ideographic\r
49  */\r
50 bool isLetter(int ch)\r
51 {\r
52     if (isBaseChar(ch))\r
53         return true;\r
54     if (isIdeographic(ch))\r
55         return true;\r
56     return false;\r
57 }\r
58 \r
59 \r
60 /**\r
61  * (85) BaseChar ::=\r
62  */\r
63 bool isBaseChar(int ch)\r
64 {\r
65 \r
66     if ( (0x0041 <= ch && ch <= 0x005A) |\r
67          (0x0061 <= ch && ch <= 0x007A) |\r
68          (0x00C0 <= ch && ch <= 0x00D6) |\r
69          (0x00D8 <= ch && ch <= 0x00F6) |\r
70          (0x00F8 <= ch && ch <= 0x00FF) |\r
71          (0x0100 <= ch && ch <= 0x0131) |\r
72          (0x0134 <= ch && ch <= 0x013E) |\r
73          (0x0141 <= ch && ch <= 0x0148) |\r
74          (0x014A <= ch && ch <= 0x017E) |\r
75          (0x0180 <= ch && ch <= 0x01C3) |\r
76          (0x01CD <= ch && ch <= 0x01F0) |\r
77          (0x01F4 <= ch && ch <= 0x01F5) |\r
78          (0x01FA <= ch && ch <= 0x0217) |\r
79          (0x0250 <= ch && ch <= 0x02A8) |\r
80          (0x02BB <= ch && ch <= 0x02C1) |\r
81          ch == 0x0386 |\r
82          (0x0388 <= ch && ch <= 0x038A) |\r
83          ch == 0x038C |\r
84          (0x038E <= ch && ch <= 0x03A1) |\r
85          (0x03A3 <= ch && ch <= 0x03CE) |\r
86          (0x03D0 <= ch && ch <= 0x03D6) |\r
87          ch == 0x03DA |\r
88          ch == 0x03DC |\r
89          ch == 0x03DE |\r
90          ch == 0x03E0 |\r
91          (0x03E2 <= ch && ch <= 0x03F3) |\r
92          (0x0401 <= ch && ch <= 0x040C) |\r
93          (0x040E <= ch && ch <= 0x044F) |\r
94          (0x0451 <= ch && ch <= 0x045C) |\r
95          (0x045E <= ch && ch <= 0x0481) |\r
96          (0x0490 <= ch && ch <= 0x04C4) |\r
97          (0x04C7 <= ch && ch <= 0x04C8) |\r
98          (0x04CB <= ch && ch <= 0x04CC) |\r
99          (0x04D0 <= ch && ch <= 0x04EB) |\r
100          (0x04EE <= ch && ch <= 0x04F5) |\r
101          (0x04F8 <= ch && ch <= 0x04F9) |\r
102          (0x0531 <= ch && ch <= 0x0556) |\r
103          ch == 0x0559 |\r
104          (0x0561 <= ch && ch <= 0x0586) |\r
105          (0x05D0 <= ch && ch <= 0x05EA) |\r
106          (0x05F0 <= ch && ch <= 0x05F2) |\r
107          (0x0621 <= ch && ch <= 0x063A) |\r
108          (0x0641 <= ch && ch <= 0x064A) |\r
109          (0x0671 <= ch && ch <= 0x06B7) |\r
110          (0x06BA <= ch && ch <= 0x06BE) |\r
111          (0x06C0 <= ch && ch <= 0x06CE) |\r
112          (0x06D0 <= ch && ch <= 0x06D3) |\r
113          ch == 0x06D5 |\r
114          (0x06E5 <= ch && ch <= 0x06E6) |\r
115          (0x0905 <= ch && ch <= 0x0939) |\r
116          ch == 0x093D |\r
117          (0x0958 <= ch && ch <= 0x0961) |\r
118          (0x0985 <= ch && ch <= 0x098C) |\r
119          (0x098F <= ch && ch <= 0x0990) |\r
120          (0x0993 <= ch && ch <= 0x09A8) |\r
121          (0x09AA <= ch && ch <= 0x09B0) |\r
122          ch == 0x09B2 |\r
123          (0x09B6 <= ch && ch <= 0x09B9) |\r
124          (0x09DC <= ch && ch <= 0x09DD) |\r
125          (0x09DF <= ch && ch <= 0x09E1) |\r
126          (0x09F0 <= ch && ch <= 0x09F1) |\r
127          (0x0A05 <= ch && ch <= 0x0A0A) |\r
128          (0x0A0F <= ch && ch <= 0x0A10) |\r
129          (0x0A13 <= ch && ch <= 0x0A28) |\r
130          (0x0A2A <= ch && ch <= 0x0A30) |\r
131          (0x0A32 <= ch && ch <= 0x0A33) |\r
132          (0x0A35 <= ch && ch <= 0x0A36) |\r
133          (0x0A38 <= ch && ch <= 0x0A39) |\r
134          (0x0A59 <= ch && ch <= 0x0A5C) |\r
135          ch == 0x0A5E |\r
136          (0x0A72 <= ch && ch <= 0x0A74) |\r
137          (0x0A85 <= ch && ch <= 0x0A8B) |\r
138          ch == 0x0A8D |\r
139          (0x0A8F <= ch && ch <= 0x0A91) |\r
140          (0x0A93 <= ch && ch <= 0x0AA8) |\r
141          (0x0AAA <= ch && ch <= 0x0AB0) |\r
142          (0x0AB2 <= ch && ch <= 0x0AB3) |\r
143          (0x0AB5 <= ch && ch <= 0x0AB9) |\r
144          ch == 0x0ABD |\r
145          ch == 0x0AE0 |\r
146          (0x0B05 <= ch && ch <= 0x0B0C) |\r
147          (0x0B0F <= ch && ch <= 0x0B10) |\r
148          (0x0B13 <= ch && ch <= 0x0B28) |\r
149          (0x0B2A <= ch && ch <= 0x0B30) |\r
150          (0x0B32 <= ch && ch <= 0x0B33) |\r
151          (0x0B36 <= ch && ch <= 0x0B39) |\r
152          ch == 0x0B3D |\r
153          (0x0B5C <= ch && ch <= 0x0B5D) |\r
154          (0x0B5F <= ch && ch <= 0x0B61) |\r
155          (0x0B85 <= ch && ch <= 0x0B8A) |\r
156          (0x0B8E <= ch && ch <= 0x0B90) |\r
157          (0x0B92 <= ch && ch <= 0x0B95) |\r
158          (0x0B99 <= ch && ch <= 0x0B9A) |\r
159          ch == 0x0B9C |\r
160          (0x0B9E <= ch && ch <= 0x0B9F) |\r
161          (0x0BA3 <= ch && ch <= 0x0BA4) |\r
162          (0x0BA8 <= ch && ch <= 0x0BAA) |\r
163          (0x0BAE <= ch && ch <= 0x0BB5) |\r
164          (0x0BB7 <= ch && ch <= 0x0BB9) |\r
165          (0x0C05 <= ch && ch <= 0x0C0C) |\r
166          (0x0C0E <= ch && ch <= 0x0C10) |\r
167          (0x0C12 <= ch && ch <= 0x0C28) |\r
168          (0x0C2A <= ch && ch <= 0x0C33) |\r
169          (0x0C35 <= ch && ch <= 0x0C39) |\r
170          (0x0C60 <= ch && ch <= 0x0C61) |\r
171          (0x0C85 <= ch && ch <= 0x0C8C) |\r
172          (0x0C8E <= ch && ch <= 0x0C90) |\r
173          (0x0C92 <= ch && ch <= 0x0CA8) |\r
174          (0x0CAA <= ch && ch <= 0x0CB3) |\r
175          (0x0CB5 <= ch && ch <= 0x0CB9) |\r
176          ch == 0x0CDE |\r
177          (0x0CE0 <= ch && ch <= 0x0CE1) |\r
178          (0x0D05 <= ch && ch <= 0x0D0C) |\r
179          (0x0D0E <= ch && ch <= 0x0D10) |\r
180          (0x0D12 <= ch && ch <= 0x0D28) |\r
181          (0x0D2A <= ch && ch <= 0x0D39) |\r
182          (0x0D60 <= ch && ch <= 0x0D61) |\r
183          (0x0E01 <= ch && ch <= 0x0E2E) |\r
184          ch == 0x0E30 |\r
185          (0x0E32 <= ch && ch <= 0x0E33) |\r
186          (0x0E40 <= ch && ch <= 0x0E45) |\r
187          (0x0E81 <= ch && ch <= 0x0E82) |\r
188          ch == 0x0E84 |\r
189          (0x0E87 <= ch && ch <= 0x0E88) |\r
190          ch == 0x0E8A |\r
191          ch == 0x0E8D |\r
192          (0x0E94 <= ch && ch <= 0x0E97) |\r
193          (0x0E99 <= ch && ch <= 0x0E9F) |\r
194          (0x0EA1 <= ch && ch <= 0x0EA3) |\r
195          ch == 0x0EA5 |\r
196          ch == 0x0EA7 |\r
197          (0x0EAA <= ch && ch <= 0x0EAB) |\r
198          (0x0EAD <= ch && ch <= 0x0EAE) |\r
199          ch == 0x0EB0 |\r
200          (0x0EB2 <= ch && ch <= 0x0EB3) |\r
201          ch == 0x0EBD |\r
202          (0x0EC0 <= ch && ch <= 0x0EC4) |\r
203          (0x0F40 <= ch && ch <= 0x0F47) |\r
204          (0x0F49 <= ch && ch <= 0x0F69) |\r
205          (0x10A0 <= ch && ch <= 0x10C5) |\r
206          (0x10D0 <= ch && ch <= 0x10F6) |\r
207          ch == 0x1100 |\r
208          (0x1102 <= ch && ch <= 0x1103) |\r
209          (0x1105 <= ch && ch <= 0x1107) |\r
210          ch == 0x1109 |\r
211          (0x110B <= ch && ch <= 0x110C) |\r
212          (0x110E <= ch && ch <= 0x1112) |\r
213          ch == 0x113C |\r
214          ch == 0x113E |\r
215          ch == 0x1140 |\r
216          ch == 0x114C |\r
217          ch == 0x114E |\r
218          ch == 0x1150 |\r
219          (0x1154 <= ch && ch <= 0x1155) |\r
220          ch == 0x1159 |\r
221          (0x115F <= ch && ch <= 0x1161) |\r
222          ch == 0x1163 |\r
223          ch == 0x1165 |\r
224          ch == 0x1167 |\r
225          ch == 0x1169 |\r
226          (0x116D <= ch && ch <= 0x116E) |\r
227          (0x1172 <= ch && ch <= 0x1173) |\r
228          ch == 0x1175 |\r
229          ch == 0x119E |\r
230          ch == 0x11A8 |\r
231          ch == 0x11AB |\r
232          (0x11AE <= ch && ch <= 0x11AF) |\r
233          (0x11B7 <= ch && ch <= 0x11B8) |\r
234          ch == 0x11BA |\r
235          (0x11BC <= ch && ch <= 0x11C2) |\r
236          ch == 0x11EB |\r
237          ch == 0x11F0 |\r
238          ch == 0x11F9 |\r
239          (0x1E00 <= ch && ch <= 0x1E9B) |\r
240          (0x1EA0 <= ch && ch <= 0x1EF9) |\r
241          (0x1F00 <= ch && ch <= 0x1F15) |\r
242          (0x1F18 <= ch && ch <= 0x1F1D) |\r
243          (0x1F20 <= ch && ch <= 0x1F45) |\r
244          (0x1F48 <= ch && ch <= 0x1F4D) |\r
245          (0x1F50 <= ch && ch <= 0x1F57) |\r
246          ch == 0x1F59 |\r
247          ch == 0x1F5B |\r
248          ch == 0x1F5D |\r
249          (0x1F5F <= ch && ch <= 0x1F7D) |\r
250          (0x1F80 <= ch && ch <= 0x1FB4) |\r
251          (0x1FB6 <= ch && ch <= 0x1FBC) |\r
252          ch == 0x1FBE |\r
253          (0x1FC2 <= ch && ch <= 0x1FC4) |\r
254          (0x1FC6 <= ch && ch <= 0x1FCC) |\r
255          (0x1FD0 <= ch && ch <= 0x1FD3) |\r
256          (0x1FD6 <= ch && ch <= 0x1FDB) |\r
257          (0x1FE0 <= ch && ch <= 0x1FEC) |\r
258          (0x1FF2 <= ch && ch <= 0x1FF4) |\r
259          (0x1FF6 <= ch && ch <= 0x1FFC) |\r
260          ch == 0x2126 |\r
261          (0x212A <= ch && ch <= 0x212B) |\r
262          ch == 0x212E |\r
263          (0x2180 <= ch && ch <= 0x2182) |\r
264          (0x3041 <= ch && ch <= 0x3094) |\r
265          (0x30A1 <= ch && ch <= 0x30FA) |\r
266          (0x3105 <= ch && ch <= 0x312C) |\r
267          (0xAC00 <= ch && ch <= 0xD7A3)    )\r
268         return true;\r
269     return false;\r
270 }\r
271 \r
272 \r
273 \r
274 /**\r
275  * (86) Ideographic ::=\r
276  */\r
277 bool isIdeographic(int ch)\r
278 {\r
279     if ( (0x4E00 <= ch && ch <=0x9FA5) |\r
280           ch == 0x3007 |\r
281          (0x3021 <= ch && ch <=0x3029)  )\r
282         return true;\r
283     return false;\r
284 }\r
285 \r
286 /**\r
287  * (87) CombiningChar ::=\r
288  */\r
289 bool isCombiningChar(int ch)\r
290 {\r
291     if ( (0x0300 <= ch && ch <= 0x0345) |\r
292          (0x0360 <= ch && ch <= 0x0361) |\r
293          (0x0483 <= ch && ch <= 0x0486) |\r
294          (0x0591 <= ch && ch <= 0x05A1) |\r
295          (0x05A3 <= ch && ch <= 0x05B9) |\r
296          (0x05BB <= ch && ch <= 0x05BD) |\r
297          ch == 0x05BF |\r
298          (0x05C1 <= ch && ch <= 0x05C2) |\r
299          ch == 0x05C4 |\r
300          (0x064B <= ch && ch <= 0x0652) |\r
301          ch == 0x0670 |\r
302          (0x06D6 <= ch && ch <= 0x06DC) |\r
303          (0x06DD <= ch && ch <= 0x06DF) |\r
304          (0x06E0 <= ch && ch <= 0x06E4) |\r
305          (0x06E7 <= ch && ch <= 0x06E8) |\r
306          (0x06EA <= ch && ch <= 0x06ED) |\r
307          (0x0901 <= ch && ch <= 0x0903) |\r
308          ch == 0x093C |\r
309          (0x093E <= ch && ch <= 0x094C) |\r
310          ch == 0x094D |\r
311          (0x0951 <= ch && ch <= 0x0954) |\r
312          (0x0962 <= ch && ch <= 0x0963) |\r
313          (0x0981 <= ch && ch <= 0x0983) |\r
314          ch == 0x09BC |\r
315          ch == 0x09BE |\r
316          ch == 0x09BF |\r
317          (0x09C0 <= ch && ch <= 0x09C4) |\r
318          (0x09C7 <= ch && ch <= 0x09C8) |\r
319          (0x09CB <= ch && ch <= 0x09CD) |\r
320          ch == 0x09D7 |\r
321          (0x09E2 <= ch && ch <= 0x09E3) |\r
322          ch == 0x0A02 |\r
323          ch == 0x0A3C |\r
324          ch == 0x0A3E |\r
325          ch == 0x0A3F |\r
326          (0x0A40 <= ch && ch <= 0x0A42) |\r
327          (0x0A47 <= ch && ch <= 0x0A48) |\r
328          (0x0A4B <= ch && ch <= 0x0A4D) |\r
329          (0x0A70 <= ch && ch <= 0x0A71) |\r
330          (0x0A81 <= ch && ch <= 0x0A83) |\r
331          ch == 0x0ABC |\r
332          (0x0ABE <= ch && ch <= 0x0AC5) |\r
333          (0x0AC7 <= ch && ch <= 0x0AC9) |\r
334          (0x0ACB <= ch && ch <= 0x0ACD) |\r
335          (0x0B01 <= ch && ch <= 0x0B03) |\r
336          ch == 0x0B3C |\r
337          (0x0B3E <= ch && ch <= 0x0B43) |\r
338          (0x0B47 <= ch && ch <= 0x0B48) |\r
339          (0x0B4B <= ch && ch <= 0x0B4D) |\r
340          (0x0B56 <= ch && ch <= 0x0B57) |\r
341          (0x0B82 <= ch && ch <= 0x0B83) |\r
342          (0x0BBE <= ch && ch <= 0x0BC2) |\r
343          (0x0BC6 <= ch && ch <= 0x0BC8) |\r
344          (0x0BCA <= ch && ch <= 0x0BCD) |\r
345          ch == 0x0BD7 |\r
346          (0x0C01 <= ch && ch <= 0x0C03) |\r
347          (0x0C3E <= ch && ch <= 0x0C44) |\r
348          (0x0C46 <= ch && ch <= 0x0C48) |\r
349          (0x0C4A <= ch && ch <= 0x0C4D) |\r
350          (0x0C55 <= ch && ch <= 0x0C56) |\r
351          (0x0C82 <= ch && ch <= 0x0C83) |\r
352          (0x0CBE <= ch && ch <= 0x0CC4) |\r
353          (0x0CC6 <= ch && ch <= 0x0CC8) |\r
354          (0x0CCA <= ch && ch <= 0x0CCD) |\r
355          (0x0CD5 <= ch && ch <= 0x0CD6) |\r
356          (0x0D02 <= ch && ch <= 0x0D03) |\r
357          (0x0D3E <= ch && ch <= 0x0D43) |\r
358          (0x0D46 <= ch && ch <= 0x0D48) |\r
359          (0x0D4A <= ch && ch <= 0x0D4D) |\r
360          ch == 0x0D57 |\r
361          ch == 0x0E31 |\r
362          (0x0E34 <= ch && ch <= 0x0E3A) |\r
363          (0x0E47 <= ch && ch <= 0x0E4E) |\r
364          ch == 0x0EB1 |\r
365          (0x0EB4 <= ch && ch <= 0x0EB9) |\r
366          (0x0EBB <= ch && ch <= 0x0EBC) |\r
367          (0x0EC8 <= ch && ch <= 0x0ECD) |\r
368          (0x0F18 <= ch && ch <= 0x0F19) |\r
369          ch == 0x0F35 |\r
370          ch == 0x0F37 |\r
371          ch == 0x0F39 |\r
372          ch == 0x0F3E |\r
373          ch == 0x0F3F |\r
374          (0x0F71 <= ch && ch <= 0x0F84) |\r
375          (0x0F86 <= ch && ch <= 0x0F8B) |\r
376          (0x0F90 <= ch && ch <= 0x0F95) |\r
377          ch == 0x0F97 |\r
378          (0x0F99 <= ch && ch <= 0x0FAD) |\r
379          (0x0FB1 <= ch && ch <= 0x0FB7) |\r
380          ch == 0x0FB9 |\r
381          (0x20D0 <= ch && ch <= 0x20DC) |\r
382          ch == 0x20E1 |\r
383          (0x302A <= ch && ch <= 0x302F) |\r
384          ch == 0x3099 |\r
385          ch == 0x309A      )\r
386         return true;\r
387     return false;\r
388 }\r
389 \r
390 \r
391 /**\r
392  * (88) Digit ::=\r
393  */\r
394 bool isDigit(int ch)\r
395 {\r
396     if ( (0x0030 <= ch && ch <= 0x0039) |\r
397          (0x0660 <= ch && ch <= 0x0669) |\r
398          (0x06F0 <= ch && ch <= 0x06F9) |\r
399          (0x0966 <= ch && ch <= 0x096F) |\r
400          (0x09E6 <= ch && ch <= 0x09EF) |\r
401          (0x0A66 <= ch && ch <= 0x0A6F) |\r
402          (0x0AE6 <= ch && ch <= 0x0AEF) |\r
403          (0x0B66 <= ch && ch <= 0x0B6F) |\r
404          (0x0BE7 <= ch && ch <= 0x0BEF) |\r
405          (0x0C66 <= ch && ch <= 0x0C6F) |\r
406          (0x0CE6 <= ch && ch <= 0x0CEF) |\r
407          (0x0D66 <= ch && ch <= 0x0D6F) |\r
408          (0x0E50 <= ch && ch <= 0x0E59) |\r
409          (0x0ED0 <= ch && ch <= 0x0ED9) |\r
410          (0x0F20 <= ch && ch <= 0x0F29)   )\r
411         return true;\r
412     return false;\r
413 }\r
414 \r
415 \r
416 /**\r
417  * (89) Extender ::=\r
418  */\r
419 bool isExtender(int ch)\r
420 {\r
421     if ( ch == 0x00B7 |\r
422          ch == 0x02D0 |\r
423          ch == 0x02D1 |\r
424          ch == 0x0387 |\r
425          ch == 0x0640 |\r
426          ch == 0x0E46 |\r
427          ch == 0x0EC6 |\r
428          ch == 0x3005 |\r
429          (0x3031 <= ch && ch <= 0x3035) |\r
430          (0x309D <= ch && ch <= 0x309E) |\r
431          (0x30FC <= ch && ch <= 0x30FE)   )\r
432         return true;\r
433     return false;\r
434 }\r
435 \r
436 \r
437 \r
438 \r
439 \r
440 \r
441 /**\r
442  *\r
443  * Following are from unicode.org, in the UnicodeData file\r
444  * in the Unicode Database\r
445  */\r
446 \r
447 /**\r
448  * UNICODE general class Zs\r
449  */\r
450 bool isSpaceSeparator(int ch)\r
451 {\r
452     if (ch == 0x0020 ||\r
453         ch == 0x200A ||\r
454         ch == 0x2003 ||\r
455         ch == 0x205F ||\r
456         ch == 0x2005 ||\r
457         ch == 0x202F ||\r
458         ch == 0x2000 ||\r
459         ch == 0x180E ||\r
460         ch == 0x2001 ||\r
461         ch == 0x2004 ||\r
462         ch == 0x3000 ||\r
463         ch == 0x2008 ||\r
464         ch == 0x2006 ||\r
465         ch == 0x2002 ||\r
466         ch == 0x2007 ||\r
467         ch == 0x2009 ||\r
468         ch == 0x00A0 ||\r
469         ch == 0x1680)\r
470         return true;\r
471     return false;\r
472 }\r
473 \r
474 /**\r
475  * UNICODE general class Zl\r
476  */\r
477 bool isLineSeparator(int ch)\r
478 {\r
479     if (ch == 0x2028)\r
480         return true;\r
481     return false;\r
482 }\r
483 \r
484 /**\r
485  * UNICODE general class Zp\r
486  */\r
487 bool isParagraphSeparator(int ch)\r
488 {\r
489     if (ch == 0x2029)\r
490         return true;\r
491     return false;\r
492 }\r
493 \r
494 /**\r
495  * The union of the 3 space types.\r
496  */\r
497 bool isSpaceChar(int ch)\r
498 {\r
499     if ( isSpaceSeparator(ch) ||\r
500          isLineSeparator(ch)  ||\r
501          isParagraphSeparator(ch))\r
502         return true;\r
503     return false;\r
504 }\r
505 \r
506 /**\r
507  * 3 spaces in isSpaceChar() which don't break\r
508  */\r
509 bool isNonBreakingSpace(int ch)\r
510 {\r
511     if (ch == 0x00A0 || ch == 0x2007 || ch == 0x202F)\r
512         return true;\r
513     return false;\r
514 }\r
515 \r
516 /**\r
517  *\r
518  */\r
519 bool isWhitespace(int ch)\r
520 {\r
521     if (isSpaceChar(ch) && !isNonBreakingSpace(ch))\r
522         return true;\r
523     if (ch == 0x0009 || // HORIZONTAL TABULATION\r
524         ch == 0x000A || // LINE FEED.\r
525         ch == 0x000B || // VERTICAL TABULATION.\r
526         ch == 0x000C || // FORM FEED.\r
527         ch == 0x000D || // CARRIAGE RETURN.\r
528         ch == 0x001C || // FILE SEPARATOR.\r
529         ch == 0x001D || // GROUP SEPARATOR.\r
530         ch == 0x001E || // RECORD SEPARATOR.\r
531         ch == 0x001F)   // UNIT SEPARATOR.\r
532         return true;\r
533     return false;\r
534 }\r
535 \r
536 \r
537 \r
538 \r
539 \r
540 \r
541 \r
542 \r
543 \r
544 \r
545 \r