]> mj.ucw.cz Git - libucw.git/blobdiff - charset/charconv.h
Merge with git+ssh://cvs.ucw.cz/projects/sherlock/GIT/sherlock.git#v3.8
[libucw.git] / charset / charconv.h
index a235025e9c628d16a518e17180aaacd6c40c48a4..d3482438b3484bfa3eb59ec024fefa572b34e53d 100644 (file)
@@ -1,10 +1,10 @@
 /*
 /*
- *     Character Set Conversion Library 1.1
+ *     Character Set Conversion Library 1.2
  *
  *
- *     (c) 1998--2001 Martin Mares <mj@ucw.cz>
+ *     (c) 1998--2005 Martin Mares <mj@ucw.cz>
  *
  *     This software may be freely distributed and used according to the terms
  *
  *     This software may be freely distributed and used according to the terms
- *     of the GNU General Public License. See file COPYING in any of the GNU packages.
+ *     of the GNU Lesser General Public License.
  */
 
 struct conv_context {
  */
 
 struct conv_context {
@@ -20,9 +20,11 @@ struct conv_context {
   /* Internal variables */
 
   int (*convert)(struct conv_context *);
   /* Internal variables */
 
   int (*convert)(struct conv_context *);
+  int source_charset, dest_charset;
   unsigned short int *in_to_x;
   unsigned short int *x_to_out;
   unsigned short int *in_to_x;
   unsigned short int *x_to_out;
-  unsigned int state, value;
+  unsigned int state, code, remains;
+  unsigned char *string_at;
 };
 
 void conv_init(struct conv_context *);
 };
 
 void conv_init(struct conv_context *);
@@ -33,11 +35,38 @@ void conv_set_charset(struct conv_context *, int, int);
 #define CONV_DEST_END 2
 #define CONV_SKIP 4
 
 #define CONV_DEST_END 2
 #define CONV_SKIP 4
 
-#define CONV_CHARSET_ASCII 0
-#define CONV_CHARSET_LATIN1 1
-#define CONV_CHARSET_LATIN2 2
-#define CONV_CHARSET_UTF8 8
-#define CONV_NUM_CHARSETS 9
+enum charset_id {
+       CONV_CHARSET_ASCII,
+       CONV_CHARSET_ISO_8859_1,
+       CONV_CHARSET_ISO_8859_2,
+       CONV_CHARSET_ISO_8859_3,
+       CONV_CHARSET_ISO_8859_4,
+       CONV_CHARSET_ISO_8859_5,
+       CONV_CHARSET_ISO_8859_6,
+       CONV_CHARSET_ISO_8859_7,
+       CONV_CHARSET_ISO_8859_8,
+       CONV_CHARSET_ISO_8859_9,
+       CONV_CHARSET_ISO_8859_10,
+       CONV_CHARSET_ISO_8859_11,
+       CONV_CHARSET_ISO_8859_13,
+       CONV_CHARSET_ISO_8859_14,
+       CONV_CHARSET_ISO_8859_15,
+       CONV_CHARSET_ISO_8859_16,
+       CONV_CHARSET_WIN1250,
+       CONV_CHARSET_WIN1251,
+       CONV_CHARSET_WIN1252,
+       CONV_CHARSET_KAMCS,
+       CONV_CHARSET_CSN369103,
+       CONV_CHARSET_CP852,
+       CONV_CHARSET_MACCE,
+       CONV_CHARSET_CORK,
+       CONV_CHARSET_UTF8,
+       CONV_NUM_CHARSETS
+};
+
+/* Conversion of a single character between current non-UTF8 charset and Unicode */
+int conv_in_to_ucs(struct conv_context *c, unsigned int y);
+int conv_ucs_to_out(struct conv_context *c, unsigned int ucs);
 
 /* For those brave ones who want to mess with charconv internals */
 unsigned int conv_x_to_ucs(unsigned int x);
 
 /* For those brave ones who want to mess with charconv internals */
 unsigned int conv_x_to_ucs(unsigned int x);