_WCRTLINK int _ismbcalpha( unsigned int ch ) { #ifdef __NT__ BOOL rc; int len; char mbc[ MB_LEN_MAX + 1 ]; WORD char_type[ MB_LEN_MAX + 1 ]; _mbvtop( ch, mbc ); len = _mbclen( mbc ); mbc[ len ] = '\0'; rc = GetStringTypeEx( LOCALE_USER_DEFAULT, CT_CTYPE1, mbc, -1, char_type ); if( rc == FALSE ) return( 0 ); if( (char_type[ 0 ] & C1_ALPHA) == 0 ) return( 0 ); return( 1 ); #else /* OS/2 and others */ if( __MBCodePage == 932 ) { /* Japanese code page */ if( SINGLE_BYTE_CHAR( ch ) ) { if( ch >= 0xA6 && ch <= 0xDF ) { /* Katakana letters */ return( 1 ); } else { return( isalpha( ch ) ); } } else { /* double-byte chars */ return( _ismbdalpha( ch ) ); } } else { if( SINGLE_BYTE_CHAR( ch ) ) { return( isalpha( ch ) ); } else { return( 0 ); } } #endif }
_WCRTLINK int _ismbcpunct( unsigned int ch ) { #ifdef __NT__ BOOL rc; int len; char mbc[ MB_LEN_MAX + 1 ]; WORD char_type[ MB_LEN_MAX + 1 ]; _mbvtop( ch, mbc ); len = _mbclen( mbc ); mbc[ len ] = '\0'; rc = GetStringTypeEx( LOCALE_USER_DEFAULT, CT_CTYPE1, mbc, -1, char_type ); if( rc == FALSE ) return( 0 ); if( (char_type[ 0 ] & C1_PUNCT) == 0 ) return( 0 ); return( 1 ); #else /* OS/2 and others */ if( SINGLE_BYTE_CHAR( ch ) ) { if( __MBCodePage == 932 ) { return( ispnkana( ch ) ); } else { return( ispunct( ch ) ); } } else { return( 0 ); } #endif }
_WCRTLINK int _ismbcprint( unsigned int ch ) { #ifdef __NT__ BOOL rc; int len; char mbc[ MB_LEN_MAX + 1 ]; WORD char_type[ MB_LEN_MAX + 1 ]; _mbvtop( ch, mbc ); len = _mbclen( mbc ); mbc[ len ] = '\0'; rc = GetStringTypeEx( LOCALE_USER_DEFAULT, CT_CTYPE1, mbc, -1, char_type ); if( rc == FALSE ) return( 0 ); if( (char_type[ 0 ] & C1_CNTRL) != 0 ) return( 0 ); if( (char_type[ 0 ] & (C1_UPPER | C1_LOWER | C1_DIGIT | C1_SPACE | C1_PUNCT | C1_BLANK | C1_XDIGIT | C1_ALPHA)) == 0 ) return( 0 ); return( 1 ); #else /* OS/2 and others */ if( SINGLE_BYTE_CHAR( ch ) ) { return( isprint( ch ) ); } else { if( __MBCodePage == 932 ) { return( _ismbdprint( ch ) ); } else { return( 0 ); } } #endif }
_WCRTLINK int _ismbccntrl( unsigned int ch ) { #ifdef __NT__ BOOL rc; int len; unsigned char mbc[ MB_LEN_MAX + 1 ]; WORD char_type[ MB_LEN_MAX + 1 ]; _mbvtop( ch, mbc ); len = _mbclen( mbc ); mbc[len] = '\0'; rc = GetStringTypeEx( LOCALE_USER_DEFAULT, CT_CTYPE1, (char *)mbc, -1, char_type ); if( rc == FALSE ) return( 0 ); if( (char_type[ 0 ] & C1_CNTRL) == 0 ) return( 0 ); return( 1 ); #else /* OS/2 and others */ if( SINGLE_BYTE_CHAR( ch ) ) { return( iscntrl( ch ) ); } else { return( 0 ); } #endif }