#pragma once #include /* * Buffer abstract data type */ struct strbuf { char *bytes; unsigned size; unsigned used; }; void strbuf_init(struct strbuf *buf); void strbuf_release(struct strbuf *buf); void strbuf_clear(struct strbuf *buf); /* Destroy buffer and return a copy as a C string */ char *strbuf_steal(struct strbuf *buf); /* * Return a C string owned by the buffer invalidated if the buffer is * changed). */ const char *strbuf_str(struct strbuf *buf); bool strbuf_pushchar(struct strbuf *buf, char ch); unsigned strbuf_pushchars(struct strbuf *buf, const char *str); void strbuf_popchar(struct strbuf *buf); void strbuf_popchars(struct strbuf *buf, unsigned n);