Derive-C
Loading...
Searching...
No Matches
vector.c
Go to the documentation of this file.
1
4
7#include <derive-c/prelude.h>
8#include <stdio.h>
9#include <stdlib.h>
10#include <string.h>
11
12#define ITEM int
13#define NAME basic_vec
15
16static void example_basic() {
18 DC_SCOPED(basic_vec) vec = basic_vec_new(stdalloc_get_ref());
19
20 for (int i = 0; i < 10; i++) {
21 basic_vec_push(&vec, i);
22 }
23
24 basic_vec_debug(&vec, dc_debug_fmt_new(), stdout);
25 basic_vec_pop(&vec);
26 basic_vec_debug(&vec, dc_debug_fmt_new(), stdout);
27}
28
29#define ITEM int
30#define NAME dynamic_vec
32
33static void example_dynamic() {
35 DC_SCOPED(dynamic_vec) vec = dynamic_vec_new(stdalloc_get_ref());
36
37 for (int i = 0; i < 10; i++) {
38 dynamic_vec_push(&vec, i);
39 }
40
41 dynamic_vec_debug(&vec, dc_debug_fmt_new(), stdout);
42}
43
44#define ITEM int
45#define CAPACITY 3
46#define NAME static_vec
48
49static void example_static() {
51 DC_SCOPED(static_vec) vec = static_vec_new();
52
53 static_vec_push(&vec, 1);
54 static_vec_push(&vec, 2);
55 static_vec_push(&vec, 3);
56
57 int* result = static_vec_try_push(&vec, 4);
58 DC_ASSERT(result == NULL);
59
60 DC_FOR_CONST(static_vec, &vec, iter, item) { printf("%d ", *item); }
61 printf("\n");
62}
63
64#define ITEM char*
65#define ITEM_DELETE(ptr_to_str) free(*ptr_to_str)
66#define NAME char_vec
68
69#define KEY char*
70#define KEY_DELETE(ptr_to_str) free(*ptr_to_str)
71#define KEY_HASH DC_DEFAULT_HASH
72#define VALUE char_vec
73#define VALUE_DELETE char_vec_delete
74#define VALUE_DEBUG char_vec_debug
75#define VALUE_CLONE char_vec_clone
76#define NAME str_to_vec_map
78
79static void example_map() {
81 DC_SCOPED(str_to_vec_map) map = str_to_vec_map_new(stdalloc_get_ref());
82
83 char_vec empty_vec = char_vec_new(stdalloc_get_ref());
84 char* key = strdup("key1");
85 str_to_vec_map_insert(&map, key, empty_vec);
86
87 char_vec* vec_ptr = str_to_vec_map_write(&map, key);
88 char_vec_push(vec_ptr, strdup("value1"));
89 char_vec_push(vec_ptr, strdup("value2"));
90 char_vec_push(vec_ptr, strdup("value3"));
91
92 str_to_vec_map_debug(&map, dc_debug_fmt_new(), stdout);
93}
94
95int main() {
100 return 0;
101}
IV_PAIR item
Definition template.h:281
static DC_PUBLIC dc_debug_fmt dc_debug_fmt_new()
Definition fmt.h:15
#define DC_FOR_CONST(TYPE, INSTANCE, ITER, ITEM)
Definition for.h:14
#define DC_ASSERT(expr,...)
Definition panic.h:37
#define DC_SCOPED(type,...)
RAII in C. Call the destructor when the variable goes out of scope.
Definition scope.h:5
#define DC_DEBUG_TRACE
Definition debug.h:17
static void example_map()
Definition vector.c:79
static void example_basic()
Definition vector.c:16
int main()
Definition vector.c:95
static void example_static()
Definition vector.c:49
static void example_dynamic()
Definition vector.c:33