00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00032 #ifndef ICONV_P_H
00033 #define ICONV_P_H
00034
00035 #include <yaz/yconfig.h>
00036
00037 #include <yaz/matchstr.h>
00038 #include <yaz/yaz-iconv.h>
00039
00040 void yaz_iconv_set_errno(yaz_iconv_t cd, int no);
00041
00042 typedef struct yaz_iconv_encoder_s *yaz_iconv_encoder_t;
00043 struct yaz_iconv_encoder_s {
00044 void *data;
00045 size_t (*write_handle)(yaz_iconv_t cd, yaz_iconv_encoder_t e,
00046 unsigned long x,
00047 char **outbuf, size_t *outbytesleft);
00048 size_t (*flush_handle)(yaz_iconv_t cd, yaz_iconv_encoder_t e,
00049 char **outbuf, size_t *outbytesleft);
00050 void (*init_handle)(yaz_iconv_encoder_t e);
00051 void (*destroy_handle)(yaz_iconv_encoder_t e);
00052 };
00053
00054 yaz_iconv_encoder_t yaz_marc8_encoder(const char *name,
00055 yaz_iconv_encoder_t e);
00056 yaz_iconv_encoder_t yaz_utf8_encoder(const char *name,
00057 yaz_iconv_encoder_t e);
00058 yaz_iconv_encoder_t yaz_ucs4_encoder(const char *name,
00059 yaz_iconv_encoder_t e);
00060 yaz_iconv_encoder_t yaz_iso_8859_1_encoder(const char *name,
00061 yaz_iconv_encoder_t e);
00062 yaz_iconv_encoder_t yaz_iso_5428_encoder(const char *name,
00063 yaz_iconv_encoder_t e);
00064 yaz_iconv_encoder_t yaz_advancegreek_encoder(const char *name,
00065 yaz_iconv_encoder_t e);
00066 yaz_iconv_encoder_t yaz_wchar_encoder(const char *name,
00067 yaz_iconv_encoder_t e);
00068 typedef unsigned long yaz_conv_func_t(unsigned char *inp, size_t inbytesleft,
00069 size_t *no_read, int *combining,
00070 unsigned mask, int boffset);
00071
00072 int yaz_iso_8859_1_lookup_y(unsigned long v,
00073 unsigned long *x1, unsigned long *x2);
00074
00075 int yaz_iso_8859_1_lookup_x12(unsigned long x1, unsigned long x2,
00076 unsigned long *y);
00077
00078 typedef struct yaz_iconv_decoder_s *yaz_iconv_decoder_t;
00079 struct yaz_iconv_decoder_s {
00080 void *data;
00081 size_t (*init_handle)(yaz_iconv_t cd, yaz_iconv_decoder_t d,
00082 unsigned char *inbuf,
00083 size_t inbytesleft, size_t *no_read);
00084 unsigned long (*read_handle)(yaz_iconv_t cd, yaz_iconv_decoder_t d,
00085 unsigned char *inbuf,
00086 size_t inbytesleft, size_t *no_read);
00087 void (*destroy_handle)(yaz_iconv_decoder_t d);
00088 };
00089
00090 yaz_iconv_decoder_t yaz_marc8_decoder(const char *fromcode,
00091 yaz_iconv_decoder_t d);
00092 yaz_iconv_decoder_t yaz_iso5426_decoder(const char *fromcode,
00093 yaz_iconv_decoder_t d);
00094 yaz_iconv_decoder_t yaz_utf8_decoder(const char *fromcode,
00095 yaz_iconv_decoder_t d);
00096 yaz_iconv_decoder_t yaz_ucs4_decoder(const char *tocode,
00097 yaz_iconv_decoder_t d);
00098 yaz_iconv_decoder_t yaz_iso_8859_1_decoder(const char *fromcode,
00099 yaz_iconv_decoder_t d);
00100 yaz_iconv_decoder_t yaz_iso_5428_decoder(const char *name,
00101 yaz_iconv_decoder_t d);
00102 yaz_iconv_decoder_t yaz_advancegreek_decoder(const char *name,
00103 yaz_iconv_decoder_t d);
00104 yaz_iconv_decoder_t yaz_wchar_decoder(const char *fromcode,
00105 yaz_iconv_decoder_t d);
00106 yaz_iconv_decoder_t yaz_danmarc_decoder(const char *fromcode,
00107 yaz_iconv_decoder_t d);
00108
00109 #endif
00110
00111
00112
00113
00114
00115
00116
00117