I need an open-source (preferably MIT-licensed) light-weight growable buffer implemented in plain C (preferably also compileable as C++).
I need API equivalent to following (pseudo-code):
void set_allocator(buffer * buf, allocator_Fn fn);
void push_bytes(buffer * buf, const char * bytes, size_t len);
size_t get_length(buffer * buf);
void overwrite_autogrow(buffer * buf, size_t offset, const char * bytes, size_t len);
const char * to_string(buffer * buf);
Implementation should be clean and self-contained.
The overwrite_autogrow
writes len
of bytes
to given offset while growing buffer as needed (as push_bytes
does).
Ability to set allocator is optional, but preferable to have.
Does somebody know anything close to what I want?
Or, at least, any implementations worth looking at while implementing my own?