X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;ds=sidebyside;f=charset%2Fcharconv.h;h=d3482438b3484bfa3eb59ec024fefa572b34e53d;hb=6829bc0163f6ecfc8ae70ee7b3ce2b79e7484dfe;hp=35044311f10dbd0b6b1da86789b3f4bb959a9a0a;hpb=5e875dc942124526ab63dad43ed9181cda9e8ece;p=libucw.git diff --git a/charset/charconv.h b/charset/charconv.h index 35044311..d3482438 100644 --- a/charset/charconv.h +++ b/charset/charconv.h @@ -1,10 +1,10 @@ /* - * Character Set Conversion Library 1.1 + * Character Set Conversion Library 1.2 * - * (c) 1998--2001 Martin Mares + * (c) 1998--2005 Martin Mares * * 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 { @@ -20,9 +20,11 @@ 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 int state, value; + unsigned int state, code, remains; + unsigned char *string_at; }; void conv_init(struct conv_context *); @@ -35,9 +37,23 @@ void conv_set_charset(struct conv_context *, int, int); enum charset_id { CONV_CHARSET_ASCII, - CONV_CHARSET_LATIN1, - CONV_CHARSET_LATIN2, + 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, @@ -48,6 +64,10 @@ enum charset_id { 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); unsigned int conv_ucs_to_x(unsigned int ucs);