]>
Commit | Line | Data |
---|---|---|
2aa62f2b | 1 | /** @file\r |
2 | Implementation specific support for Single-byte character classification and\r | |
3 | case conversion macros and function declarations.\r | |
4 | \r | |
5 | This file is intended to only be included by <ctype.h>.\r | |
6 | \r | |
7 | Copyright (c) 2010 - 2011, Intel Corporation. All rights reserved.<BR>\r | |
8 | This program and the accompanying materials are licensed and made available under\r | |
9 | the terms and conditions of the BSD License that accompanies this distribution.\r | |
10 | The full text of the license may be found at\r | |
11 | http://opensource.org/licenses/bsd-license.\r | |
12 | \r | |
13 | THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r | |
14 | WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r | |
2aa62f2b | 15 | **/\r |
16 | #ifndef _CTYPE_H\r | |
17 | #error This file, <sys/_ctype.h>, may only be included by <ctype.h>.\r | |
18 | #endif\r | |
19 | \r | |
20 | __BEGIN_DECLS\r | |
681cc25c | 21 | extern const UINT16 *_cClass; ///< Locale independent pointer to Character Classification Table.\r |
22 | extern const UINT8 *_uConvT; ///< Locale independent pointer to Lowercase to Uppercase Conversion Table.\r | |
23 | extern const UINT8 *_lConvT; ///< Locale independent pointer to Uppercase to Lowercase Conversion Table.\r | |
2aa62f2b | 24 | \r |
681cc25c | 25 | extern int __isCClass( int _c, unsigned int mask); ///< Internal character classification function.\r |
2aa62f2b | 26 | __END_DECLS\r |
27 | \r | |
28 | \r | |
0c1992fb | 29 | /** @{\r |
30 | Character Class bit masks.\r | |
681cc25c | 31 | **/\r |
32 | #define _CC 0x0001U ///< Control Characters\r | |
33 | #define _CW 0x0002U ///< White Space\r | |
34 | #define _CP 0x0004U ///< Punctuation\r | |
35 | #define _CD 0x0008U ///< Digits [0-9]\r | |
36 | #define _CU 0x0010U ///< Uppercase Letter [A-Z]\r | |
37 | #define _CL 0x0020U ///< Lowercase Letter [a-z]\r | |
38 | #define _CX 0x0040U ///< Hexadecimal Digits [A-Fa-f]\r | |
0c1992fb | 39 | #define _C0 0x0080U ///< Path Separator Characters, '/' and '\\'\r |
681cc25c | 40 | #define _CS 0x0100U ///< Space Characters, ' ' in C locale\r |
41 | #define _CG 0x0200U ///< Graphic Characters\r | |
42 | #define _CB 0x0400U ///< Blank Characters, ' ' and '\t' in C locale\r | |
2aa62f2b | 43 | #define _C4 0x0800U\r |
681cc25c | 44 | #define _XA 0x1000U ///< eXtra Alpha characters not in _CU or _CL\r |
2aa62f2b | 45 | #define _C6 0x2000U\r |
46 | #define _C7 0x4000U\r | |
47 | #define _C8 0x8000U\r | |
681cc25c | 48 | /// @}\r |
2aa62f2b | 49 | \r |
50 | #ifndef NO_CTYPE_MACROS\r | |
51 | #define __isCClass( _c, mask) (((_c) < 0 || (_c) > 127) ? 0 : (_cClass[(_c)] & (mask)))\r | |
52 | #define __toLower( _c) ((__isCClass( ((int)_c), (_CU))) ? _lConvT[(_c)] : (_c))\r | |
53 | #define __toUpper( _c) ((__isCClass( ((int)_c), (_CL))) ? _uConvT[(_c)] : (_c))\r | |
54 | #endif /* NO_CTYPE_MACROS */\r | |
55 | \r | |
56 | /* Macros used by implementation functions */\r | |
57 | #define __isHexLetter(_c) (__isCClass( (int)c, (_CX)))\r | |
58 | \r | |
59 | #ifdef _CTYPE_PRIVATE\r | |
60 | #define _CTYPE_NUM_CHARS (256)\r | |
61 | \r | |
62 | #define _CTYPE_ID "BSDCTYPE"\r | |
63 | #define _CTYPE_REV 2\r | |
64 | \r | |
65 | extern const UINT16 _C_CharClassTable[];\r | |
66 | extern const UINT8 _C_ToUpperTable[];\r | |
67 | extern const UINT8 _C_ToLowerTable[];\r | |
68 | #endif\r |