diff options
| author | tylo <[email protected]> | 2021-10-06 09:24:37 +0200 |
|---|---|---|
| committer | tylo <[email protected]> | 2021-10-06 09:24:37 +0200 |
| commit | d4ea76c273bbebdb2b1be7302a9a6edde2198134 (patch) | |
| tree | 8100169462e7a4fbe3d17a49bc97da4ce6c187b5 /examples/convert.c | |
| parent | 6c342ffdeee5353ecf78493c41ee23ef79cbd940 (diff) | |
| download | STC-modified-d4ea76c273bbebdb2b1be7302a9a6edde2198134.tar.gz STC-modified-d4ea76c273bbebdb2b1be7302a9a6edde2198134.zip | |
Updates to previous commit on cvec and cdeq. Some example improvements.
Diffstat (limited to 'examples/convert.c')
| -rw-r--r-- | examples/convert.c | 97 |
1 files changed, 48 insertions, 49 deletions
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 <stc/cstr.h>
-#include <stdio.h>
-
-#define i_key_str
-#define i_val_str
-#include <stc/cmap.h>
-
-#define i_val_str
-#include <stc/cvec.h>
-
-#define i_val_str
-#include <stc/clist.h>
-
-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 <stc/cstr.h> + +#define i_key_str +#define i_val_str +#include <stc/cmap.h> + +#define i_val_str +#include <stc/cvec.h> + +#define i_val_str +#include <stc/clist.h> + +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); + } +} |
