X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Ficonv-p.h;h=f9cc91e23332df4a62e10c996d7f5c197cdbb044;hb=65f1b9fce2d1d86df7d75645fb46fbba32dd01e3;hp=04a51b0e3eeac45f6562473cabeeaa4546940180;hpb=e4fc51d4432f2adcc67db4b50ac5ce687302f9be;p=yaz-moved-to-github.git diff --git a/src/iconv-p.h b/src/iconv-p.h index 04a51b0..f9cc91e 100644 --- a/src/iconv-p.h +++ b/src/iconv-p.h @@ -2,7 +2,6 @@ * Copyright (C) 2005-2008, Index Data ApS * See the file LICENSE for details. * - * $Id: zoom-p.h,v 1.25 2007-09-11 08:40:28 adam Exp $ */ /** * \file @@ -21,30 +20,54 @@ void yaz_iconv_set_errno(yaz_iconv_t cd, int no); unsigned long yaz_read_iso5428_1984(yaz_iconv_t cd, unsigned char *inp, size_t inbytesleft, size_t *no_read); -size_t yaz_write_iso5428_1984(yaz_iconv_t cd, unsigned long x, - char **outbuf, size_t *outbytesleft); - size_t yaz_init_UTF8(yaz_iconv_t cd, unsigned char *inp, size_t inbytesleft, size_t *no_read); unsigned long yaz_read_UTF8(yaz_iconv_t cd, unsigned char *inp, size_t inbytesleft, size_t *no_read); -size_t yaz_write_UTF8(yaz_iconv_t cd, unsigned long x, - char **outbuf, size_t *outbytesleft); - unsigned long yaz_read_UCS4(yaz_iconv_t cd, unsigned char *inp, size_t inbytesleft, size_t *no_read); unsigned long yaz_read_UCS4LE(yaz_iconv_t cd, unsigned char *inp, size_t inbytesleft, size_t *no_read); -size_t yaz_write_UCS4(yaz_iconv_t cd, unsigned long x, - char **outbuf, size_t *outbytesleft); -size_t yaz_write_UCS4LE(yaz_iconv_t cd, unsigned long x, - char **outbuf, size_t *outbytesleft); unsigned long yaz_read_advancegreek(yaz_iconv_t cd, unsigned char *inp, size_t inbytesleft, size_t *no_read); -size_t yaz_write_advancegreek(yaz_iconv_t cd, unsigned long x, - char **outbuf, size_t *outbytesleft); + +typedef struct yaz_iconv_encoder_s *yaz_iconv_encoder_t; +struct yaz_iconv_encoder_s { + void *data; + size_t (*write_handle)(yaz_iconv_t cd, yaz_iconv_encoder_t e, + unsigned long x, + char **outbuf, size_t *outbytesleft); + size_t (*flush_handle)(yaz_iconv_t cd, yaz_iconv_encoder_t e, + char **outbuf, size_t *outbytesleft); + void (*init_handle)(yaz_iconv_encoder_t e); + void (*destroy_handle)(yaz_iconv_encoder_t e); +}; + +yaz_iconv_encoder_t yaz_marc8_encoder(const char *name, + yaz_iconv_encoder_t e); +yaz_iconv_encoder_t yaz_utf8_encoder(const char *name, + yaz_iconv_encoder_t e); +yaz_iconv_encoder_t yaz_ucs4_encoder(const char *name, + yaz_iconv_encoder_t e); +yaz_iconv_encoder_t yaz_iso_8859_1_encoder(const char *name, + yaz_iconv_encoder_t e); +yaz_iconv_encoder_t yaz_iso_5428_encoder(const char *name, + yaz_iconv_encoder_t e); +yaz_iconv_encoder_t yaz_advancegreek_encoder(const char *name, + yaz_iconv_encoder_t e); +yaz_iconv_encoder_t yaz_wchar_encoder(const char *name, + yaz_iconv_encoder_t e); +typedef unsigned long yaz_conv_func_t(unsigned char *inp, size_t inbytesleft, + size_t *no_read, int *combining, + unsigned mask, int boffset); + +int yaz_iso_8859_1_lookup_y(unsigned long v, + unsigned long *x1, unsigned long *x2); + +int yaz_iso_8859_1_lookup_x12(unsigned long x1, unsigned long x2, + unsigned long *y); #endif /*