X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=charset%2Fcharconv.h;h=ba695ac9ed13c9cdf2d7656fff71a2f4b67e0461;hb=b9db3187d404ffec3840f9a3ffc237fb9523de79;hp=808e661358f6218b3241d0cf5d72ce9a939d2474;hpb=7b33fa5c0b236edc14007775b6cad248f713e2a7;p=libucw.git diff --git a/charset/charconv.h b/charset/charconv.h index 808e6613..ba695ac9 100644 --- a/charset/charconv.h +++ b/charset/charconv.h @@ -1,12 +1,16 @@ /* - * Character Set Conversion Library 1.1 + * Character Set Conversion Library 1.2 * - * (c) 1998--2001 Martin Mares + * (c) 1998--2005 Martin Mares + * (c) 2007 Pavel Charvat * * This software may be freely distributed and used according to the terms * of the GNU Lesser General Public License. */ +#ifndef _CHARSET_CHARCONV_H +#define _CHARSET_CHARCONV_H + struct conv_context { /* Parameters supplied by the caller */ @@ -20,9 +24,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 *); @@ -51,6 +57,7 @@ enum charset_id { 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, @@ -58,9 +65,15 @@ enum charset_id { CONV_CHARSET_MACCE, CONV_CHARSET_CORK, CONV_CHARSET_UTF8, + CONV_CHARSET_UTF16_BE, + CONV_CHARSET_UTF16_LE, 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); @@ -68,5 +81,7 @@ unsigned int conv_x_count(void); /* Charset names */ -int find_charset_by_name(char *); +int find_charset_by_name(const char *); char *charset_name(int); + +#endif