17 DC_SCOPED(int_queue) queue = int_queue_new(stdalloc_get_ref());
19 for (
int i = 1; i <= 5; i++) {
20 int_queue_push_back(&queue, i);
25 while (int_queue_size(&queue) > 0) {
26 int value = int_queue_pop_front(&queue);
27 printf(
"Popped: %d\n", value);
39 DC_SCOPED(int_deque) deque = int_deque_new(stdalloc_get_ref());
41 int_deque_push_back(&deque, 10);
42 int_deque_push_back(&deque, 20);
43 int_deque_pop_front(&deque);
54 char* cloned_data = (
char*)malloc((
size_t)self->length);
55 memcpy(cloned_data, self->data, (
size_t)self->length);
56 return (
struct message){.data = cloned_data, .length = self->length};
61 fprintf(
stream,
"message@%p { data: \"%.*s\", length: %d }", (
void*)self, self->
length,
65#define ITEM struct message
66#define ITEM_DELETE message_delete
67#define ITEM_CLONE message_clone
68#define ITEM_DEBUG message_debug
69#define NAME message_queue
74 DC_SCOPED(message_queue) queue = message_queue_new(stdalloc_get_ref());
76 char* data1 = (
char*)malloc(5);
77 memcpy(data1,
"hello", 5);
78 struct message msg1 = {.data = data1, .length = 5};
79 message_queue_push_back(&queue, msg1);
81 char* data2 = (
char*)malloc(5);
82 memcpy(data2,
"world", 5);
83 struct message msg2 = {.data = data2, .length = 5};
84 message_queue_push_back(&queue, msg2);
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)