130a1828cSXin LI #ifndef XBUF_H_ 230a1828cSXin LI #define XBUF_H_ 330a1828cSXin LI 4*c77c4889SXin LI #include "lang.h" 5*c77c4889SXin LI 630a1828cSXin LI struct xbuffer 730a1828cSXin LI { 8d713e089SXin LI unsigned char *data; 9*c77c4889SXin LI size_t end; 10*c77c4889SXin LI size_t size; 11*c77c4889SXin LI size_t init_size; 1230a1828cSXin LI }; 1330a1828cSXin LI 1430a1828cSXin LI void xbuf_init(struct xbuffer *xbuf); 15*c77c4889SXin LI void xbuf_init_size(struct xbuffer *xbuf, size_t init_size); 16d713e089SXin LI void xbuf_deinit(struct xbuffer *xbuf); 1730a1828cSXin LI void xbuf_reset(struct xbuffer *xbuf); 18d713e089SXin LI void xbuf_add_byte(struct xbuffer *xbuf, unsigned char b); 19*c77c4889SXin LI void xbuf_add_char(struct xbuffer *xbuf, char c); 20*c77c4889SXin LI void xbuf_add_data(struct xbuffer *xbuf, constant unsigned char *data, size_t len); 2195270f73SXin LI int xbuf_pop(struct xbuffer *xbuf); 22*c77c4889SXin LI constant char *xbuf_char_data(constant struct xbuffer *xbuf); 2330a1828cSXin LI 2430a1828cSXin LI #endif 25