_ctype.h revision 4fd606d1f5abe38e1f42c38de1d2e895166bd0f4
/** @file
Implementation specific support for Single-byte character classification and
case conversion macros and function declarations.
This file is intended to only be included by <ctype.h>.
Copyright (c) 2010 - 2011, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials are licensed and made available under
the terms and conditions of the BSD License that accompanies this distribution.
The full text of the license may be found at
http://opensource.org/licenses/bsd-license.
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
#ifndef _CTYPE_H
#error This file, <sys/_ctype.h>, may only be included by <ctype.h>.
#endif
__BEGIN_DECLS
extern const UINT16 *_cClass; ///< Locale independent pointer to Character Classification Table.
extern const UINT8 *_uConvT; ///< Locale independent pointer to Lowercase to Uppercase Conversion Table.
extern const UINT8 *_lConvT; ///< Locale independent pointer to Uppercase to Lowercase Conversion Table.
extern int __isCClass( int _c, unsigned int mask); ///< Internal character classification function.
__END_DECLS
/** @{
Character Class bit masks.
**/
#define _CC 0x0001U ///< Control Characters
#define _CW 0x0002U ///< White Space
#define _CP 0x0004U ///< Punctuation
#define _CD 0x0008U ///< Digits [0-9]
#define _CU 0x0010U ///< Uppercase Letter [A-Z]
#define _CL 0x0020U ///< Lowercase Letter [a-z]
#define _CX 0x0040U ///< Hexadecimal Digits [A-Fa-f]
#define _C0 0x0080U ///< Path Separator Characters, '/' and '\\'
#define _CS 0x0100U ///< Space Characters, ' ' in C locale
#define _CG 0x0200U ///< Graphic Characters
#define _CB 0x0400U ///< Blank Characters, ' ' and '\t' in C locale
#define _C4 0x0800U
#define _XA 0x1000U ///< eXtra Alpha characters not in _CU or _CL
#define _C6 0x2000U
#define _C7 0x4000U
#define _C8 0x8000U
/// @}
#ifndef NO_CTYPE_MACROS
#define __isCClass( _c, mask) (((_c) < 0 || (_c) > 127) ? 0 : (_cClass[(_c)] & (mask)))
#define __toLower( _c) ((__isCClass( ((int)_c), (_CU))) ? _lConvT[(_c)] : (_c))
#define __toUpper( _c) ((__isCClass( ((int)_c), (_CL))) ? _uConvT[(_c)] : (_c))
#endif /* NO_CTYPE_MACROS */
/* Macros used by implementation functions */
#define __isHexLetter(_c) (__isCClass( (int)c, (_CX)))
#ifdef _CTYPE_PRIVATE
#define _CTYPE_NUM_CHARS (256)
#define _CTYPE_ID "BSDCTYPE"
#define _CTYPE_REV 2
extern const UINT16 _C_CharClassTable[];
extern const UINT8 _C_ToUpperTable[];
extern const UINT8 _C_ToLowerTable[];
#endif