From d4ea76c273bbebdb2b1be7302a9a6edde2198134 Mon Sep 17 00:00:00 2001 From: tylo Date: Wed, 6 Oct 2021 09:24:37 +0200 Subject: Updates to previous commit on cvec and cdeq. Some example improvements. --- examples/convert.c | 97 +++++++++++++++++++++++++++--------------------------- 1 file changed, 48 insertions(+), 49 deletions(-) (limited to 'examples/convert.c') diff --git a/examples/convert.c b/examples/convert.c index d42454ee..83dc1b37 100644 --- a/examples/convert.c +++ b/examples/convert.c @@ -1,49 +1,48 @@ - -#include -#include - -#define i_key_str -#define i_val_str -#include - -#define i_val_str -#include - -#define i_val_str -#include - -int main() -{ - cmap_str map = cmap_str_init(); - cmap_str_emplace(&map, "green", "#00ff00"); - cmap_str_emplace(&map, "blue", "#0000ff"); - cmap_str_emplace(&map, "yellow", "#ffff00"); - - puts("MAP:"); - c_foreach (i, cmap_str, map) - printf(" %s: %s\n", i.ref->first.str, i.ref->second.str); - - puts("\nCLONE MAP:"); - cmap_str mclone = cmap_str_clone(map); - c_foreach (i, cmap_str, mclone) - printf(" %s: %s\n", i.ref->first.str, i.ref->second.str); - - - puts("\nMAP TO VECS:"); - cvec_str vec1 = cvec_str_init(), vec2 = cvec_str_init(); - c_foreach (i, cmap_str, mclone) { - cvec_str_emplace_back(&vec1, i.ref->first.str); - cvec_str_emplace_back(&vec2, i.ref->second.str); - } - c_forrange (i, cvec_str_size(vec1)) - printf(" %s: %s\n", vec1.data[i].str, vec2.data[i].str); - - puts("\nVEC TO LIST:"); - clist_str list = clist_str_init(); - c_foreach (i, cvec_str, vec1) clist_str_emplace_back(&list, i.ref->str); - c_foreach (i, clist_str, list) printf(" %s\n", i.ref->str); - - c_del(cmap_str, &map, &mclone); - c_del(cvec_str, &vec1, &vec2); - clist_str_del(&list); -} \ No newline at end of file +#include + +#define i_key_str +#define i_val_str +#include + +#define i_val_str +#include + +#define i_val_str +#include + +int main() +{ + c_auto (cmap_str, map, mclone) + c_auto (cvec_str, keys, values) + c_auto (clist_str, list) + { + c_apply_pair(cmap_str, emplace, &map, { + {"green", "#00ff00"}, + {"blue", "#0000ff"}, + {"yellow", "#ffff00"}, + }); + puts("MAP:"); + c_foreach (i, cmap_str, map) + printf(" %s: %s\n", i.ref->first.str, i.ref->second.str); + + puts("\nCLONE MAP:"); + mclone = cmap_str_clone(map); + c_foreach (i, cmap_str, mclone) + printf(" %s: %s\n", i.ref->first.str, i.ref->second.str); + + puts("\nCOPY MAP TO VECS:"); + c_foreach (i, cmap_str, mclone) { + cvec_str_emplace_back(&keys, i.ref->first.str); + cvec_str_emplace_back(&values, i.ref->second.str); + } + c_forrange (i, cvec_str_size(keys)) + printf(" %s: %s\n", keys.data[i].str, values.data[i].str); + + puts("\nCOPY VEC TO LIST:"); + c_foreach (i, cvec_str, keys) + clist_str_emplace_back(&list, i.ref->str); + + c_foreach (i, clist_str, list) + printf(" %s\n", i.ref->str); + } +} -- cgit v1.2.3