diff options
-rw-r--r-- | src/page.c | 11 | ||||
-rw-r--r-- | src/page.h | 9 |
2 files changed, 20 insertions, 0 deletions
diff --git a/src/page.c b/src/page.c index a4f52ae4a..5ea03cd02 100644 --- a/src/page.c +++ b/src/page.c @@ -51,6 +51,17 @@ page_new_copy(const void *data, size_t size) return page; } +struct page * +page_new_concat(const struct page *a, const struct page *b) +{ + struct page *page = page_new(a->size + b->size); + + memcpy(page->data, a->data, a->size); + memcpy(page->data + a->size, b->data, b->size); + + return page; +} + void page_ref(struct page *page) { diff --git a/src/page.h b/src/page.h index 6bee4996f..a150e3123 100644 --- a/src/page.h +++ b/src/page.h @@ -65,6 +65,15 @@ struct page * page_new_copy(const void *data, size_t size); /** + * Concatenates two pages to a new page. + * + * @param a the first page + * @param b the second page, which is appended + */ +struct page * +page_new_concat(const struct page *a, const struct page *b); + +/** * Increases the reference counter. * * @param page the #page object |