f9cc91e23332df4a62e10c996d7f5c197cdbb044
[yaz-moved-to-github.git] / src / iconv-p.h
1 /*
2  * Copyright (C) 2005-2008, Index Data ApS
3  * See the file LICENSE for details.
4  *
5  */
6 /**
7  * \file
8  * \brief Internal header for conv
9  */
10
11 #ifndef ICONV_P_H
12 #define ICONV_P_H
13
14 #include <yaz/yconfig.h>
15
16 #include <yaz/yaz-iconv.h>
17
18 void yaz_iconv_set_errno(yaz_iconv_t cd, int no);
19
20 unsigned long yaz_read_iso5428_1984(yaz_iconv_t cd, unsigned char *inp,
21                                     size_t inbytesleft, size_t *no_read);
22
23 size_t yaz_init_UTF8(yaz_iconv_t cd, unsigned char *inp,
24                      size_t inbytesleft, size_t *no_read);
25 unsigned long yaz_read_UTF8(yaz_iconv_t cd, unsigned char *inp,
26                             size_t inbytesleft, size_t *no_read);
27
28
29 unsigned long yaz_read_UCS4(yaz_iconv_t cd, unsigned char *inp,
30                             size_t inbytesleft, size_t *no_read);
31 unsigned long yaz_read_UCS4LE(yaz_iconv_t cd, unsigned char *inp,
32                               size_t inbytesleft, size_t *no_read);
33 unsigned long yaz_read_advancegreek(yaz_iconv_t cd, unsigned char *inp,
34                                     size_t inbytesleft, size_t *no_read);
35
36 typedef struct yaz_iconv_encoder_s *yaz_iconv_encoder_t;
37 struct yaz_iconv_encoder_s {
38     void *data;
39     size_t (*write_handle)(yaz_iconv_t cd, yaz_iconv_encoder_t e,
40                            unsigned long x,
41                            char **outbuf, size_t *outbytesleft);
42     size_t (*flush_handle)(yaz_iconv_t cd, yaz_iconv_encoder_t e,
43                            char **outbuf, size_t *outbytesleft);
44     void (*init_handle)(yaz_iconv_encoder_t e);
45     void (*destroy_handle)(yaz_iconv_encoder_t e);
46 };
47
48 yaz_iconv_encoder_t yaz_marc8_encoder(const char *name,
49                                       yaz_iconv_encoder_t e);
50 yaz_iconv_encoder_t yaz_utf8_encoder(const char *name,
51                                      yaz_iconv_encoder_t e);
52 yaz_iconv_encoder_t yaz_ucs4_encoder(const char *name,
53                                      yaz_iconv_encoder_t e);
54 yaz_iconv_encoder_t yaz_iso_8859_1_encoder(const char *name,
55                                            yaz_iconv_encoder_t e);
56 yaz_iconv_encoder_t yaz_iso_5428_encoder(const char *name,
57                                          yaz_iconv_encoder_t e);
58 yaz_iconv_encoder_t yaz_advancegreek_encoder(const char *name,
59                                              yaz_iconv_encoder_t e);
60 yaz_iconv_encoder_t yaz_wchar_encoder(const char *name,
61                                       yaz_iconv_encoder_t e);
62 typedef unsigned long yaz_conv_func_t(unsigned char *inp, size_t inbytesleft,
63                                       size_t *no_read, int *combining,
64                                       unsigned mask, int boffset);
65
66 int yaz_iso_8859_1_lookup_y(unsigned long v,
67                             unsigned long *x1, unsigned long *x2);
68
69 int yaz_iso_8859_1_lookup_x12(unsigned long x1, unsigned long x2,
70                               unsigned long *y);
71
72 #endif
73 /*
74  * Local variables:
75  * c-basic-offset: 4
76  * indent-tabs-mode: nil
77  * End:
78  * vim: shiftwidth=4 tabstop=8 expandtab
79  */
80