Derive-C
Loading...
Searching...
No Matches
container/vector.c

Examples for using vector containers.

Examples for using vector containers.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define ITEM int
#define NAME basic_vec
static void example_basic() {
DC_SCOPED(basic_vec) vec = basic_vec_new(stdalloc_get_ref());
for (int i = 0; i < 10; i++) {
basic_vec_push(&vec, i);
}
basic_vec_debug(&vec, dc_debug_fmt_new(), stdout);
basic_vec_pop(&vec);
basic_vec_debug(&vec, dc_debug_fmt_new(), stdout);
}
#define ITEM int
#define NAME dynamic_vec
static void example_dynamic() {
DC_SCOPED(dynamic_vec) vec = dynamic_vec_new(stdalloc_get_ref());
for (int i = 0; i < 10; i++) {
dynamic_vec_push(&vec, i);
}
dynamic_vec_debug(&vec, dc_debug_fmt_new(), stdout);
}
#define ITEM int
#define CAPACITY 3
#define NAME static_vec
static void example_static() {
DC_SCOPED(static_vec) vec = static_vec_new();
static_vec_push(&vec, 1);
static_vec_push(&vec, 2);
static_vec_push(&vec, 3);
int* result = static_vec_try_push(&vec, 4);
DC_ASSERT(result == NULL);
DC_FOR_CONST(static_vec, &vec, iter, item) { printf("%d ", *item); }
printf("\n");
}
#define ITEM char*
#define ITEM_DELETE(ptr_to_str) free(*ptr_to_str)
#define NAME char_vec
#define KEY char*
#define KEY_DELETE(ptr_to_str) free(*ptr_to_str)
#define KEY_HASH DC_DEFAULT_HASH
#define VALUE char_vec
#define VALUE_DELETE char_vec_delete
#define VALUE_DEBUG char_vec_debug
#define VALUE_CLONE char_vec_clone
#define NAME str_to_vec_map
static void example_map() {
DC_SCOPED(str_to_vec_map) map = str_to_vec_map_new(stdalloc_get_ref());
char_vec empty_vec = char_vec_new(stdalloc_get_ref());
char* key = strdup("key1");
str_to_vec_map_insert(&map, key, empty_vec);
char_vec* vec_ptr = str_to_vec_map_write(&map, key);
char_vec_push(vec_ptr, strdup("value1"));
char_vec_push(vec_ptr, strdup("value2"));
char_vec_push(vec_ptr, strdup("value3"));
str_to_vec_map_debug(&map, dc_debug_fmt_new(), stdout);
}
int main() {
return 0;
}
int main()
Definition alloc.c:109
static void example_basic()
Definition bitset.c:12
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_static()
Definition vector.c:49
static void example_dynamic()
Definition vector.c:33