Examples for using queue containers.
Examples for using queue containers.
#include <stdio.h>
#include <stdlib.h>
#define ITEM int
#define NAME int_queue
DC_SCOPED(int_queue) queue = int_queue_new(stdalloc_get_ref());
for (int i = 1; i <= 5; i++) {
int_queue_push_back(&queue, i);
}
while (int_queue_size(&queue) > 0) {
int value = int_queue_pop_front(&queue);
printf("Popped: %d\n", value);
}
}
#define ITEM int
#define NAME int_deque
DC_SCOPED(int_deque) deque = int_deque_new(stdalloc_get_ref());
int_deque_push_back(&deque, 10);
int_deque_push_back(&deque, 20);
int_deque_pop_front(&deque);
}
};
char* cloned_data = (char*)malloc((size_t)self->length);
memcpy(cloned_data, self->data, (size_t)self->length);
return (
struct message){.data = cloned_data, .length = self->length};
}
(void)fmt;
fprintf(
stream,
"message@%p { data: \"%.*s\", length: %d }", (
void*)self, self->length,
self->data, self->length);
}
#define ITEM struct message
#define ITEM_DELETE message_delete
#define ITEM_CLONE message_clone
#define ITEM_DEBUG message_debug
#define NAME message_queue
DC_SCOPED(message_queue) queue = message_queue_new(stdalloc_get_ref());
char* data1 = (char*)malloc(5);
memcpy(data1, "hello", 5);
struct message msg1 = {.data = data1, .length = 5};
message_queue_push_back(&queue, msg1);
char* data2 = (char*)malloc(5);
memcpy(data2, "world", 5);
struct message msg2 = {.data = data2, .length = 5};
message_queue_push_back(&queue, msg2);
}
return 0;
}
static DC_PUBLIC dc_debug_fmt dc_debug_fmt_new()
static void message_debug(struct message const *self, dc_debug_fmt fmt, FILE *stream)
static void example_custom()
static void example_queue()
static struct message message_clone(struct message const *self)
static void message_delete(struct message *self)
static void example_deque()
#define DC_SCOPED(type,...)
RAII in C. Call the destructor when the variable goes out of scope.
Debug format helpers for debug printin data structures.
static DC_PUBLIC FILE * stream(SELF *self)