From 92b950333c6c7002bdbf1b60af44a249dc0cef9c Mon Sep 17 00:00:00 2001 From: Tyge Løvset Date: Sun, 19 Dec 2021 12:21:44 +0100 Subject: First commit for Version 3 of STC. Main changes are consistent rename of '_del' to '_drop' and '_compare' to '_cmp'. Also i_key_ref (earlier i_key_sptr) and i_val_ref replaced by more general i_key_bind/i_val_bind. --- examples/complex.c | 61 +++++++++++++++++++++++++----------------------------- 1 file changed, 28 insertions(+), 33 deletions(-) (limited to 'examples/complex.c') diff --git a/examples/complex.c b/examples/complex.c index b6aef5a8..17a10fad 100644 --- a/examples/complex.c +++ b/examples/complex.c @@ -1,35 +1,30 @@ #include -void check_del(float* v) {printf("destroy %g\n", *v);} +void check_drop(float* v) {printf("destroy %g\n", *v);} +#define i_type FloatStack #define i_val float -#define i_valdel check_del -#define i_opt c_no_clone -#define i_tag f +#define i_drop check_drop +#define i_from c_default_clone #include -#define i_val cstack_f -#define i_opt c_no_clone|c_no_compare -#define i_valdel cstack_f_del -#define i_tag arr +#define i_type StackList +#define i_val_bind FloatStack +#define i_opt c_no_cmp #include +#define i_type ListMap #define i_key int -#define i_val clist_arr -#define i_valdel clist_arr_del -#define i_opt c_no_clone -#define i_tag lst +#define i_val_bind StackList #include +#define i_type MapMap #define i_key_str -#define i_val cmap_lst -#define i_valdel cmap_lst_del -#define i_opt c_no_clone -#define i_tag map +#define i_val_bind ListMap #include // c++: -// using cstack_f = std::stack; +// using FloatStack = std::stack; // using map_lst = std::unordered_map>; // using map_map = std::unordered_map; @@ -38,29 +33,29 @@ int main() { int x = 1, y = 3, tableKey = 42; const char* strKey = "first"; - c_auto (cmap_map, myMap) + c_auto (MapMap, mmap) { - cstack_f stk = cstack_f_with_capacity(xdim * ydim); - memset(stk.data, 0, xdim*ydim*sizeof *stk.data); - stk.size = stk.capacity; + FloatStack stack = FloatStack_with_capacity(xdim * ydim); + memset(stack.data, 0, xdim*ydim*sizeof *stack.data); + stack.size = stack.capacity; // Put in some data in stack array - stk.data[x] = 3.1415927f; - printf("stk size: %zu\n", cstack_f_size(stk)); + stack.data[x] = 3.1415927f; + printf("stack size: %zu\n", FloatStack_size(stack)); - clist_arr tableList = clist_arr_init(); - clist_arr_push_back(&tableList, stk); + StackList list = StackList_init(); + StackList_push_back(&list, stack); - cmap_lst listMap = cmap_lst_init(); - cmap_lst_insert(&listMap, tableKey, tableList); - cmap_map_insert(&myMap, cstr_from(strKey), listMap); + ListMap lmap = ListMap_init(); + ListMap_insert(&lmap, tableKey, list); + MapMap_insert(&mmap, cstr_from(strKey), lmap); // Access the data entry - const cmap_lst* mapL = cmap_map_at(&myMap, strKey); - const clist_arr* lstA = cmap_lst_at(mapL, tableKey); - const cstack_f* arr = clist_arr_back(lstA); - printf("value (%d) is: %f\n", x, *cstack_f_at(arr, x)); + const ListMap* lmap_p = MapMap_at(&mmap, strKey); + const StackList* list_p = ListMap_at(lmap_p, tableKey); + const FloatStack* stack_p = StackList_back(list_p); + printf("value (%d) is: %f\n", x, *FloatStack_at(stack_p, x)); - stk.data[x] = 1.41421356f; // change the value in array + stack.data[x] = 1.41421356f; // change the value in array } } -- cgit v1.2.3