summaryrefslogtreecommitdiffhomepage
path: root/examples
diff options
context:
space:
mode:
Diffstat (limited to 'examples')
-rw-r--r--examples/README.md2
-rw-r--r--examples/advanced.c2
-rw-r--r--examples/benchmark.c2
-rw-r--r--examples/birthday.c4
-rw-r--r--examples/demos.c26
-rw-r--r--examples/ex_gaussian.c6
-rw-r--r--examples/inits.c10
-rw-r--r--examples/list.c12
-rw-r--r--examples/mapmap.c4
-rw-r--r--examples/phonebook.c2
-rw-r--r--examples/shared_ptr.c16
-rw-r--r--examples/stack.c2
-rw-r--r--examples/words.c10
13 files changed, 53 insertions, 45 deletions
diff --git a/examples/README.md b/examples/README.md
index fd5cd92b..ba6a7cfb 100644
--- a/examples/README.md
+++ b/examples/README.md
@@ -72,7 +72,7 @@ int main() {
cmap_vk_emplace(&vikings, look, 0)->second += 5; // update again
c_foreach (k, cmap_vk, vikings) {
- printf("%s of %s has %d hp\n", k.get->first.name.str, k.get->first.country.str, k.get->second);
+ printf("%s of %s has %d hp\n", k.val->first.name.str, k.val->first.country.str, k.val->second);
}
cmap_vk_del(&vikings);
}
diff --git a/examples/advanced.c b/examples/advanced.c
index 7cf55d2c..8c3564f3 100644
--- a/examples/advanced.c
+++ b/examples/advanced.c
@@ -74,7 +74,7 @@ int main()
cmap_vk_emplace(&vikings, einar, 0).first->second += 5; // again
c_foreach (k, cmap_vk, vikings) {
- printf("%s of %s has %d hp\n", k.get->first.name.str, k.get->first.country.str, k.get->second);
+ printf("%s of %s has %d hp\n", k.val->first.name.str, k.val->first.country.str, k.val->second);
}
cmap_vk_del(&vikings);
}
diff --git a/examples/benchmark.c b/examples/benchmark.c
index d1167eb4..dd0001a7 100644
--- a/examples/benchmark.c
+++ b/examples/benchmark.c
@@ -41,7 +41,7 @@ crand_rng64_t rng;
#define CMAP_ERASE(X, key) cmap_##X##_erase(&map, key)
#define CMAP_FIND(X, key) (cmap_##X##_find(map, key) != NULL)
#define CMAP_FOR(X, i) c_foreach (i, cmap_##X, map)
-#define CMAP_ITEM(X, i) i.get->second
+#define CMAP_ITEM(X, i) i.val->second
#define CMAP_SIZE(X) cmap_size(map)
#define CMAP_BUCKETS(X) cmap_##X##_bucket_count(map)
#define CMAP_CLEAR(X) cmap_##X##_clear(&map)
diff --git a/examples/birthday.c b/examples/birthday.c
index fae36430..92423b7b 100644
--- a/examples/birthday.c
+++ b/examples/birthday.c
@@ -46,11 +46,11 @@ void distribution(void)
float diff = (float) (clock() - now) / CLOCKS_PER_SEC;
uint64_t sum = 0;
- c_foreach (i, cmap_x, map) sum += i.get->second;
+ c_foreach (i, cmap_x, map) sum += i.val->second;
sum /= map.size;
c_foreach (i, cmap_x, map)
- printf("%u: %zu - %zu\n", i.get->first, i.get->second, sum);
+ printf("%u: %zu - %zu\n", i.val->first, i.val->second, sum);
printf("%.02f\n", diff);
}
diff --git a/examples/demos.c b/examples/demos.c
index 85d96e7e..1955d229 100644
--- a/examples/demos.c
+++ b/examples/demos.c
@@ -69,7 +69,7 @@ void vectordemo2()
cvec_str_sort(&names); // Sort the array
c_foreach (i, cvec_str, names)
- printf("sorted: %s\n", i.get->str);
+ printf("sorted: %s\n", i.val->str);
cvec_str_del(&names);
}
@@ -84,19 +84,19 @@ void listdemo1()
for (int i = 100; i < 110; ++i)
clist_ix_push_back(&nums2, i);
c_foreach (i, clist_ix, nums)
- printf("value: %d\n", *i.get);
+ printf("value: %d\n", *i.val);
/* merge/append nums2 to nums */
clist_ix_splice_front(&nums, &nums2);
c_foreach (i, clist_ix, nums)
- printf("spliced: %d\n", *i.get);
+ printf("spliced: %d\n", *i.val);
- *clist_ix_find(&nums, 100).get *= 10;
+ *clist_ix_find(&nums, 100).val *= 10;
clist_ix_sort(&nums); // Sort the array
clist_ix_remove(&nums, 105);
clist_ix_pop_front(&nums);
clist_ix_push_front(&nums, -99);
c_foreach (i, clist_ix, nums)
- printf("sorted: %d\n", *i.get);
+ printf("sorted: %d\n", *i.val);
clist_ix_del(&nums);
}
@@ -110,7 +110,7 @@ void setdemo1()
cset_i_insert(&nums, 11);
c_foreach (i, cset_i, nums)
- printf("set: %d\n", *i.get);
+ printf("set: %d\n", *i.val);
cset_i_del(&nums);
}
@@ -123,7 +123,7 @@ void mapdemo1()
cmap_ii nums = cmap_INIT;
cmap_ii_put(&nums, 8, 64);
cmap_ii_put(&nums, 11, 121);
- printf("get 8: %d\n", *cmap_ii_at(&nums, 8));
+ printf("val 8: %d\n", *cmap_ii_at(&nums, 8));
cmap_ii_del(&nums);
}
@@ -139,12 +139,12 @@ void mapdemo2()
cmap_si_put(&nums, "Groovy", 200); // overwrite previous
// iterate the map:
- for (cmap_si_iter_t i = cmap_si_begin(&nums); i.get != cmap_si_end(&nums).get; cmap_si_next(&i))
- printf("long: %s: %d\n", i.get->first.str, i.get->second);
+ for (cmap_si_iter_t i = cmap_si_begin(&nums); i.val != cmap_si_end(&nums).val; cmap_si_next(&i))
+ printf("long: %s: %d\n", i.val->first.str, i.val->second);
// or rather use the short form:
c_foreach (i, cmap_si, nums)
- printf("short: %s: %d\n", i.get->first.str, i.get->second);
+ printf("short: %s: %d\n", i.val->first.str, i.val->second);
cmap_si_del(&nums);
}
@@ -161,13 +161,13 @@ void mapdemo3()
cmap_str_put(&table, "Sunny", "day");
cmap_str_value_t *e = cmap_str_find(&table, "Make");
c_foreach (i, cmap_str, table)
- printf("entry: %s: %s\n", i.get->first.str, i.get->second.str);
+ printf("entry: %s: %s\n", i.val->first.str, i.val->second.str);
printf("size %zu: remove: Make: %s\n", cmap_size(table), e->second.str);
cmap_str_erase(&table, "Make");
printf("size %zu\n", cmap_size(table));
c_foreach (i, cmap_str, table)
- printf("entry: %s: %s\n", i.get->first.str, i.get->second.str);
+ printf("entry: %s: %s\n", i.val->first.str, i.val->second.str);
cmap_str_del(&table); // frees key and value cstrs, and hash table.
}
@@ -190,7 +190,7 @@ void arraydemo1()
printf("%f\n", *carray3f_at(&a3, 5, 4, 3)); // lookup a3[5][4][3] (=10.2f)
c_foreach (i, carray3f, a3)
- *i.get = 1.0f;
+ *i.val = 1.0f;
printf("%f\n", *carray3f_at(&a3, 29, 19, 9));
carray2f_del(&a2); // does nothing, since it is a sub-array.
diff --git a/examples/ex_gaussian.c b/examples/ex_gaussian.c
index e5dad57a..1ff494f5 100644
--- a/examples/ex_gaussian.c
+++ b/examples/ex_gaussian.c
@@ -38,17 +38,17 @@ int main()
// Transfer map to vec and sort it by map keys.
cvec_e vhist = cvec_INIT;
c_foreach (i, cmap_i, mhist)
- cvec_e_push_back(&vhist, *i.get);
+ cvec_e_push_back(&vhist, *i.val);
cvec_e_sort(&vhist);
// Print the gaussian bar chart
cstr_t bar = cstr_INIT;
c_foreach (i, cvec_e, vhist) {
- size_t n = (size_t) (i.get->second * Mag / N);
+ size_t n = (size_t) (i.val->second * Mag / N);
if (n > 0) {
// bar string: take ownership in new str after freeing current.
cstr_take(&bar, cstr_with_size(n, '*'));
- printf("%4d %s\n", i.get->first, bar.str);
+ printf("%4d %s\n", i.val->first, bar.str);
}
}
// Cleanup
diff --git a/examples/inits.c b/examples/inits.c
index 27ee3c9b..26a05a51 100644
--- a/examples/inits.c
+++ b/examples/inits.c
@@ -26,7 +26,7 @@ int main(void)
cvec_f floats = cvec_INIT;
c_push_items(&floats, cvec_f, {4.0f, 2.0f, 5.0f, 3.0f, 1.0f});
- c_foreach (i, cvec_f, floats) printf("%.1f ", *i.get);
+ c_foreach (i, cvec_f, floats) printf("%.1f ", *i.val);
puts("");
// CVEC PRIORITY QUEUE
@@ -53,7 +53,7 @@ int main(void)
});
c_foreach (i, cmap_id, idnames)
- printf("%d: %s\n", i.get->first, i.get->second.str);
+ printf("%d: %s\n", i.val->first, i.val->second.str);
puts("");
cmap_id_del(&idnames);
@@ -76,7 +76,7 @@ int main(void)
cmap_cnt_emplace(&countries, "Finland", 0).first->second += 20;
c_foreach (i, cmap_cnt, countries)
- printf("%s: %d\n", i.get->first.str, i.get->second);
+ printf("%s: %d\n", i.val->first.str, i.val->second);
puts("");
cmap_cnt_del(&countries);
@@ -92,7 +92,7 @@ int main(void)
cvec_ip_sort(&pairs1);
c_foreach (i, cvec_ip, pairs1)
- printf("(%d %d) ", i.get->x, i.get->y);
+ printf("(%d %d) ", i.val->x, i.val->y);
puts("");
cvec_ip_del(&pairs1);
@@ -108,7 +108,7 @@ int main(void)
clist_ip_sort(&pairs2);
c_foreach (i, clist_ip, pairs2)
- printf("(%d %d) ", i.get->x, i.get->y);
+ printf("(%d %d) ", i.val->x, i.val->y);
puts("");
clist_ip_del(&pairs2);
} \ No newline at end of file
diff --git a/examples/list.c b/examples/list.c
index e3e68ee4..2cc433c6 100644
--- a/examples/list.c
+++ b/examples/list.c
@@ -17,24 +17,24 @@ int main() {
double sum = 0.0;
printf("sumarize %d:\n", m);
c_foreach (i, clist_fx, list)
- sum += *i.get;
+ sum += *i.val;
printf("sum %f\n\n", sum);
k = 0;
c_foreach (i, clist_fx, list)
- if (++k <= 10) printf("%8d: %10f\n", k, *i.get); else break;
+ if (++k <= 10) printf("%8d: %10f\n", k, *i.val); else break;
puts("sort");
clist_fx_sort(&list); // mergesort O(n*log n)
puts("sorted");
k = 0;
c_foreach (i, clist_fx, list)
- if (++k <= 10) printf("%8d: %10f\n", k, *i.get); else break;
+ if (++k <= 10) printf("%8d: %10f\n", k, *i.val); else break;
puts("");
clist_fx_clear(&list);
c_push_items(&list, clist_fx, {10, 20, 30, 40, 30, 50});
- c_foreach (i, clist_fx, list) printf(" %g", *i.get);
+ c_foreach (i, clist_fx, list) printf(" %g", *i.val);
puts("");
int removed = clist_fx_remove(&list, 30);
@@ -44,11 +44,11 @@ int main() {
clist_fx_iter_t it = clist_fx_before_begin(&list);
printf("Full: ");
c_foreach (i, clist_fx, list)
- printf(" %g", *i.get);
+ printf(" %g", *i.val);
for (int i=0; i<4; ++i) clist_fx_next(&it);
printf("\nSubs: ");
c_foreach (i, clist_fx, it, clist_fx_end(&list))
- printf(" %g", *i.get);
+ printf(" %g", *i.val);
puts("");
clist_fx_del(&list);
} \ No newline at end of file
diff --git a/examples/mapmap.c b/examples/mapmap.c
index 38e88712..6800601f 100644
--- a/examples/mapmap.c
+++ b/examples/mapmap.c
@@ -19,8 +19,8 @@ int main(void) {
cmap_str_put(&cmap_cfg_emplace(&config, "group", init).first->second, "proj2", "Wind"); // Update
c_foreach (i, cmap_cfg, config)
- c_foreach (j, cmap_str, i.get->second)
- printf("%s: %s - %s (%u)\n", i.get->first.str, j.get->first.str, j.get->second.str, i.get->second.bucket_count);
+ c_foreach (j, cmap_str, i.val->second)
+ printf("%s: %s - %s (%u)\n", i.val->first.str, j.val->first.str, j.val->second.str, i.val->second.bucket_count);
cmap_cfg_del(&config);
} \ No newline at end of file
diff --git a/examples/phonebook.c b/examples/phonebook.c
index 90d2fe22..cb7130c1 100644
--- a/examples/phonebook.c
+++ b/examples/phonebook.c
@@ -30,7 +30,7 @@ using_cmap_str();
void print_phone_book(cmap_str phone_book)
{
c_foreach (i, cmap_str, phone_book)
- printf("%s\t- %s\n", i.get->first.str, i.get->second.str);
+ printf("%s\t- %s\n", i.val->first.str, i.val->second.str);
}
int main(int argc, char **argv)
diff --git a/examples/shared_ptr.c b/examples/shared_ptr.c
index 40f67e11..7bff502c 100644
--- a/examples/shared_ptr.c
+++ b/examples/shared_ptr.c
@@ -5,16 +5,26 @@
typedef struct { cstr_t name, last; } Person;
+Person* Person_make(Person* p, const char* name, const char* last) {
+ p->name = cstr(name), p->last = cstr(last);
+ return p;
+}
void Person_del(Person* p) {
printf("del %s\n", p->name.str);
- cstr_del(&p->name); cstr_del(&p->last);
+ c_del(cstr, &p->name, &p->last);
+}
+int Person_compare(const Person* p, const Person* q) {
+ int cmp = cstr_equals_s(p->name, q->name);
+ return cmp == 0 ? cstr_equals_s(p->last, q->last) : cmp;
}
//using_clist(p, Person, Person_del);
//using_cqueue(p, clist_p);
using_csptr(p, Person, Person_del);
-using_clist(pp, csptr_p, csptr_p_del);
+int csptr_p_compare(const csptr_p* p, const csptr_p* q) {return Person_compare(p->get, q->get);}
+
+using_clist(pp, csptr_p, csptr_p_del, csptr_p_compare);
using_cqueue(pp, clist_pp);
int main() {
@@ -32,7 +42,7 @@ int main() {
cqueue_pp_pop(&queue);
c_foreach (i, cqueue_pp, queue)
- printf(" %s %s\n", i.get->get->name.str, i.get->get->last.str);
+ printf(" %s %s\n", i.val->get->name.str, i.val->get->last.str);
cqueue_pp_del(&queue);
} \ No newline at end of file
diff --git a/examples/stack.c b/examples/stack.c
index 68519a9b..f65b9243 100644
--- a/examples/stack.c
+++ b/examples/stack.c
@@ -21,7 +21,7 @@ int main() {
cstack_i_pop(&stack);
c_foreach (i, cstack_i, stack)
- printf(" %d", *i.get);
+ printf(" %d", *i.val);
puts("");
printf("top: %d\n", *cstack_i_top(&stack));
} \ No newline at end of file
diff --git a/examples/words.c b/examples/words.c
index c5b513bf..f95c36eb 100644
--- a/examples/words.c
+++ b/examples/words.c
@@ -18,7 +18,7 @@ int main1()
});
clist_str_push_back(&lwords, cstr_from("%f", 123897.0 / 23.0));
c_foreach (w, clist_str, lwords)
- printf("%s\n", w.get->str);
+ printf("%s\n", w.val->str);
puts("");
cvec_str words = cvec_INIT;
@@ -29,12 +29,10 @@ int main1()
cmap_si word_map = cmap_INIT;
c_foreach (w, cvec_str, words)
- cmap_si_emplace(&word_map, w.get->str, 0).first->second += 1;
+ cmap_si_emplace(&word_map, w.val->str, 0).first->second += 1;
- c_foreach (pair, cmap_si, word_map) {
- printf("%d occurrences of word '%s'\n",
- pair.get->second,
- pair.get->first.str);
+ c_foreach (i, cmap_si, word_map) {
+ printf("%d occurrences of word '%s'\n", i.val->second, i.val->first.str);
}
cmap_si_del(&word_map);