Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

453 lines
18 KiB

  1. /***
  2. *ctype.c - _ctype definition file
  3. *
  4. * Copyright (c) 1989-2001, Microsoft Corporation. All rights reserved.
  5. *
  6. *Purpose:
  7. * _ctype definition file of character classification data. This file
  8. * initializes the array used by the character classification macros
  9. * in ctype.h.
  10. *
  11. *Revision History:
  12. * 06-08-89 PHG Module created, based on asm version
  13. * 08-28-89 JCR Corrected _ctype declaration to match ctype.h
  14. * 04-06-90 GJF Added #include <cruntime.h>. Also, fixed the copyright.
  15. * 10-08-91 ETC _ctype table is unsigned short under _INTL.
  16. * 11-11-91 ETC Declare _pctype and _pwctype under _INTL.
  17. * 12-16-91 ETC Make ctype table width independent of _INTL, use
  18. * _NEWCTYPETABLE for short table, else char.
  19. * 04-06-92 KRS Remove _INTL switches.
  20. * 01-19-03 CFW Move to _NEWCTYPETABLE, remove switch.
  21. * 04-06-93 SKS Change _VARTYPE1 to nothing
  22. * 04-11-94 GJF Made definitions of _p[w]ctype conditional on ndef
  23. * DLL_FOR_WIN32S.
  24. * 05-13-99 PML Remove Win32s
  25. * 09-06-00 GB Introduced _wctype and made _ctype to const
  26. * 01-29-01 GB Added _func function version of data variable used in msvcprt.lib
  27. * to work with STATIC_CPPLIB
  28. *
  29. *******************************************************************************/
  30. #include <cruntime.h>
  31. #include <windows.h>
  32. #include <ctype.h>
  33. #include <wchar.h>
  34. #ifndef CRTDLL
  35. const unsigned short *_pctype = __newctype+128; /* pointer to table for char's */
  36. #else
  37. const unsigned short *_pctype = _ctype+1; /* pointer to table for char's */
  38. #endif
  39. const unsigned short *_pwctype = _wctype+1; /* pointer to table for wchar_t's */
  40. _CRTIMP const unsigned short *__cdecl __pwctype_func(void)
  41. {
  42. return _pwctype;
  43. }
  44. _CRTIMP const unsigned short *__cdecl __pctype_func(void)
  45. {
  46. return _pctype;
  47. }
  48. const unsigned short _wctype[] = {
  49. 0, /* -1 EOF */
  50. _CONTROL , /* 00 (NUL) */
  51. _CONTROL , /* 01 (SOH) */
  52. _CONTROL , /* 02 (STX) */
  53. _CONTROL , /* 03 (ETX) */
  54. _CONTROL , /* 04 (EOT) */
  55. _CONTROL , /* 05 (ENQ) */
  56. _CONTROL , /* 06 (ACK) */
  57. _CONTROL , /* 07 (BEL) */
  58. _CONTROL , /* 08 (BS) */
  59. _SPACE | _CONTROL | _BLANK , /* 09 (HT) */
  60. _SPACE | _CONTROL , /* 0A (LF) */
  61. _SPACE | _CONTROL , /* 0B (VT) */
  62. _SPACE | _CONTROL , /* 0C (FF) */
  63. _SPACE | _CONTROL , /* 0D (CR) */
  64. _CONTROL , /* 0E (SI) */
  65. _CONTROL , /* 0F (SO) */
  66. _CONTROL , /* 10 (DLE) */
  67. _CONTROL , /* 11 (DC1) */
  68. _CONTROL , /* 12 (DC2) */
  69. _CONTROL , /* 13 (DC3) */
  70. _CONTROL , /* 14 (DC4) */
  71. _CONTROL , /* 15 (NAK) */
  72. _CONTROL , /* 16 (SYN) */
  73. _CONTROL , /* 17 (ETB) */
  74. _CONTROL , /* 18 (CAN) */
  75. _CONTROL , /* 19 (EM) */
  76. _CONTROL , /* 1A (SUB) */
  77. _CONTROL , /* 1B (ESC) */
  78. _CONTROL , /* 1C (FS) */
  79. _CONTROL , /* 1D (GS) */
  80. _CONTROL , /* 1E (RS) */
  81. _CONTROL , /* 1F (US) */
  82. _SPACE | _BLANK , /* 20 SPACE */
  83. _PUNCT , /* 21 ! */
  84. _PUNCT , /* 22 " */
  85. _PUNCT , /* 23 # */
  86. _PUNCT , /* 24 $ */
  87. _PUNCT , /* 25 % */
  88. _PUNCT , /* 26 & */
  89. _PUNCT , /* 27 ' */
  90. _PUNCT , /* 28 ( */
  91. _PUNCT , /* 29 ) */
  92. _PUNCT , /* 2A * */
  93. _PUNCT , /* 2B + */
  94. _PUNCT , /* 2C , */
  95. _PUNCT , /* 2D - */
  96. _PUNCT , /* 2E . */
  97. _PUNCT , /* 2F / */
  98. _DIGIT | _HEX , /* 30 0 */
  99. _DIGIT | _HEX , /* 31 1 */
  100. _DIGIT | _HEX , /* 32 2 */
  101. _DIGIT | _HEX , /* 33 3 */
  102. _DIGIT | _HEX , /* 34 4 */
  103. _DIGIT | _HEX , /* 35 5 */
  104. _DIGIT | _HEX , /* 36 6 */
  105. _DIGIT | _HEX , /* 37 7 */
  106. _DIGIT | _HEX , /* 38 8 */
  107. _DIGIT | _HEX , /* 39 9 */
  108. _PUNCT , /* 3A : */
  109. _PUNCT , /* 3B ; */
  110. _PUNCT , /* 3C < */
  111. _PUNCT , /* 3D = */
  112. _PUNCT , /* 3E > */
  113. _PUNCT , /* 3F ? */
  114. _PUNCT , /* 40 @ */
  115. _UPPER | _HEX | C1_ALPHA , /* 41 A */
  116. _UPPER | _HEX | C1_ALPHA , /* 42 B */
  117. _UPPER | _HEX | C1_ALPHA , /* 43 C */
  118. _UPPER | _HEX | C1_ALPHA , /* 44 D */
  119. _UPPER | _HEX | C1_ALPHA , /* 45 E */
  120. _UPPER | _HEX | C1_ALPHA , /* 46 F */
  121. _UPPER | C1_ALPHA , /* 47 G */
  122. _UPPER | C1_ALPHA , /* 48 H */
  123. _UPPER | C1_ALPHA , /* 49 I */
  124. _UPPER | C1_ALPHA , /* 4A J */
  125. _UPPER | C1_ALPHA , /* 4B K */
  126. _UPPER | C1_ALPHA , /* 4C L */
  127. _UPPER | C1_ALPHA , /* 4D M */
  128. _UPPER | C1_ALPHA , /* 4E N */
  129. _UPPER | C1_ALPHA , /* 4F O */
  130. _UPPER | C1_ALPHA , /* 50 P */
  131. _UPPER | C1_ALPHA , /* 51 Q */
  132. _UPPER | C1_ALPHA , /* 52 R */
  133. _UPPER | C1_ALPHA , /* 53 S */
  134. _UPPER | C1_ALPHA , /* 54 T */
  135. _UPPER | C1_ALPHA , /* 55 U */
  136. _UPPER | C1_ALPHA , /* 56 V */
  137. _UPPER | C1_ALPHA , /* 57 W */
  138. _UPPER | C1_ALPHA , /* 58 X */
  139. _UPPER | C1_ALPHA , /* 59 Y */
  140. _UPPER | C1_ALPHA , /* 5A Z */
  141. _PUNCT , /* 5B [ */
  142. _PUNCT , /* 5C \ */
  143. _PUNCT , /* 5D ] */
  144. _PUNCT , /* 5E ^ */
  145. _PUNCT , /* 5F _ */
  146. _PUNCT , /* 60 ` */
  147. _LOWER | _HEX | C1_ALPHA , /* 61 a */
  148. _LOWER | _HEX | C1_ALPHA , /* 62 b */
  149. _LOWER | _HEX | C1_ALPHA , /* 63 c */
  150. _LOWER | _HEX | C1_ALPHA , /* 64 d */
  151. _LOWER | _HEX | C1_ALPHA , /* 65 e */
  152. _LOWER | _HEX | C1_ALPHA , /* 66 f */
  153. _LOWER | C1_ALPHA , /* 67 g */
  154. _LOWER | C1_ALPHA , /* 68 h */
  155. _LOWER | C1_ALPHA , /* 69 i */
  156. _LOWER | C1_ALPHA , /* 6A j */
  157. _LOWER | C1_ALPHA , /* 6B k */
  158. _LOWER | C1_ALPHA , /* 6C l */
  159. _LOWER | C1_ALPHA , /* 6D m */
  160. _LOWER | C1_ALPHA , /* 6E n */
  161. _LOWER | C1_ALPHA , /* 6F o */
  162. _LOWER | C1_ALPHA , /* 70 p */
  163. _LOWER | C1_ALPHA , /* 71 q */
  164. _LOWER | C1_ALPHA , /* 72 r */
  165. _LOWER | C1_ALPHA , /* 73 s */
  166. _LOWER | C1_ALPHA , /* 74 t */
  167. _LOWER | C1_ALPHA , /* 75 u */
  168. _LOWER | C1_ALPHA , /* 76 v */
  169. _LOWER | C1_ALPHA , /* 77 w */
  170. _LOWER | C1_ALPHA , /* 78 x */
  171. _LOWER | C1_ALPHA , /* 79 y */
  172. _LOWER | C1_ALPHA , /* 7A z */
  173. _PUNCT , /* 7B { */
  174. _PUNCT , /* 7C | */
  175. _PUNCT , /* 7D } */
  176. _PUNCT , /* 7E ~ */
  177. _CONTROL , /* 7F (DEL) */
  178. _CONTROL ,
  179. _CONTROL ,
  180. _CONTROL ,
  181. _CONTROL ,
  182. _CONTROL ,
  183. _CONTROL ,
  184. _CONTROL ,
  185. _CONTROL ,
  186. _CONTROL ,
  187. _CONTROL ,
  188. _CONTROL ,
  189. _CONTROL ,
  190. _CONTROL ,
  191. _CONTROL ,
  192. _CONTROL ,
  193. _CONTROL ,
  194. _CONTROL ,
  195. _CONTROL ,
  196. _CONTROL ,
  197. _CONTROL ,
  198. _CONTROL ,
  199. _CONTROL ,
  200. _CONTROL ,
  201. _CONTROL ,
  202. _CONTROL ,
  203. _CONTROL ,
  204. _CONTROL ,
  205. _CONTROL ,
  206. _CONTROL ,
  207. _CONTROL ,
  208. _CONTROL ,
  209. _CONTROL ,
  210. _SPACE | _BLANK ,
  211. _PUNCT ,
  212. _PUNCT ,
  213. _PUNCT ,
  214. _PUNCT ,
  215. _PUNCT ,
  216. _PUNCT ,
  217. _PUNCT ,
  218. _PUNCT ,
  219. _PUNCT ,
  220. _PUNCT ,
  221. _PUNCT ,
  222. _PUNCT ,
  223. _PUNCT ,
  224. _PUNCT ,
  225. _PUNCT ,
  226. _PUNCT ,
  227. _PUNCT ,
  228. _DIGIT | _PUNCT ,
  229. _DIGIT | _PUNCT ,
  230. _PUNCT ,
  231. _PUNCT ,
  232. _PUNCT ,
  233. _PUNCT ,
  234. _PUNCT ,
  235. _DIGIT | _PUNCT ,
  236. _PUNCT ,
  237. _PUNCT ,
  238. _PUNCT ,
  239. _PUNCT ,
  240. _PUNCT ,
  241. _PUNCT ,
  242. _UPPER | C1_ALPHA ,
  243. _UPPER | C1_ALPHA ,
  244. _UPPER | C1_ALPHA ,
  245. _UPPER | C1_ALPHA ,
  246. _UPPER | C1_ALPHA ,
  247. _UPPER | C1_ALPHA ,
  248. _UPPER | C1_ALPHA ,
  249. _UPPER | C1_ALPHA ,
  250. _UPPER | C1_ALPHA ,
  251. _UPPER | C1_ALPHA ,
  252. _UPPER | C1_ALPHA ,
  253. _UPPER | C1_ALPHA ,
  254. _UPPER | C1_ALPHA ,
  255. _UPPER | C1_ALPHA ,
  256. _UPPER | C1_ALPHA ,
  257. _UPPER | C1_ALPHA ,
  258. _UPPER | C1_ALPHA ,
  259. _UPPER | C1_ALPHA ,
  260. _UPPER | C1_ALPHA ,
  261. _UPPER | C1_ALPHA ,
  262. _UPPER | C1_ALPHA ,
  263. _UPPER | C1_ALPHA ,
  264. _UPPER | C1_ALPHA ,
  265. _PUNCT ,
  266. _UPPER | C1_ALPHA ,
  267. _UPPER | C1_ALPHA ,
  268. _UPPER | C1_ALPHA ,
  269. _UPPER | C1_ALPHA ,
  270. _UPPER | C1_ALPHA ,
  271. _UPPER | C1_ALPHA ,
  272. _UPPER | C1_ALPHA ,
  273. _LOWER | C1_ALPHA ,
  274. _LOWER | C1_ALPHA ,
  275. _LOWER | C1_ALPHA ,
  276. _LOWER | C1_ALPHA ,
  277. _LOWER | C1_ALPHA ,
  278. _LOWER | C1_ALPHA ,
  279. _LOWER | C1_ALPHA ,
  280. _LOWER | C1_ALPHA ,
  281. _LOWER | C1_ALPHA ,
  282. _LOWER | C1_ALPHA ,
  283. _LOWER | C1_ALPHA ,
  284. _LOWER | C1_ALPHA ,
  285. _LOWER | C1_ALPHA ,
  286. _LOWER | C1_ALPHA ,
  287. _LOWER | C1_ALPHA ,
  288. _LOWER | C1_ALPHA ,
  289. _LOWER | C1_ALPHA ,
  290. _LOWER | C1_ALPHA ,
  291. _LOWER | C1_ALPHA ,
  292. _LOWER | C1_ALPHA ,
  293. _LOWER | C1_ALPHA ,
  294. _LOWER | C1_ALPHA ,
  295. _LOWER | C1_ALPHA ,
  296. _LOWER | C1_ALPHA ,
  297. _PUNCT ,
  298. _LOWER | C1_ALPHA ,
  299. _LOWER | C1_ALPHA ,
  300. _LOWER | C1_ALPHA ,
  301. _LOWER | C1_ALPHA ,
  302. _LOWER | C1_ALPHA ,
  303. _LOWER | C1_ALPHA ,
  304. _LOWER | C1_ALPHA ,
  305. _LOWER | C1_ALPHA ,
  306. _UPPER | C1_ALPHA
  307. };
  308. #ifndef CRTDLL
  309. const unsigned short __newctype[384] = {
  310. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  311. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  312. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  313. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  314. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  315. 0, 0, 0, 0, 0, 0, 0,
  316. 0, /* -1 EOF */
  317. _CONTROL, /* 00 (NUL) */
  318. _CONTROL, /* 01 (SOH) */
  319. _CONTROL, /* 02 (STX) */
  320. _CONTROL, /* 03 (ETX) */
  321. _CONTROL, /* 04 (EOT) */
  322. _CONTROL, /* 05 (ENQ) */
  323. _CONTROL, /* 06 (ACK) */
  324. _CONTROL, /* 07 (BEL) */
  325. _CONTROL, /* 08 (BS) */
  326. _SPACE+_CONTROL, /* 09 (HT) */
  327. _SPACE+_CONTROL, /* 0A (LF) */
  328. _SPACE+_CONTROL, /* 0B (VT) */
  329. _SPACE+_CONTROL, /* 0C (FF) */
  330. _SPACE+_CONTROL, /* 0D (CR) */
  331. _CONTROL, /* 0E (SI) */
  332. _CONTROL, /* 0F (SO) */
  333. _CONTROL, /* 10 (DLE) */
  334. _CONTROL, /* 11 (DC1) */
  335. _CONTROL, /* 12 (DC2) */
  336. _CONTROL, /* 13 (DC3) */
  337. _CONTROL, /* 14 (DC4) */
  338. _CONTROL, /* 15 (NAK) */
  339. _CONTROL, /* 16 (SYN) */
  340. _CONTROL, /* 17 (ETB) */
  341. _CONTROL, /* 18 (CAN) */
  342. _CONTROL, /* 19 (EM) */
  343. _CONTROL, /* 1A (SUB) */
  344. _CONTROL, /* 1B (ESC) */
  345. _CONTROL, /* 1C (FS) */
  346. _CONTROL, /* 1D (GS) */
  347. _CONTROL, /* 1E (RS) */
  348. _CONTROL, /* 1F (US) */
  349. _SPACE+_BLANK, /* 20 SPACE */
  350. _PUNCT, /* 21 ! */
  351. _PUNCT, /* 22 " */
  352. _PUNCT, /* 23 # */
  353. _PUNCT, /* 24 $ */
  354. _PUNCT, /* 25 % */
  355. _PUNCT, /* 26 & */
  356. _PUNCT, /* 27 ' */
  357. _PUNCT, /* 28 ( */
  358. _PUNCT, /* 29 ) */
  359. _PUNCT, /* 2A * */
  360. _PUNCT, /* 2B + */
  361. _PUNCT, /* 2C , */
  362. _PUNCT, /* 2D - */
  363. _PUNCT, /* 2E . */
  364. _PUNCT, /* 2F / */
  365. _DIGIT+_HEX, /* 30 0 */
  366. _DIGIT+_HEX, /* 31 1 */
  367. _DIGIT+_HEX, /* 32 2 */
  368. _DIGIT+_HEX, /* 33 3 */
  369. _DIGIT+_HEX, /* 34 4 */
  370. _DIGIT+_HEX, /* 35 5 */
  371. _DIGIT+_HEX, /* 36 6 */
  372. _DIGIT+_HEX, /* 37 7 */
  373. _DIGIT+_HEX, /* 38 8 */
  374. _DIGIT+_HEX, /* 39 9 */
  375. _PUNCT, /* 3A : */
  376. _PUNCT, /* 3B ; */
  377. _PUNCT, /* 3C < */
  378. _PUNCT, /* 3D = */
  379. _PUNCT, /* 3E > */
  380. _PUNCT, /* 3F ? */
  381. _PUNCT, /* 40 @ */
  382. _UPPER+_HEX, /* 41 A */
  383. _UPPER+_HEX, /* 42 B */
  384. _UPPER+_HEX, /* 43 C */
  385. _UPPER+_HEX, /* 44 D */
  386. _UPPER+_HEX, /* 45 E */
  387. _UPPER+_HEX, /* 46 F */
  388. _UPPER, /* 47 G */
  389. _UPPER, /* 48 H */
  390. _UPPER, /* 49 I */
  391. _UPPER, /* 4A J */
  392. _UPPER, /* 4B K */
  393. _UPPER, /* 4C L */
  394. _UPPER, /* 4D M */
  395. _UPPER, /* 4E N */
  396. _UPPER, /* 4F O */
  397. _UPPER, /* 50 P */
  398. _UPPER, /* 51 Q */
  399. _UPPER, /* 52 R */
  400. _UPPER, /* 53 S */
  401. _UPPER, /* 54 T */
  402. _UPPER, /* 55 U */
  403. _UPPER, /* 56 V */
  404. _UPPER, /* 57 W */
  405. _UPPER, /* 58 X */
  406. _UPPER, /* 59 Y */
  407. _UPPER, /* 5A Z */
  408. _PUNCT, /* 5B [ */
  409. _PUNCT, /* 5C \ */
  410. _PUNCT, /* 5D ] */
  411. _PUNCT, /* 5E ^ */
  412. _PUNCT, /* 5F _ */
  413. _PUNCT, /* 60 ` */
  414. _LOWER+_HEX, /* 61 a */
  415. _LOWER+_HEX, /* 62 b */
  416. _LOWER+_HEX, /* 63 c */
  417. _LOWER+_HEX, /* 64 d */
  418. _LOWER+_HEX, /* 65 e */
  419. _LOWER+_HEX, /* 66 f */
  420. _LOWER, /* 67 g */
  421. _LOWER, /* 68 h */
  422. _LOWER, /* 69 i */
  423. _LOWER, /* 6A j */
  424. _LOWER, /* 6B k */
  425. _LOWER, /* 6C l */
  426. _LOWER, /* 6D m */
  427. _LOWER, /* 6E n */
  428. _LOWER, /* 6F o */
  429. _LOWER, /* 70 p */
  430. _LOWER, /* 71 q */
  431. _LOWER, /* 72 r */
  432. _LOWER, /* 73 s */
  433. _LOWER, /* 74 t */
  434. _LOWER, /* 75 u */
  435. _LOWER, /* 76 v */
  436. _LOWER, /* 77 w */
  437. _LOWER, /* 78 x */
  438. _LOWER, /* 79 y */
  439. _LOWER, /* 7A z */
  440. _PUNCT, /* 7B { */
  441. _PUNCT, /* 7C | */
  442. _PUNCT, /* 7D } */
  443. _PUNCT, /* 7E ~ */
  444. _CONTROL, /* 7F (DEL) */
  445. /* and the rest are 0... */
  446. };
  447. #endif