Derive-C
Loading...
Searching...
No Matches
vector.c File Reference

Go to the source code of this file.

Macros

#define ITEM   int
#define NAME   basic_vec
#define ITEM   int
#define NAME   dynamic_vec
#define ITEM   int
#define CAPACITY   3
#define NAME   static_vec
#define ITEM   char*
#define ITEM_DELETE(ptr_to_str)
#define NAME   char_vec
#define KEY   char*
#define KEY_DELETE(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

Functions

static void example_basic ()
static void example_dynamic ()
static void example_static ()
static void example_map ()
int main ()

Macro Definition Documentation

◆ CAPACITY

#define CAPACITY   3

Definition at line 45 of file vector.c.

◆ ITEM [1/4]

#define ITEM   char*

Definition at line 12 of file vector.c.

◆ ITEM [2/4]

#define ITEM   int

Definition at line 12 of file vector.c.

◆ ITEM [3/4]

#define ITEM   int

Definition at line 12 of file vector.c.

◆ ITEM [4/4]

#define ITEM   int

Definition at line 12 of file vector.c.

◆ ITEM_DELETE

#define ITEM_DELETE ( ptr_to_str)
Value:
free(*ptr_to_str)

Definition at line 65 of file vector.c.

◆ KEY

#define KEY   char*

Definition at line 69 of file vector.c.

◆ KEY_DELETE

#define KEY_DELETE ( ptr_to_str)
Value:
free(*ptr_to_str)

Definition at line 70 of file vector.c.

◆ KEY_HASH

#define KEY_HASH   DC_DEFAULT_HASH

Definition at line 71 of file vector.c.

◆ NAME [1/5]

#define NAME   str_to_vec_map

Definition at line 13 of file vector.c.

◆ NAME [2/5]

#define NAME   char_vec

Definition at line 13 of file vector.c.

◆ NAME [3/5]

#define NAME   static_vec

Definition at line 13 of file vector.c.

◆ NAME [4/5]

#define NAME   dynamic_vec

Definition at line 13 of file vector.c.

◆ NAME [5/5]

#define NAME   basic_vec

Definition at line 13 of file vector.c.

◆ VALUE

#define VALUE   char_vec

Definition at line 72 of file vector.c.

◆ VALUE_CLONE

#define VALUE_CLONE   char_vec_clone

Definition at line 75 of file vector.c.

◆ VALUE_DEBUG

#define VALUE_DEBUG   char_vec_debug

Definition at line 74 of file vector.c.

◆ VALUE_DELETE

#define VALUE_DELETE   char_vec_delete

Definition at line 73 of file vector.c.

Function Documentation

◆ example_basic()

void example_basic ( )
static

Definition at line 16 of file vector.c.

16 {
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}
static DC_PUBLIC dc_debug_fmt dc_debug_fmt_new()
Definition fmt.h:15
#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

◆ example_dynamic()

void example_dynamic ( )
static
Examples
container/vector.c.

Definition at line 33 of file vector.c.

33 {
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}

◆ example_map()

void example_map ( )
static
Examples
container/vector.c.

Definition at line 79 of file vector.c.

79 {
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}

◆ example_static()

void example_static ( )
static
Examples
container/vector.c.

Definition at line 49 of file vector.c.

49 {
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}
IV_PAIR item
Definition template.h:281
#define DC_FOR_CONST(TYPE, INSTANCE, ITER, ITEM)
Definition for.h:14
#define DC_ASSERT(expr,...)
Definition panic.h:37

◆ main()

int main ( )

Definition at line 95 of file vector.c.

95 {
100 return 0;
101}
static void example_map()
Definition vector.c:79
static void example_basic()
Definition vector.c:16
static void example_static()
Definition vector.c:49
static void example_dynamic()
Definition vector.c:33