ckcuni.h
上传用户:dufan58
上传日期:2007-01-05
资源大小:3407k
文件大小:9k
源码类别:

通讯/手机编程

开发平台:

Windows_Unix

  1. /*  C K C U N I . H  --  Unicode/Terminal character-set translations  */
  2. /*
  3.   Copyright (C) 1999, 2000,
  4.     Trustees of Columbia University in the City of New York.
  5.     All rights reserved.  See the C-Kermit COPYING.TXT file or the
  6.     copyright text in the ckcmai.c module for disclaimer and permissions.
  7.   Authors:
  8.     Frank da Cruz <fdc@columbia.edu>
  9.     Jeffrey Altman <jaltman@columbia.edu>
  10.     The Kermit Project, Columbia University, New York City.
  11. */
  12. /* Terminal character sets */
  13. #ifndef CKOUNI_H
  14. #define CKOUNI_H
  15. #ifdef OS2
  16. #ifndef CKOUNI
  17. #define CKOUNI  /* Use UNICODE for OS/2 functions */
  18. #endif /* CKOUNI */
  19. #ifdef KUI
  20. #define X_CKOUNI_IN /* Use Unicode Input */
  21. #define CKOUNI_OUT
  22. #endif /* KUI */
  23. #endif /* OS2 */
  24. /* Terminal Character Sets */
  25. #define TX_ASCII        0 /* US ASCII */
  26. #define TX_BRITISH 1 /* British ISO 646 */
  27. #define TX_CN_FRENCH    2 /* Canadian French NRC */
  28. #define TX_CUBAN 3 /* Cuba */
  29. #define TX_CZECH 4 /* Czech Republic */
  30. #define TX_DANISH 5 /* Denmark / Norway ISO 646 */
  31. #define TX_DUTCH 6 /* Dutch NRC */
  32. #define TX_FINNISH 7 /* Finnish NRC */
  33. #define TX_FRENCH 8 /* French ISO 646 */
  34. #define TX_GERMAN 9 /* German ISO 646 */
  35. #define TX_HE7        10 /* Hebrew 7 (DEC) */
  36. #define TX_HUNGARIAN   11 /* Hungarian ISO 646 */
  37. #define TX_ICELANDIC   12 /* Icelandic NRC */
  38. #define TX_ITALIAN     13 /* Italian ISO 646 */
  39. #define TX_J201R       14 /* JIS 0201 Japanese Roman */
  40. #define TX_J201K       15 /* JIS 0201 Katakana */
  41. #define TX_KOI7        16 /* Short KOI */
  42. #define TX_NORWEGIAN   17 /* Denmark / Norway ISO 646 */
  43. #define TX_PORTUGUESE  18 /* Portuguese ISO 646 */
  44. #define TX_SPANISH     19 /* Spanish ISO 646 */
  45. #define TX_SWEDISH     20 /* Swedish ISO 646 */
  46. #define TX_SWE_2       21 /* Swedish for names ISO 646 */
  47. #define TX_SWISS       22 /* Swiss NRC */
  48. #define TX_8859_1      23 /* Latin-1 */
  49. #define TX_8859_2      24 /* Latin-2 */
  50. #define TX_8859_3      25 /* Latin-3 */
  51. #define TX_8859_4      26 /* Latin-4 */
  52. #define TX_8859_5      27 /* Latin/Cyrillic */
  53. #define TX_8859_6      28 /* Latin/Arabic */
  54. #define TX_8859_7      29 /* Latin/Greek */
  55. #define TX_8859_8      30 /* Latin/Hebrew */
  56. #define TX_8859_9      31 /* Latin-5 */
  57. #define TX_8859_10     32 /* Latin-6 */
  58. #define TX_KOI8        33 /* GOST 19768-74 KOI-8 */
  59. #define TX_JIS7        34 /* JIS-7 */
  60. #define TX_SHJIS       35 /* Shift JIS */
  61. #define TX_JEUC        36 /* Japanese EUC */
  62. #define TX_JDEC        37 /* Japanese DEC Kanji */
  63. #define TX_DECMCS      38 /* DEC MCS */
  64. #define TX_NEXT        39 /* NeXT */
  65. #define TX_DGI        40 /* Data General International */
  66. #define TX_MACL1       41 /* Macintosh Latin-1 */
  67. #define TX_HPR8        42 /* HP Roman 8 */
  68. /* Code pages */
  69. #define TX_CP437       43 /* Original */
  70. #define TX_CP850       44 /* Multinational (Western Europe) */
  71. #define TX_CP852       45 /* Eastern Europe */
  72. #define TX_CP857       46 /* Turkey */
  73. #define TX_CP862       47 /* Hebrew */
  74. #define TX_CP864       48 /* Arabic */
  75. #define TX_CP866       49 /* Cyrillic */
  76. #define TX_CP869       50 /* Greek */
  77. #define TX_DECSPEC     51 /* DEC Special Graphics */
  78. #define TX_DECTECH     52 /* DEC Technical */
  79. #define TX_C0PICT      53               /* C0 Display Controls */
  80. #define TX_C1PICT      54               /* C1 Display Controls */
  81. #define TX_IBMC0GRPH   55               /* IBM C0 Graphics (smileys) */
  82. #define TX_H19GRAPH    56 /* Heath/Zenith 19 Graphics */
  83. #define TX_TVIGRAPH    57 /* Televideo Graphics */
  84. #define TX_WYSE60G_N   58 /* Wyse 60 Native Mode Graphics */
  85. #define TX_WYSE60G_1   59 /* Wyse 60 Graphics 1 */
  86. #define TX_WYSE60G_2   60 /* Wyse 60 Graphics 2 */
  87. #define TX_WYSE60G_3   61 /* Wyse 60 Graphics 3 */
  88. /* New ones that came too late for the nice grouping... */
  89. #define TX_ELOT927     62 /* Greek ELOT 927 */
  90. #define TX_DGPCGRPH    63 /* DG PC Graphics */
  91. #define TX_DGLDGRPH    64 /* DG Line Drawing Graphics */
  92. #define TX_DGWPGRPH    65 /* DG Word Processing (etc) Graphics */
  93. #define TX_HPLINE      66 /* HP Line Drawing */
  94. #define TX_HPMATH      67 /* HP Math/Technical */
  95. #define TX_QNXGRPH     68 /* QNX Graphics */
  96. /* Siemens Nixdorf character sets */
  97. #define TX_SNIBRACK    69 /* SNI 97801 Brackets */
  98. #define TX_SNIEURO     70 /* SNI 97801 Euro  */
  99. #define TX_SNIFACET    71 /* SNI 97801 Facet */
  100. #define TX_SNIIBM      72 /* SNI 97801 "IBM" */
  101. #define TX_SNIBLANK    73               /* SNI 97801 Blanks */
  102. /* Windows Code pages */
  103. #define TX_CP1252      74 /* Latin-1 Windows */
  104. #define TX_CP1250      75 /* Latin-2 Windows */
  105. #define TX_CP1251      76 /* Cyrillic Windows */
  106. #define TX_CP1253      77 /* Greece Windows */
  107. #define TX_CP1254      78 /* Turkey Windows */
  108. #define TX_CP1257      79 /* Latin-4 Windows */
  109. #define TX_CP856       80 /* Bulgaria CP856 (DATECS Ltd) */
  110. #define TX_CP855       81
  111. #define TX_CP819       82               /* Same as ISO 8859-1 */
  112. #define TX_CP912       83               /* Same as ISO 8859-2 */
  113. #define TX_CP913       84               /* Same as ISO 8859-3 */
  114. #define TX_CP914       85               /* Same as ISO 8859-4 */
  115. #define TX_CP915       86               /* Same as ISO 8859-5 */
  116. #define TX_CP1089      87               /* Same as ISO 8859-6 */
  117. #define TX_CP813       88               /* Same as ISO 8859-7 */
  118. #define TX_CP916       89               /* Same as ISO 8859-8 */
  119. #define TX_CP920       90               /* Same as ISO 8859-9 */
  120. #define TX_CP1051      91               /* Same as HP Roman 8 */
  121. #define TX_CP858       92               /* Multinational (W. Europe) w/Euro */
  122. #define TX_8859_15     93               /* Latin-9 */
  123. #define TX_CP923       94               /* Same as ISO 8859-15 */
  124. #define TX_ELOT928     95               /* Same as ISO 8859-7 */
  125. #define TX_CP10000     96               /* Same as original Apple Quickdraw */
  126. #define TX_CP37        97               /* EBCDIC */
  127. #define TX_CP1255      98 /* Israel Windows */
  128. #define TX_CP1256      99 /* Arabic Windows */
  129. #define TX_CP1258     100 /* Viet Nam Windows */
  130. #define TX_MAZOVIA    101
  131. #define TX_TRANSP     102               /* Transparent - no translation */
  132. #define TX_HZ1500     103 /* Hazeltine 1500 graphics set */
  133. #define TX_KOI8R      104
  134. #define TX_KOI8U      105
  135. #define MAXTXSETS     106 /* Number of terminal character sets */
  136. /* The following are not implemented yet */
  137. /* UTF-8 is supported as a special mode in Kermit 95 (see utf8 flag) */
  138. #define TX_UTF7       128
  139. #define TX_UTF8       129
  140. #define TX_HEXBYTES   242 /* Hex bytes */
  141. #define TX_DEBUG      243 /* Debugging but not hex bytes */
  142. /* These are actually used */
  143. #define TX_UNDEF      255               /* Unknown character-set */
  144. /* Flag bit values */
  145. #define X2U_STD   1 /* Has standard ISO 4873 layout */
  146. #define X2U_ISO   2 /* ISO standard character set */
  147. #define X2U_JIS   4 /* Japan Industrial Standard */
  148. #define X2U_CP    8 /* PC Code Page */
  149. #define X2U_DEC  16 /* DEC Private character set */
  150. #define X2U_CXG  32 /* Control codes used for graphics */
  151. struct x_to_unicode {
  152.     int size; /* 94, 96, 128, or other */
  153.     int offset; /* 0, 32, 33, 128, 160, ... */
  154.     int flags;
  155.     int family; /* Language family, writing system */
  156.     char * keywd; /* Keyword name */
  157.     char * name; /* Descriptive name */
  158.     int code; /* ISO reg number if Standard */
  159. /* CP number if Code-page, etc. */
  160.     char * final; /* Esc seq final char(s) (ISO, DEC) */
  161.     unsigned short map[256]; /* Mapping table */
  162. };
  163. extern struct keytab txrtab[];
  164. extern int ntxrtab;
  165. #ifndef NULL
  166. #define NULL (char *)0
  167. #endif /* NULL */
  168. #ifndef USHORT
  169. #define USHORT unsigned short
  170. #endif /* USHORT */
  171. #ifndef ULONG
  172. #define ULONG unsigned long
  173. #endif /* ULONG */
  174. #ifndef CHAR
  175. #define CHAR unsigned char
  176. #endif /* CHAR */
  177. #ifdef CK_ANSIC
  178. extern USHORT (*xl_u[MAXTXSETS+1])(CHAR); /* Blah-to-Unicode functions */
  179. extern int (*xl_tx[MAXTXSETS+1])(USHORT); /* Unicode-to-Blah functions */
  180. #else
  181. extern USHORT (*xl_u[MAXTXSETS+1])();
  182. extern int (*xl_tx[MAXTXSETS+1])();
  183. #endif /* CK_ANSIC */
  184. extern struct x_to_unicode * txrinfo[MAXTXSETS+1];
  185. _PROTOTYP(int isunicode, (void));
  186. _PROTOTYP(int utf8_to_ucs2, (CHAR, USHORT **));
  187. _PROTOTYP(int ucs2_to_utf8, (USHORT, CHAR **));
  188. _PROTOTYP(int tx_cpsub, (USHORT));
  189. _PROTOTYP(int u_to_b, (CHAR) );
  190. _PROTOTYP(int u_to_b2, (void) );
  191. _PROTOTYP(int b_to_u, (CHAR, CHAR *, int, int) );
  192. #ifdef KANJI
  193. _PROTOTYP(USHORT sj_to_un, (USHORT) ); /* Shift-JIS to Unicode */
  194. _PROTOTYP(USHORT un_to_sj, (USHORT) ); /* Unicode to Shift-JIS */
  195. #endif /* KANJI */
  196. #ifdef OS2
  197. #ifdef NT
  198. _inline
  199. #else
  200. _Inline
  201. #endif /* NT */
  202. int
  203. isunicode(
  204. #ifdef CK_ANSIC
  205.   void
  206. #endif /* CK_ANSIC */
  207.   ) {
  208.     extern int tt_unicode;
  209. #ifdef NT
  210. #ifdef KUI
  211.     return(tt_unicode);
  212. #else /* KUI */
  213.     if (tt_unicode && !isWin95())
  214.       return(1);
  215.     else
  216.       return(0);
  217. #endif /* KUI */
  218. #else /* NT */
  219.     return(0);
  220. #endif /* NT */
  221. }
  222. #endif /* OS2 */
  223. #endif /* CKOUNI_H */