mbfl_encoding.h 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. /*
  2. * "streamable kanji code filter and converter"
  3. * Copyright (c) 1998-2002 HappySize, Inc. All rights reserved.
  4. *
  5. * LICENSE NOTICES
  6. *
  7. * This file is part of "streamable kanji code filter and converter",
  8. * which is distributed under the terms of GNU Lesser General Public
  9. * License (version 2) as published by the Free Software Foundation.
  10. *
  11. * This software is distributed in the hope that it will be useful,
  12. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14. * GNU Lesser General Public License for more details.
  15. *
  16. * You should have received a copy of the GNU Lesser General Public
  17. * License along with "streamable kanji code filter and converter";
  18. * if not, write to the Free Software Foundation, Inc., 59 Temple Place,
  19. * Suite 330, Boston, MA 02111-1307 USA
  20. *
  21. * The author of this file:
  22. *
  23. */
  24. /*
  25. * The source code included in this files was separated from mbfilter.h
  26. * by Moriyoshi Koizumi <moriyoshi@php.net> on 20 Dec 2002. The file
  27. * mbfilter.h is included in this package .
  28. *
  29. */
  30. #ifndef MBFL_ENCODING_H
  31. #define MBFL_ENCODING_H
  32. #include "mbfl_defs.h"
  33. enum mbfl_no_encoding {
  34. mbfl_no_encoding_invalid = -1,
  35. mbfl_no_encoding_pass,
  36. mbfl_no_encoding_wchar,
  37. mbfl_no_encoding_base64,
  38. mbfl_no_encoding_uuencode,
  39. mbfl_no_encoding_html_ent,
  40. mbfl_no_encoding_qprint,
  41. mbfl_no_encoding_7bit,
  42. mbfl_no_encoding_8bit,
  43. mbfl_no_encoding_charset_min,
  44. mbfl_no_encoding_ucs4,
  45. mbfl_no_encoding_ucs4be,
  46. mbfl_no_encoding_ucs4le,
  47. mbfl_no_encoding_ucs2,
  48. mbfl_no_encoding_ucs2be,
  49. mbfl_no_encoding_ucs2le,
  50. mbfl_no_encoding_utf32,
  51. mbfl_no_encoding_utf32be,
  52. mbfl_no_encoding_utf32le,
  53. mbfl_no_encoding_utf16,
  54. mbfl_no_encoding_utf16be,
  55. mbfl_no_encoding_utf16le,
  56. mbfl_no_encoding_utf8,
  57. mbfl_no_encoding_utf8_docomo,
  58. mbfl_no_encoding_utf8_kddi_a,
  59. mbfl_no_encoding_utf8_kddi_b,
  60. mbfl_no_encoding_utf8_sb,
  61. mbfl_no_encoding_utf7,
  62. mbfl_no_encoding_utf7imap,
  63. mbfl_no_encoding_ascii,
  64. mbfl_no_encoding_euc_jp,
  65. mbfl_no_encoding_eucjp2004,
  66. mbfl_no_encoding_sjis,
  67. mbfl_no_encoding_eucjp_win,
  68. mbfl_no_encoding_sjis_docomo,
  69. mbfl_no_encoding_sjis_kddi,
  70. mbfl_no_encoding_sjis_sb,
  71. mbfl_no_encoding_sjis_mac,
  72. mbfl_no_encoding_sjis2004,
  73. mbfl_no_encoding_cp932,
  74. mbfl_no_encoding_sjiswin,
  75. mbfl_no_encoding_cp51932,
  76. mbfl_no_encoding_jis,
  77. mbfl_no_encoding_2022jp,
  78. mbfl_no_encoding_2022jp_2004,
  79. mbfl_no_encoding_2022jp_kddi,
  80. mbfl_no_encoding_2022jpms,
  81. mbfl_no_encoding_gb18030,
  82. mbfl_no_encoding_cp1252,
  83. mbfl_no_encoding_cp1254,
  84. mbfl_no_encoding_8859_1,
  85. mbfl_no_encoding_8859_2,
  86. mbfl_no_encoding_8859_3,
  87. mbfl_no_encoding_8859_4,
  88. mbfl_no_encoding_8859_5,
  89. mbfl_no_encoding_8859_6,
  90. mbfl_no_encoding_8859_7,
  91. mbfl_no_encoding_8859_8,
  92. mbfl_no_encoding_8859_9,
  93. mbfl_no_encoding_8859_10,
  94. mbfl_no_encoding_8859_13,
  95. mbfl_no_encoding_8859_14,
  96. mbfl_no_encoding_8859_15,
  97. mbfl_no_encoding_euc_cn,
  98. mbfl_no_encoding_cp936,
  99. mbfl_no_encoding_euc_tw,
  100. mbfl_no_encoding_big5,
  101. mbfl_no_encoding_cp950,
  102. mbfl_no_encoding_euc_kr,
  103. mbfl_no_encoding_2022kr,
  104. mbfl_no_encoding_uhc,
  105. mbfl_no_encoding_hz,
  106. mbfl_no_encoding_cp1251,
  107. mbfl_no_encoding_cp866,
  108. mbfl_no_encoding_koi8r,
  109. mbfl_no_encoding_koi8u,
  110. mbfl_no_encoding_8859_16,
  111. mbfl_no_encoding_armscii8,
  112. mbfl_no_encoding_cp850,
  113. mbfl_no_encoding_cp50220,
  114. mbfl_no_encoding_cp50221,
  115. mbfl_no_encoding_cp50222,
  116. mbfl_no_encoding_charset_max
  117. };
  118. typedef enum mbfl_no_encoding mbfl_encoding_id;
  119. struct _mbfl_convert_filter;
  120. struct mbfl_convert_vtbl {
  121. enum mbfl_no_encoding from;
  122. enum mbfl_no_encoding to;
  123. void (*filter_ctor)(struct _mbfl_convert_filter *filter);
  124. void (*filter_dtor)(struct _mbfl_convert_filter *filter);
  125. int (*filter_function)(int c, struct _mbfl_convert_filter *filter);
  126. int (*filter_flush)(struct _mbfl_convert_filter *filter);
  127. void (*filter_copy)(struct _mbfl_convert_filter *src, struct _mbfl_convert_filter *dest);
  128. };
  129. /*
  130. * encoding
  131. */
  132. typedef struct _mbfl_encoding {
  133. enum mbfl_no_encoding no_encoding;
  134. const char *name;
  135. const char *mime_name;
  136. const char **aliases;
  137. const unsigned char *mblen_table;
  138. unsigned int flag;
  139. const struct mbfl_convert_vtbl *input_filter;
  140. const struct mbfl_convert_vtbl *output_filter;
  141. } mbfl_encoding;
  142. MBFLAPI extern const mbfl_encoding *mbfl_name2encoding(const char *name);
  143. MBFLAPI extern const mbfl_encoding *mbfl_no2encoding(enum mbfl_no_encoding no_encoding);
  144. MBFLAPI extern enum mbfl_no_encoding mbfl_name2no_encoding(const char *name);
  145. MBFLAPI extern const mbfl_encoding **mbfl_get_supported_encodings(void);
  146. MBFLAPI extern const char *mbfl_no_encoding2name(enum mbfl_no_encoding no_encoding);
  147. MBFLAPI extern const char *mbfl_no2preferred_mime_name(enum mbfl_no_encoding no_encoding);
  148. MBFLAPI extern const char *mbfl_encoding_preferred_mime_name(const mbfl_encoding *encoding);
  149. #endif /* MBFL_ENCODING_H */