Home | History | Annotate | Download | only in sys
      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