pg_wchar.h
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:5k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1. /* $Id: pg_wchar.h,v 1.9 1999/07/11 22:47:19 ishii Exp $ */
  2. #ifndef PG_WCHAR_H
  3. #define PG_WCHAR_H
  4. #include <sys/types.h>
  5. #include "postgres.h"
  6. #include "miscadmin.h" /* for getdatabaseencoding() */
  7. #define SQL_ASCII 0 /* SQL/ASCII */
  8. #define EUC_JP 1 /* EUC for Japanese */
  9. #define EUC_CN 2 /* EUC for Chinese */
  10. #define EUC_KR 3 /* EUC for Korean */
  11. #define EUC_TW 4 /* EUC for Taiwan */
  12. #define UNICODE 5 /* Unicode UTF-8 */
  13. #define MULE_INTERNAL 6 /* Mule internal code */
  14. #define LATIN1 7 /* ISO-8859 Latin 1 */
  15. #define LATIN2 8 /* ISO-8859 Latin 2 */
  16. #define LATIN3 9 /* ISO-8859 Latin 3 */
  17. #define LATIN4 10 /* ISO-8859 Latin 4 */
  18. #define LATIN5 11 /* ISO-8859 Latin 5 */
  19. #define LATIN6 12 /* ISO-8859 Latin 6 */
  20. #define LATIN7 13 /* ISO-8859 Latin 7 */
  21. #define LATIN8 14 /* ISO-8859 Latin 8 */
  22. #define LATIN9 15 /* ISO-8859 Latin 9 */
  23. #define KOI8   16 /* KOI8-R */
  24. #define WIN    17 /* windows-1251 */
  25. #define ALT    18 /* Alternativny Variant (MS-DOS CP866) */
  26. /* followings are for client encoding only */
  27. #define SJIS 32 /* Shift JIS */
  28. #define BIG5 33 /* Big5 */
  29. #define WIN1250  34 /* windows-1250 */
  30. #ifdef MULTIBYTE
  31. typedef unsigned int pg_wchar;
  32. #else
  33. #define pg_wchar char
  34. #endif
  35. /*
  36.  * various definitions for EUC
  37.  */
  38. #define SS2 0x8e /* single shift 2 */
  39. #define SS3 0x8f /* single shift 3 */
  40. /*
  41.  * various definitions for mule internal code
  42.  */
  43. #define IS_LC1(c) ((unsigned char)(c) >= 0x81 && (unsigned char)(c) <= 0x8f)
  44. #define IS_LCPRV1(c) ((unsigned char)(c) == 0x9a || (unsigned char)(c) == 0x9b)
  45. #define IS_LC2(c) ((unsigned char)(c) >= 0x90 && (unsigned char)(c) <= 0x99)
  46. #define IS_LCPRV2(c) ((unsigned char)(c) == 0x9c || (unsigned char)(c) == 0x9d)
  47. /*
  48.  * leading characters
  49.  */
  50. #define LC_ISO8859_1 0x81 /* ISO8859 Latin 1 */
  51. #define LC_ISO8859_2 0x82 /* ISO8859 Latin 2 */
  52. #define LC_ISO8859_3 0x83 /* ISO8859 Latin 3 */
  53. #define LC_ISO8859_4 0x84 /* ISO8859 Latin 4 */
  54. #define LC_ISO8859_5 0x8d /* ISO8859 Latin 5 */
  55. #define LC_JISX0201K 0x89 /* Japanese 1 byte kana */
  56. #define LC_JISX0201R 0x8a /* Japanese 1 byte Roman */
  57. #define LC_KOI8_R 0x8c /* Cyrillic KOI8-R */
  58. #define LC_GB2312_80 0x91 /* Chinese */
  59. #define LC_JISX0208 0x92 /* Japanese Kanji */
  60. #define LC_KS5601 0x93 /* Korean */
  61. #define LC_JISX0212 0x94 /* Japanese Kanji (JISX0212) */
  62. #define LC_CNS11643_1 0x95 /* CNS 11643-1992 Plane 1 */
  63. #define LC_CNS11643_2 0x96 /* CNS 11643-1992 Plane 2 */
  64. #define LC_CNS11643_3 0xf6 /* CNS 11643-1992 Plane 3 */
  65. #define LC_CNS11643_4 0xf7 /* CNS 11643-1992 Plane 4 */
  66. #define LC_CNS11643_5 0xf8 /* CNS 11643-1992 Plane 5 */
  67. #define LC_CNS11643_6 0xf9 /* CNS 11643-1992 Plane 6 */
  68. #define LC_CNS11643_7 0xfa /* CNS 11643-1992 Plane 7 */
  69. #ifdef MULTIBYTE
  70. typedef struct
  71. {
  72. int encoding; /* encoding symbol value */
  73. char    *name; /* encoding name */
  74. int is_client_only; /* 0: server/client both supported 1:
  75.  * client only */
  76. void (*to_mic) (); /* client encoding to MIC */
  77. void (*from_mic) (); /* MIC to client encoding */
  78. } pg_encoding_conv_tbl;
  79. extern pg_encoding_conv_tbl pg_conv_tbl[];
  80. typedef struct
  81. {
  82. void (*mb2wchar_with_len) (); /* convert a multi-byte
  83.  * string to a wchar */
  84. int (*mblen) (); /* returns the length of a multi-byte word */
  85. } pg_wchar_tbl;
  86. extern pg_wchar_tbl pg_wchar_table[];
  87. extern void pg_mb2wchar(const unsigned char *, pg_wchar *);
  88. extern void pg_mb2wchar_with_len(const unsigned char *, pg_wchar *, int);
  89. extern int pg_char_and_wchar_strcmp(const char *, const pg_wchar *);
  90. extern int pg_wchar_strncmp(const pg_wchar *, const pg_wchar *, size_t);
  91. extern int pg_char_and_wchar_strncmp(const char *, const pg_wchar *, size_t);
  92. extern size_t pg_wchar_strlen(const pg_wchar *);
  93. extern int pg_mblen(const unsigned char *);
  94. extern int pg_encoding_mblen(int, const unsigned char *);
  95. extern int pg_mule_mblen(const unsigned char *);
  96. extern int pg_mic_mblen(const unsigned char *);
  97. extern int pg_mbstrlen(const unsigned char *);
  98. extern int pg_mbstrlen_with_len(const unsigned char *, int);
  99. extern int pg_mbcliplen(const unsigned char *, int, int);
  100. extern pg_encoding_conv_tbl *pg_get_encent_by_encoding(int);
  101. extern bool show_client_encoding(void);
  102. extern bool reset_client_encoding(void);
  103. extern bool parse_client_encoding(const char *);
  104. extern bool show_server_encoding(void);
  105. extern bool reset_server_encoding(void);
  106. extern bool parse_server_encoding(const char *);
  107. extern int pg_set_client_encoding(int);
  108. extern int pg_get_client_encoding(void);
  109. extern unsigned char *pg_client_to_server(unsigned char *, int);
  110. extern unsigned char *pg_server_to_client(unsigned char *, int);
  111. extern int pg_valid_client_encoding(const char *);
  112. extern const char *pg_encoding_to_char(int);
  113. extern int pg_char_to_encoding(const char *);
  114. extern int GetDatabaseEncoding(void);
  115. extern void SetDatabaseEncoding(int);
  116. extern void SetTemplateEncoding(int);
  117. extern int GetTemplateEncoding(void);
  118. extern unsigned short BIG5toCNS(unsigned short, unsigned char *);
  119. extern unsigned short CNStoBIG5(unsigned short, unsigned char);
  120. #endif  /* MULTIBYTE */
  121. #endif  /* PG_WCHAR_H */