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
00027
00033 #ifndef WRBUF_H
00034 #define WRBUF_H
00035
00036 #include <yaz/xmalloc.h>
00037 #include <yaz/yaz-iconv.h>
00038
00039 YAZ_BEGIN_CDECL
00040
00042 typedef struct wrbuf
00043 {
00044 char *buf;
00045 size_t pos;
00046 size_t size;
00047 } wrbuf, *WRBUF;
00048
00050 YAZ_EXPORT WRBUF wrbuf_alloc(void);
00051
00053 YAZ_EXPORT void wrbuf_destroy(WRBUF b);
00054
00056 YAZ_EXPORT void wrbuf_rewind(WRBUF b);
00057
00059 YAZ_EXPORT int wrbuf_write(WRBUF b, const char *buf, int size);
00061 YAZ_EXPORT int wrbuf_puts(WRBUF b, const char *buf);
00063 YAZ_EXPORT void wrbuf_vputs(const char *buf, void *client_data);
00064
00066 YAZ_EXPORT int wrbuf_xmlputs_n(WRBUF b, const char *cp, int size);
00068 YAZ_EXPORT int wrbuf_xmlputs(WRBUF b, const char *cp);
00069
00070 YAZ_EXPORT int wrbuf_puts_replace_char(WRBUF b, const char *buf,
00071 const char from, const char to);
00072
00074 YAZ_EXPORT void wrbuf_puts_escaped(WRBUF b, const char *str);
00075
00077 YAZ_EXPORT void wrbuf_write_escaped(WRBUF b, const char *buf, size_t len);
00078
00080 YAZ_EXPORT void wrbuf_printf(WRBUF b, const char *fmt, ...)
00081 #ifdef __GNUC__
00082 __attribute__ ((format (printf, 2, 3)))
00083 #endif
00084 ;
00085
00086 YAZ_EXPORT int wrbuf_iconv_write(WRBUF b, yaz_iconv_t cd, const char *buf,
00087 int size);
00088 YAZ_EXPORT int wrbuf_iconv_write_cdata(WRBUF b, yaz_iconv_t cd,
00089 const char *buf, int size);
00090 YAZ_EXPORT int wrbuf_iconv_puts_cdata(WRBUF b, yaz_iconv_t cd,
00091 const char *strz);
00092
00093 YAZ_EXPORT int wrbuf_iconv_puts(WRBUF b, yaz_iconv_t cd, const char *strz);
00094
00095 YAZ_EXPORT int wrbuf_iconv_putchar(WRBUF b, yaz_iconv_t cd, int ch);
00096
00097 YAZ_EXPORT void wrbuf_iconv_reset(WRBUF b, yaz_iconv_t cd);
00098
00099 YAZ_EXPORT void wrbuf_chop_right(WRBUF b);
00100
00102 YAZ_EXPORT void wrbuf_cut_right(WRBUF b, size_t no_to_remove);
00103
00104
00108 YAZ_EXPORT int wrbuf_grow(WRBUF b, int minsize);
00109
00110 #define wrbuf_len(b) ((b)->pos)
00111 #define wrbuf_buf(b) ((b)->buf)
00112
00113 YAZ_EXPORT const char *wrbuf_cstr(WRBUF b);
00114
00115 #define wrbuf_putc(b, c) \
00116 (((b)->pos >= (b)->size ? wrbuf_grow(b, 1) : 0), \
00117 (b)->buf[(b)->pos++] = (c), 0)
00118
00119 YAZ_END_CDECL
00120
00121 #endif
00122
00123
00124
00125
00126
00127
00128
00129