]> mj.ucw.cz Git - libucw.git/blob - charset/charconv.h
upgraded from ftp.unicode.org and also renamed
[libucw.git] / charset / charconv.h
1 /*
2  *      Character Set Conversion Library 1.1
3  *
4  *      (c) 1998--2001 Martin Mares <mj@ucw.cz>
5  *
6  *      This software may be freely distributed and used according to the terms
7  *      of the GNU Lesser General Public License.
8  */
9
10 struct conv_context {
11
12   /* Parameters supplied by the caller */
13
14   const unsigned char *source;          /* Current position in source buffer */
15   const unsigned char *source_end;      /* End of source buffer */
16   unsigned char *dest;                  /* Current position in destination buffer */
17   unsigned char *dest_start;            /* First byte of destination buffer */
18   unsigned char *dest_end;              /* End of destination buffer */
19
20   /* Internal variables */
21
22   int (*convert)(struct conv_context *);
23   unsigned short int *in_to_x;
24   unsigned short int *x_to_out;
25   unsigned int state, value;
26 };
27
28 void conv_init(struct conv_context *);
29 void conv_set_charset(struct conv_context *, int, int);
30 #define conv_run(c) ((c)->convert(c))
31
32 #define CONV_SOURCE_END 1
33 #define CONV_DEST_END 2
34 #define CONV_SKIP 4
35
36 enum charset_id {
37         CONV_CHARSET_ASCII,
38         CONV_CHARSET_LATIN1,
39         CONV_CHARSET_LATIN2,
40         CONV_CHARSET_WIN1250,
41         CONV_CHARSET_WIN1252,
42         CONV_CHARSET_KAMCS,
43         CONV_CHARSET_CSN369103,
44         CONV_CHARSET_CP852,
45         CONV_CHARSET_MACCE,
46         CONV_CHARSET_CORK,
47         CONV_CHARSET_UTF8,
48         CONV_NUM_CHARSETS
49 };
50
51 /* For those brave ones who want to mess with charconv internals */
52 unsigned int conv_x_to_ucs(unsigned int x);
53 unsigned int conv_ucs_to_x(unsigned int ucs);
54 unsigned int conv_x_count(void);
55
56 /* Charset names */
57
58 int find_charset_by_name(char *);
59 char *charset_name(int);