Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef __CS_CSUNICODE_H__
00020 #define __CS_CSUNICODE_H__
00021
00029 #include "cssysdef.h"
00030
00031 #if !defined(CS_WCHAR_T_SIZE)
00032 # error Unknown wchar_t size.
00033 #elif (CS_WCHAR_T_SIZE != 1) && \
00034 (CS_WCHAR_T_SIZE != 2) && \
00035 (CS_WCHAR_T_SIZE != 4)
00036 # error Unsupported wchar_t size.
00037 #endif
00038
00040 typedef uint8 utf8_char;
00042 typedef uint16 utf16_char;
00044 typedef uint32 utf32_char;
00045
00048
00049 #define CS_UC_CHAR_REPLACER 0xFFFD
00050
00051 #define CS_UC_INVALID 0xFFFF
00052
00053 #define CS_UC_BOM 0xFFFE
00054
00055 #define CS_UC_LAST_CHAR 0x10FFFF
00056
00058 #define CS_UC_IS_SURROGATE(C) (((C) & 0xFFFFF800) == 0x0000D800)
00059
00060 #define CS_UC_IS_HIGH_SURROGATE(C) (((C) & 0xFFFFFC00) == 0x0000DC00)
00061
00062 #define CS_UC_IS_LOW_SURROGATE(C) (((C) & 0xFFFFFC00) == 0x0000D800)
00063
00065 #define CS_UC_IS_NONCHARACTER(C) (((C) == CS_UC_INVALID) || \
00066 ((C) == CS_UC_BOM) || \
00067 (((C) >= 0xFDD0) && ((C) <= 0xFDEF)) \
00068 || ((C) > CS_UC_LAST_CHAR))
00069
00071 #define CS_UC_CHAR_HIGH_SURROGATE_FIRST 0xD800
00072
00073 #define CS_UC_CHAR_HIGH_SURROGATE_LAST 0xDBFF
00074
00075 #define CS_UC_CHAR_LOW_SURROGATE_FIRST 0xDC00
00076
00077 #define CS_UC_CHAR_LOW_SURROGATE_LAST 0xDFFF
00078
00083 #endif