diff --git a/src/pbuf.c b/src/pbuf.c index c4c5ccd..e6b51ac 100644 --- a/src/pbuf.c +++ b/src/pbuf.c @@ -91,6 +91,16 @@ pbuf_append(pbuf_t* pbuf, void* ptr) pbuf->ptr[pbuf->used++] = ptr; } +void +pbuf_appendall(pbuf_t* pbuf, const pbuf_t* tail) +{ + if (!pbuf || !tail || (tail->used == 0)) + return; + pbuf_ensure(pbuf, tail->used); + memcpy(pbuf->ptr + pbuf->used, tail->ptr, tail->used * sizeof(void*)); + pbuf->used += tail->used; +} + void pbuf_sort(pbuf_t* pbuf, pbuf_func_sort_t func) { diff --git a/src/pbuf.h b/src/pbuf.h index 39975ee..de656b1 100644 --- a/src/pbuf.h +++ b/src/pbuf.h @@ -25,6 +25,9 @@ pbuf_clear(pbuf_t* pbuf); void pbuf_append(pbuf_t* pbuf, void* ptr); +void +pbuf_appendall(pbuf_t* pbuf, const pbuf_t* tail); + void pbuf_putat(pbuf_t* pbuf, int ix, void* obj);