【发布时间】:2010-02-14 12:37:13
【问题描述】:
我需要一个以纯 C 语言实现的开源(最好是 MIT 许可)轻量级可增长缓冲区(最好也可编译为 C++)。
我需要等效于以下 API(伪代码):
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);
实施应该是干净和独立的。
overwrite_autogrow 将len 的bytes 写入给定的偏移量,同时根据需要增加缓冲区(就像push_bytes 一样)。
设置分配器的能力是可选的,但最好有。
有人知道我想要什么吗?
或者,至少,在实现我自己的时候有什么值得一看的实现吗?
【问题讨论】:
-
我们谈论的是 C,轮子(再)发明者的永恒避风港;如果您使用的框架不提供该功能,请推出您自己的实现
-
我已经更新了我的答案。在编写自己的增长缓冲区时,我应该查看哪个开源实现? :-)
-
你能澄清
pollute your code with macros的意思吗?任何可移植的东西都可以解决 malloc()、realloc() 和 memcpy() 之间的细微差别,具体取决于平台,尤其是在它提供日志回调的情况下。您自己指出您希望能够指定分配器。 -
嗯,过度污染和不可避免的使用是有区别的。 :-) 我将删除那个阶段——“干净且独立”就足够了。
标签: c open-source buffer