diff options
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/README.md | 2 | ||||
| -rw-r--r-- | examples/advanced.c | 2 | ||||
| -rw-r--r-- | examples/benchmark.c | 2 | ||||
| -rw-r--r-- | examples/birthday.c | 4 | ||||
| -rw-r--r-- | examples/demos.c | 26 | ||||
| -rw-r--r-- | examples/ex_gaussian.c | 6 | ||||
| -rw-r--r-- | examples/inits.c | 10 | ||||
| -rw-r--r-- | examples/list.c | 12 | ||||
| -rw-r--r-- | examples/mapmap.c | 4 | ||||
| -rw-r--r-- | examples/phonebook.c | 2 | ||||
| -rw-r--r-- | examples/shared_ptr.c | 16 | ||||
| -rw-r--r-- | examples/stack.c | 2 | ||||
| -rw-r--r-- | examples/words.c | 10 |
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); |
