Tutorial :Growable buffer for plain C [closed]



Question:

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?


Solution:1

VPOOL (BSD License)

http://www.bsdua.org/libbsdua.html#vpool

Vpool is an auto-resizeable buffer (dynamic array). Using it, you don't need to care about memory allocation, boundary checking, pointer manipulations and etc.


Solution:2

http://library.gnome.org/devel/glib/stable/glib-Arrays.html

not sure if it implements overwrite_autogrow though, as I don't know what you mean by this. You want to manually set a capacity? If so g_array_set_size.

However, the licence may be a problem, but you should be able to use it as LGPL. I don't know if that's comaptible with MIT or not.


Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
Previous
Next Post »