summaryrefslogtreecommitdiffhomepage
path: root/examples/convert.c
diff options
context:
space:
mode:
authortylo <[email protected]>2021-10-06 09:24:37 +0200
committertylo <[email protected]>2021-10-06 09:24:37 +0200
commitd4ea76c273bbebdb2b1be7302a9a6edde2198134 (patch)
tree8100169462e7a4fbe3d17a49bc97da4ce6c187b5 /examples/convert.c
parent6c342ffdeee5353ecf78493c41ee23ef79cbd940 (diff)
downloadSTC-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.c97
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);
+ }
+}