Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

214 lines
4.6 KiB

  1. // Copyright (c) 1995 Microsoft Corpration
  2. //
  3. // File Name : fechrcnv.h
  4. // Owner : Tetsuhide Akaishi
  5. // Revision : 1.00 07/20/'95 Tetsuhide Akaishi
  6. //
  7. #ifdef __cplusplus
  8. extern "C" {
  9. #endif
  10. // Shift JIS Kanji Code Check
  11. #define SJISISKANJI(c) ( ( (UCHAR)(c) >= 0x81 && (UCHAR)(c) <= 0x9f ) || \
  12. ( (UCHAR)(c) >= 0xe0 && (UCHAR)(c) <= 0xfc ) )
  13. // Shift JIS Kana Code Check
  14. #define SJISISKANA(c) ( (UCHAR)(c) >= 0xa1 && (UCHAR)(c) <= 0xdf )
  15. #define ESC 0x1b
  16. #define SO 0x0e
  17. #define SI 0x0f
  18. #define IS2022_IN_CHAR '$'
  19. #define IS2022_IN_KSC_CHAR1 ')'
  20. #define IS2022_IN_KSC_CHAR2 'C'
  21. // Define for JIS Code Kanji and Kana IN/OUT characters
  22. #define KANJI_IN_1ST_CHAR '$'
  23. #define KANJI_IN_2ND_CHAR1 'B'
  24. #define KANJI_IN_2ND_CHAR2 '@'
  25. #define KANJI_IN_2ND_CHAR3 '('
  26. #define KANJI_IN_3RD_CHAR 'D'
  27. #define KANJI_IN_STR "$B"
  28. #define KANJI_IN_LEN 3
  29. #define KANJI_OUT_1ST_CHAR '('
  30. #define KANJI_OUT_2ND_CHAR1 'J'
  31. #define KANJI_OUT_2ND_CHAR2 'B'
  32. #define KANJI_OUT_LEN 3
  33. #define KANJI_OUT_STR "(J"
  34. // Define for Internet Code Type
  35. #define CODE_UNKNOWN 0
  36. #define CODE_ONLY_SBCS 0
  37. #define CODE_JPN_JIS 1
  38. #define CODE_JPN_EUC 2
  39. #define CODE_JPN_SJIS 3
  40. #define CODE_PRC_CNGB 4
  41. #define CODE_PRC_HZGB 5
  42. #define CODE_TWN_BIG5 6
  43. #define CODE_KRN_KSC 7
  44. #define CODE_KRN_UHC 8
  45. // Minimum length to determine if the string is EUC
  46. #define MIN_JPN_DETECTLEN 48
  47. typedef struct _dbcs_status
  48. {
  49. int nCodeSet;
  50. UCHAR cSavedByte;
  51. BOOL fESC;
  52. } DBCS_STATUS;
  53. typedef struct _conv_context
  54. {
  55. DBCS_STATUS dStatus0;
  56. DBCS_STATUS dStatus;
  57. BOOL blkanji0; // Kanji In Mode
  58. BOOL blkanji; // Kanji In Mode
  59. BOOL blkana; // Kana Mode
  60. int nCurrentCodeSet;
  61. void* pIncc0;
  62. void* pIncc;
  63. } CONV_CONTEXT;
  64. // ----------------------------------
  65. // Public Functions for All FarEast
  66. //-----------------------------------
  67. // Convert from PC Code Set to UNIX Code Set
  68. int WINAPI PC_to_UNIX (
  69. void *pcontext,
  70. int CodePage,
  71. int CodeSet,
  72. UCHAR *pPC,
  73. int PC_len,
  74. UCHAR *pUNIX,
  75. int UNIX_len
  76. );
  77. // Convert from UNIX Code Set to PC Code Set
  78. int WINAPI UNIX_to_PC (
  79. void *pcontext,
  80. int CodePage,
  81. int CodeSet,
  82. UCHAR *pUNIX,
  83. int UNIX_len,
  84. UCHAR *pPC,
  85. int PC_len
  86. );
  87. //--------------------------------
  88. // Internal Functions for Japanese
  89. //--------------------------------
  90. // Detect Japanese Code
  91. int DetectJPNCode ( UCHAR *string, int len );
  92. // Convert from Shift JIS to JIS
  93. int ShiftJIS_to_JIS (
  94. UCHAR *pShiftJIS,
  95. int ShiftJIS_len,
  96. UCHAR *pJIS,
  97. int JIS_len
  98. );
  99. // Convert from Shift JIS to EUC
  100. int ShiftJIS_to_EUC (
  101. UCHAR *pShiftJIS,
  102. int ShiftJIS_len,
  103. UCHAR *pJIS,
  104. int JIS_len
  105. );
  106. #ifdef NOTIMPLEMENTED
  107. // Convert from JIS to EUC
  108. int JIS_to_EUC (
  109. UCHAR *pJIS,
  110. int JIS_len,
  111. UCHAR *pEUC,
  112. int EUC_len
  113. );
  114. #endif
  115. // Convert from JIS to Shift JIS
  116. int JIS_to_ShiftJIS (
  117. CONV_CONTEXT *pcontext,
  118. UCHAR *pShiftJIS,
  119. int ShiftJIS_len,
  120. UCHAR *pJIS,
  121. int JIS_len
  122. );
  123. #ifdef NOTIMPLEMENTED
  124. // Convert from EUC to JIS
  125. int EUC_to_JIS (
  126. UCHAR *pJIS,
  127. int JIS_len,
  128. UCHAR *pEUC,
  129. int EUC_len
  130. );
  131. #endif
  132. // Convert from EUC to Shift JIS
  133. int EUC_to_ShiftJIS (
  134. CONV_CONTEXT *pcontext,
  135. UCHAR *pEUC,
  136. int EUC_len,
  137. UCHAR *pShiftJIS,
  138. int ShiftJIS_len
  139. );
  140. //--------------------------------
  141. // Internal Functions for PRC
  142. //--------------------------------
  143. // Convert from HZ-GB to GB2312
  144. int HZGB_to_GB2312 (
  145. CONV_CONTEXT *pcontext,
  146. UCHAR *pGB2312,
  147. int GB2312_len,
  148. UCHAR *pHZGB,
  149. int HZGB_len
  150. );
  151. // Convert from GB2312 to HZ-GB
  152. int GB2312_to_HZGB (
  153. CONV_CONTEXT *pcontext,
  154. UCHAR *pGB2312,
  155. int GB2312_len,
  156. UCHAR *pHZGB,
  157. int HZGB_len
  158. );
  159. //--------------------------------
  160. // Internal Functions for Korea
  161. //--------------------------------
  162. // Convert from KSC to Hangeul
  163. int KSC_to_Hangeul (
  164. CONV_CONTEXT *pcontext,
  165. UCHAR *pHangeul,
  166. int Hangeul_len,
  167. UCHAR *pKSC,
  168. int KSC_len
  169. );
  170. // Convert from Hangeul to KSC
  171. int Hangeul_to_KSC (
  172. CONV_CONTEXT *pcontext,
  173. UCHAR *pHangeul,
  174. int Hangeul_len,
  175. UCHAR *pKSC,
  176. int KSC_len
  177. );
  178. void WINAPI FCC_Init( PVOID );
  179. int WINAPI FCC_GetCurrentEncodingMode( PVOID );
  180. #ifdef __cplusplus
  181. }
  182. #endif