home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1997 May / Pcwk0597.iso / sybase / starbuck / h.z / MBCTYPE.H < prev    next >
C/C++ Source or Header  |  1996-07-24  |  5KB  |  159 lines

  1. /*
  2.  *  mbctype.h    Multi-Byte Character functions
  3.  *
  4.  *  Copyright by WATCOM International Corp. 1988-1996.  All rights reserved.
  5.  */
  6. #ifndef _MBCTYPE_H_INCLUDED
  7. #define _MBCTYPE_H_INCLUDED
  8. #ifdef __cplusplus
  9. extern "C" {
  10. #endif
  11.  
  12. #ifndef _COMDEF_H_INCLUDED
  13.  #include <_comdef.h>
  14. #endif
  15.  
  16. #ifndef _SIZE_T_DEFINED
  17. #define _SIZE_T_DEFINED
  18. #define _SIZE_T_DEFINED_
  19. typedef unsigned size_t;
  20. #endif
  21.  
  22. #ifndef _WCHAR_T_DEFINED
  23. #define _WCHAR_T_DEFINED
  24. #define _WCHAR_T_DEFINED_
  25. #ifdef __cplusplus
  26. typedef long char wchar_t;
  27. #else
  28. typedef unsigned short wchar_t;
  29. #endif
  30. #endif
  31.  
  32. #ifndef NULL
  33.  #if defined(__SMALL__) || defined(__MEDIUM__) || defined(__386__) || defined(__AXP__) || defined(__PPC__)
  34.   #define NULL   0
  35.  #else
  36.   #define NULL   0L
  37.  #endif
  38. #endif
  39.  
  40. #ifndef MB_CUR_MAX
  41.     #define MB_CUR_MAX    2
  42. #endif
  43. #ifndef MB_LEN_MAX
  44.     #define MB_LEN_MAX    2
  45. #endif
  46.  
  47. /* _setmbcp parameter defines */
  48. #define _MB_CP_SBCS     0
  49. #define _MB_CP_OEM      (-2)
  50. #define _MB_CP_ANSI     (-3)
  51.  
  52. /* MB control routines */
  53. _WCRTLINK extern int _setmbcp( int );
  54. _WCRTLINK extern int _getmbcp( void );
  55.  
  56.  
  57. /*
  58.  * Routines applicable to all code pages.
  59.  */
  60. _WCRTLINK extern int    (_ismbblead)( unsigned int __ch );
  61. _WCRTLINK extern int    _ismbbtrail( unsigned int __ch );
  62.  
  63. _WCRTLINK extern int    _ismbbalnum( unsigned int __ch );
  64. _WCRTLINK extern int    _ismbbalpha( unsigned int __ch );
  65. _WCRTLINK extern int    _ismbbgraph( unsigned int __ch );
  66. _WCRTLINK extern int    _ismbbpunct( unsigned int __ch );
  67. _WCRTLINK extern int    _ismbbprint( unsigned int __ch );
  68.  
  69. _WCRTLINK extern int    _ismbcalnum( unsigned int __ch );
  70. _WCRTLINK extern int    _ismbcalpha( unsigned int __ch );
  71. _WCRTLINK extern int    _ismbccntrl( unsigned int __ch );
  72. _WCRTLINK extern int    _ismbcdigit( unsigned int __ch );
  73. _WCRTLINK extern int    _ismbcgraph( unsigned int __ch );
  74. _WCRTLINK extern int    _ismbclegal( unsigned int __ch );
  75. _WCRTLINK extern int    _ismbclower( unsigned int __ch );
  76. _WCRTLINK extern int    _ismbcprint( unsigned int __ch );
  77. _WCRTLINK extern int    _ismbcpunct( unsigned int __ch );
  78. _WCRTLINK extern int    _ismbcspace( unsigned int __ch );
  79. _WCRTLINK extern int    _ismbcupper( unsigned int __ch );
  80. _WCRTLINK extern int    _ismbcxdigit( unsigned int __ch );
  81.  
  82.  
  83. /*
  84.  * Routines specific to code page 932 (Japanese).
  85.  */
  86. _WCRTLINK extern int    _ismbbkalnum( unsigned int __ch );
  87. _WCRTLINK extern int    _ismbbkalpha( unsigned int __ch );
  88. _WCRTLINK extern int    _ismbbkana( unsigned int __ch );
  89. _WCRTLINK extern int    _ismbbkprint( unsigned int __ch );
  90. _WCRTLINK extern int    _ismbbkpunct( unsigned int __ch );
  91.  
  92. _WCRTLINK extern int    _ismbchira( unsigned int __ch );
  93. _WCRTLINK extern int    _ismbckata( unsigned int __ch );
  94. _WCRTLINK extern int    _ismbcsymbol( unsigned int __ch );
  95. _WCRTLINK extern int    _ismbcl0( unsigned int __ch);
  96. _WCRTLINK extern int    _ismbcl1( unsigned int __ch);
  97. _WCRTLINK extern int    _ismbcl2( unsigned int __ch); 
  98.  
  99. _WCRTLINK extern int    _ismbdalnum( unsigned int __ch );
  100. _WCRTLINK extern int    _ismbdalpha( unsigned int __ch );
  101. _WCRTLINK extern int    _ismbddigit( unsigned int __ch );
  102. _WCRTLINK extern int    _ismbdgraph( unsigned int __ch );
  103. _WCRTLINK extern int    _ismbdhira( unsigned int __ch );
  104. _WCRTLINK extern int    _ismbdkana( unsigned int __ch );
  105. _WCRTLINK extern int    _ismbdlower( unsigned int __ch );
  106. _WCRTLINK extern int    _ismbdprint( unsigned int __ch );
  107. _WCRTLINK extern int    _ismbdpunct( unsigned int __ch );
  108. _WCRTLINK extern int    _ismbdspace( unsigned int __ch );
  109. _WCRTLINK extern int    _ismbdupper( unsigned int __ch );
  110. _WCRTLINK extern int    _ismbdxdigit( unsigned int __ch );
  111.  
  112.  
  113. /* Global data */
  114. #if defined(__SW_BR) || defined(_RTDLL) 
  115.  #define __MBCSIsTable __MBCSIsTable_br
  116.  #define __IsDBCS      __IsDBCS_br
  117. #endif
  118. _WCRTLINK extern unsigned char    __MBCSIsTable[257];
  119. _WCRTLINK extern int        __IsDBCS;
  120.  
  121.  
  122. /* Flag used in __MBCSIsTable table */
  123. #ifndef _MB_TABLE_FLAGS_DEFINED
  124.     #define _MB_LEAD        0x01
  125.     #define _MB_TABLE_FLAGS_DEFINED
  126. #endif
  127.  
  128.  
  129. /* Implement small functions as macros for speed */
  130. #ifndef _ismbblead
  131. #define _ismbblead(__b)    ( __IsDBCS \
  132.             ? ( __MBCSIsTable[(unsigned char)(__b)+1] & _MB_LEAD ) \
  133.             : ( 0 ) )
  134. #define _mbislead(__b)    _ismbblead(__b)
  135. #endif
  136.  
  137.  
  138. /**
  139.  *  define bit masks for multi-byte characters type 
  140.  **/
  141. #define _M1ST    1    /* è┐ÄÜæµ 1 âoâCâg    MBCS 1st byte */
  142. #define _M2ND    2    /* è┐ÄÜæµ 2 âoâCâg    MBCS 2nd byte */
  143. #define _MSYMB   4    /* 1 âoâCâgë╝û╝ò╢ÄÜ    MBCS single-byte kana */
  144. #define _MPUNCT  8    /* ë╝û╝ïσÉ╪ò╢ÄÜ        MBCS single-byte kana punct */
  145.  
  146. /**
  147.  * character byte types  
  148.  **/
  149. #define _MBC_SINGLE    0    /* valid single-byte char */
  150. #define _MBC_LEAD    1    /* MBSC 1st byte(lead byte) */
  151. #define _MBC_TRAIL    2    /* MBSC 2nd byte(trailing byte) */
  152. #define _MBC_ILLEGAL    (-1)    /* illegal character byte type */
  153.  
  154.  
  155. #ifdef __cplusplus
  156. };
  157. #endif
  158. #endif
  159.