#include "bufferq.h" #include "malloc.h" int main(int argc, char *argv[]) { sa_bufferq_t q; sa_bufferq_init(&q, 1, 1); sa_bufferq_push(&q, 0, "{AAAAAAAA}", 10, 0, SA_SEEK_RELATIVE, SA_BUFFERQ_ITEM_STATIC); sa_bufferq_push(&q, 0, "", 10, 5, SA_SEEK_RELATIVE, SA_BUFFERQ_ITEM_STATIC); sa_bufferq_push(&q, 0, "[CCCC]", 6, -18, SA_SEEK_RELATIVE, SA_BUFFERQ_ITEM_STATIC); sa_bufferq_push(&q, 0, "(DDDD)", 6, -3, SA_SEEK_ABSOLUTE, SA_BUFFERQ_ITEM_STATIC); sa_bufferq_push(&q, 0, sa_strdup("XXX"), 3, 10, SA_SEEK_RELATIVE_END, SA_BUFFERQ_ITEM_DYNAMIC); sa_bufferq_push(&q, 0, "YYYYY", 5, -4, SA_SEEK_RELATIVE, SA_BUFFERQ_ITEM_CONCATENATED); sa_bufferq_realloc(&q); for (;;) { void *b[1]; size_t size; sa_bufferq_get(&q, b, &size); if (size == 0) break; printf("Got %u bytes: ", size); if (b[0]) fwrite(b[0], size, 1, stdout); else printf("empty"); printf("\n"); sa_bufferq_drop(&q, size); } sa_bufferq_done(&q); return 0; }