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