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

通讯/手机编程

开发平台:

Windows_Unix

  1. /*
  2.   File CKCXLA.H
  3.   System-independent character-set translation header file for C-Kermit.
  4. */
  5. /*
  6.   Author: Frank da Cruz <fdc@columbia.edu>,
  7.   The Kermit Project - Columbia University, New York City.
  8.   Copyright (C) 1985, 2000,
  9.     Trustees of Columbia University in the City of New York.
  10.     All rights reserved.  See the C-Kermit COPYING.TXT file or the
  11.     copyright text in the ckcmai.c module for disclaimer and permissions.
  12. */
  13. /*
  14.   NOTE:
  15.   ISO 204 is Latin-1 + Euro.
  16.   ISO 205 is Latin-4 + Euro.
  17.   ISO 206 is Latin-7 + Euro.
  18. */
  19. #ifndef CKCXLA_H /* Guard against multiple inclusion */
  20. #define CKCXLA_H
  21. #ifndef KANJI /* Systems supporting Kanji */
  22. #ifdef OS2
  23. #define KANJI
  24. #endif /* OS2 */
  25. #endif /* KANJI */
  26. #ifdef NOKANJI /* Except if NOKANJI is defined. */
  27. #ifdef KANJI
  28. #undef KANJI
  29. #endif /* KANJI */
  30. #endif /* NOKANJI */
  31. #ifndef NOUNICODE
  32. #ifndef UNICODE /* Unicode support */
  33. #ifdef OS2ORUNIX /* Only for K95, UNIX, VMS,... */
  34. #define UNICODE
  35. #else
  36. #ifdef VMS
  37. #define UNICODE
  38. #endif /* VMS */
  39. #endif /* OS2ORUNIX */
  40. #endif /* UNICODE */
  41. #endif /* NOUNICODE */
  42. #define XLA_NONE    0 /* Translation types - none */
  43. #define XLA_BYTE    1 /* Byte-for-byte */
  44. #define XLA_JAPAN   2 /* Japanese */
  45. #define XLA_UNICODE 3 /* Unicode */
  46. #ifndef UNIORKANJI /* Unicode OR Kanji */
  47. #ifdef UNICODE /* i.e. some support for */
  48. #define UNIORKANJI /* multibyte character sets */
  49. #endif /* UNICODE */
  50. #ifdef KANJI
  51. #define UNIORKANJI
  52. #endif /* KANJI */
  53. #endif /* UNIORKANJI */
  54. /*
  55.    Disable all support for all classes of character sets
  56.    if NOCSETS is defined.
  57. */
  58. #ifdef NOCSETS
  59. #ifdef CKOUNI
  60. #undef CKOUNI
  61. #endif /* CKOUNI */
  62. #ifdef KANJI
  63. #undef KANJI
  64. #endif /* KANJI */
  65. #ifdef CYRILLIC
  66. #undef CYRILLIC
  67. #endif /* CYRILLIC */
  68. #ifdef LATIN2
  69. #undef LATIN2
  70. #endif /* LATIN2 */
  71. #ifdef HEBREW
  72. #undef HEBREW
  73. #endif /* HEBREW */
  74. #ifdef UNICODE
  75. #undef UNICODE
  76. #endif /* UNICODE */
  77. #else /* Not NOCSETS - Rest of this file... */
  78. #ifdef NOUNICODE /* Unicode */
  79. #ifdef UNICODE
  80. #undef UNICODE
  81. #endif /* UNICODE */
  82. #endif /* NOUNICODE */
  83. #ifdef UNICODE
  84. #ifdef OS2
  85. #ifndef CKOUNI
  86. #define CKOUNI /* Special Unicode features for K95 */
  87. #endif /* CKOUNI */
  88. #endif /* OS2 */
  89. #endif /* UNICODE */
  90. #ifndef OS2
  91. #ifdef CKOUNI
  92. #undef CKOUNI
  93. #endif /* CKOUNI */
  94. #endif /* OS2 */
  95. #ifndef NOLATIN2 /* If they didn't say "no Latin-2" */
  96. #ifndef LATIN2 /* Then if LATIN2 isn't already */
  97. #define LATIN2 /* defined, define it. */
  98. #endif /* LATIN2 */
  99. #endif /* NOLATIN2 */
  100. #ifdef NOCYRILLIC /* (spelling variant...) */
  101. #ifndef NOCYRIL
  102. #define NOCYRIL
  103. #endif /* NOCYRIL */
  104. #endif /* NOCYRILLIC */
  105. #ifndef NOCYRIL /* If they didn't say "no Cyrillic" */
  106. #ifndef CYRILLIC /* Then if CYRILLIC isn't already */
  107. #define CYRILLIC /* defined, define it. */
  108. #endif /* CYRILLIC */
  109. #endif /* NOCYRIL */
  110. #ifndef NOHEBREW /* If they didn't say "no Hebrew" */
  111. #ifndef HEBREW /* Then if HEBREW isn't already */
  112. #define HEBREW /* defined, define it. */
  113. #endif /* HEBREW */
  114. #endif /* NOHEBREW */
  115. #ifndef NOGREEK /* If not no Greek */
  116. #ifndef GREEK /* then if GREEK isn't already */
  117. #define GREEK /* defined, define it. */
  118. #endif /* GREEK */
  119. #endif /* NOGREEK */
  120. #ifndef NOKANJI /* If not no Kanji */
  121. #ifndef KANJI /* then if KANJI isn't already */
  122. #define KANJI /* defined, define it. */
  123. #endif /* KANJI */
  124. #endif /* NOKANJI */
  125. /* File ckcxla.h -- Character-set-related definitions, system independent */
  126. /* Codes for Kermit Transfer Syntax Level (obsolete) */
  127. #define TS_L0 0  /* Level 0 (Transparent) */
  128. #define TS_L1 1  /* Level 1 (one standard character set) */
  129. #define TS_L2 2  /* Level 2 (multiple character sets in same file) */
  130. #define UNK 63  /* Symbol to use for unknown character (63 = ?) */
  131. /*
  132.   Codes for the base alphabet of a given character set.
  133.   These are assigned in roughly ISO 8859 order.
  134.   (Each is assumed to include ASCII/Roman.)
  135. */
  136. #define AL_UNIV    0 /* Universal (like ISO 10646) */
  137. #define AL_ROMAN   1 /* Roman (Latin) alphabet */
  138. #define AL_CYRIL   2 /* Cyrillic alphabet */
  139. #define AL_ARABIC  3 /* Arabic */
  140. #define AL_GREEK   4 /* Greek */
  141. #define AL_HEBREW  5 /* Hebrew */
  142. #define AL_KANA    6 /* Japanese Katakana */
  143. #define AL_JAPAN   7 /* Japanese Katakana+Kanji ideograms */
  144. #define AL_HAN     8 /* Chinese/Japanese/Korean ideograms */
  145. #define AL_INDIA   9 /* Indian scripts (ISCII) */
  146. #define AL_VIET   10 /* Vietnamese (VISCII) */
  147. /* Add more here... */
  148. #define AL_UNK   999 /* Unknown (transparent) */
  149. /* Codes for languages */
  150. /*
  151.   NOTE: It would perhaps be better to use ISO 639-1988 2-letter "Codes for
  152.   Representation of Names of Languages" here, shown in the comments below.
  153. */
  154. #define L_ASCII       0  /* EN ASCII, English */
  155. #define L_USASCII     0  /* EN ASCII, English */
  156. #define L_DUTCH       1  /* NL Dutch */
  157. #define L_FINNISH     2  /* FI Finnish */
  158. #define L_FRENCH      3  /* FR French */
  159. #define L_GERMAN      4  /* DE German */
  160. #define L_HUNGARIAN   5  /* HU Hungarian */
  161. #define L_ITALIAN     6  /* IT Italian */
  162. #define L_NORWEGIAN   7  /* NO Norwegian */
  163. #define L_PORTUGUESE  8  /* PT Portuguese */
  164. #define L_SPANISH     9  /* ES Spanish */
  165. #define L_SWEDISH    10  /* SV Swedish */
  166. #define L_SWISS      11  /* RM Swiss (Rhaeto-Romance) */
  167. #define L_DANISH     12  /* DA Danish */
  168. #define L_ICELANDIC  13  /* IS Icelandic */
  169. #define L_RUSSIAN    14  /* RU Russian */
  170. #define L_JAPANESE   15  /* JA Japanese */
  171. #define L_HEBREW     16  /* IW Hebrew */
  172. #define L_GREEK      17  /*    Greek */
  173. #define MAXLANG      17  /* Number of languages */
  174. /*
  175.   File character-sets are defined in the system-specific ck?xla.h file,
  176.   except for the following ones, which must be available to all versions:
  177. */
  178. #define FC_TRANSP  254 /* Transparent */
  179. #define FC_UNDEF   255 /* Undefined   */
  180. /*
  181.   Designators for Kermit's transfer character sets.  These are all standard
  182.   sets, or based on them.  Symbols must be unique in the first 8 characters,
  183.   because some C preprocessors have this limit.
  184. */
  185. /* LIST1 */
  186. #define TC_TRANSP  0   /* Transparent, no character translation */
  187. #define TC_USASCII 1   /* ISO 646 IRV / US 7-bit ASCII */
  188. #define TC_1LATIN  2   /* ISO 8859-1, Latin Alphabet 1 */
  189. #define TC_2LATIN  3   /* ISO 8859-2, Latin Alphabet 2 */
  190. #define TC_CYRILL  4   /* ISO 8859-5, Latin/Cyrillic */
  191. #define TC_JEUC    5   /* Japanese EUC = JIS 0201+0202+0208 */
  192. #define TC_HEBREW  6   /* ISO 8859-8, Latin/Hebrew */
  193. #define TC_GREEK   7   /* ISO 8859-7, Latin/Greek */
  194. #define TC_9LATIN  8   /* ISO 8859-15 Latin Alphabet 9 (with Euro) */
  195. #define TC_UCS2    9   /* ISO 10646 / Unicode UCS-2 */
  196. #define TC_UTF8   10   /* ISO 10646 / Unicode UTF-8 */
  197. #define MAXTCSETS 10   /* Highest Transfer Character Set Number */
  198. #ifdef COMMENT
  199. /*
  200.   Not used and probably won't be due to ISO-10646 / Unicode.
  201. */
  202. #define TC_3LATIN 11  /* ISO 8859-3, Latin-3 */
  203. #define TC_4LATIN 12   /* ISO 8859-4, Latin-4 */
  204. #define TC_5LATIN 13  /* ISO 8859-9, Latin-5 */
  205. #define TC_ARABIC 14  /* ISO-8859-6, Latin/Arabic */
  206. #define TC_JIS208 15  /* Japanese JIS X 0208 multibyte set */
  207. #define TC_CHINES 16  /* Chinese Standard GB 2312-80 */
  208. #define TC_KOREAN 17  /* Korean KS C 5601-1987 */
  209. #define TC_ISCII  18  /* Indian standard code for ii... */
  210. #define TC_VSCII  19  /* Vietnam standard code for ii... */
  211. /* etc... */
  212. #endif /* COMMENT */
  213. /* Structure for character-set information */
  214. struct csinfo {
  215.     char *name; /* Descriptive name of character set */
  216.     int size; /* Size (e.g. 128, 256, 16384) */
  217.     int code; /* Like TC_1LATIN, etc.  */
  218.     char *designator; /* Designator, like I2/100 = Latin-1 */
  219.     int alphabet; /* Base alphabet */
  220.     char *keyword; /* Keyword for this character-set */
  221. };
  222. /* Structure for language information */
  223. struct langinfo {
  224.     int id; /* Language ID code (L_whatever) */
  225.     int fc; /* File character set to use */
  226.     int tc; /* Transfer character set to use */
  227.     char *description; /* Description of language */
  228. };
  229. /* Now take in the system-specific definitions */
  230. #ifdef UNIX
  231. #include "ckuxla.h"
  232. #endif /* UNIX */
  233. #ifdef OSK /* OS-9 */
  234. #include "ckuxla.h"
  235. #endif /* OS-9 */
  236. #ifdef VMS /* VAX/VMS */
  237. #include "ckuxla.h"
  238. #endif /* VMS */
  239. #ifdef GEMDOS /* Atari ST */
  240. #include "ckuxla.h"
  241. #endif /* GEMDOS */
  242. #ifdef MAC /* Macintosh */
  243. #include "ckmxla.h"
  244. #endif /* MAC */
  245. #ifdef OS2 /* OS/2 */
  246. #include "ckuxla.h" /* Uses big UNIX version */
  247. #endif /* OS2 */
  248. #ifdef AMIGA /* Commodore Amiga */
  249. #include "ckuxla.h"
  250. #endif /* AMIGA */
  251. #ifdef datageneral /* Data General MV AOS/VS */
  252. #include "ckuxla.h"
  253. #endif /* datageneral */
  254. #ifdef STRATUS /* Stratus Computer, Inc. VOS */
  255. #include "ckuxla.h"
  256. #endif /* STRATUS */
  257. #ifdef UNICODE
  258. #include "ckcuni.h" /* Unicode */
  259. #endif /* UNICODE */
  260. #ifdef KANJI
  261. #define UNKSJIS 0x817f
  262. _PROTOTYP(USHORT eu_to_sj, (USHORT) ); /* EUC-JP to Shift-JIS  */
  263. _PROTOTYP(USHORT sj_to_eu, (USHORT) );  /* Shift-JIS to EUC-JP  */
  264. _PROTOTYP( int xkanjf, (void) );
  265. _PROTOTYP( int xkanji, (int, int (*)(char)) );
  266. _PROTOTYP( int xkanjz, (int (*)(char) ) );
  267. _PROTOTYP( int zkanjf, (void) );
  268. _PROTOTYP( int zkanji, (int (*)(void)) ); /* Kanji function prototypes */
  269. _PROTOTYP( int zkanjz, (void) );
  270. _PROTOTYP(VOID j7init, ( void ) ); /* Initialize JIS-7 parser */
  271. _PROTOTYP(int getj7, ( void ) ); /* Get next JIS-7 character */
  272. #endif /* KANJI */
  273. #ifndef MAC
  274. #ifndef NOLOCAL
  275. _PROTOTYP( int cs_size, (int) );
  276. _PROTOTYP( int cs_is_std, (int) );
  277. _PROTOTYP( int cs_is_nrc, (int) );
  278. #endif /* NOLOCAL */
  279. #endif /* MAC */
  280. _PROTOTYP(VOID setxlatype, (int, int));
  281. #endif /* NOCSETS */
  282. #endif /* CKCXLA_H */
  283. /* End of ckcxla.h */