From 6749cc21a2045d307c239d82891cb860687dfd2a Mon Sep 17 00:00:00 2001 From: Tyge Løvset Date: Tue, 14 Dec 2021 19:50:10 +0100 Subject: Added and renamed some examples. --- examples/sharedptr.c | 56 ---------------------------------------------------- 1 file changed, 56 deletions(-) delete mode 100644 examples/sharedptr.c (limited to 'examples/sharedptr.c') diff --git a/examples/sharedptr.c b/examples/sharedptr.c deleted file mode 100644 index c3da5287..00000000 --- a/examples/sharedptr.c +++ /dev/null @@ -1,56 +0,0 @@ -#include -#include - -void int_del(int* x) { - printf("del: %d\n", *x); -} - -// csptr implements its own clone method using reference counting, -// so 'i_valfrom' need not be defined (will be ignored). - -#define i_type iref // set type name to be defined (instead of 'csptr_int') -#define i_val int -#define i_del int_del // optional, just to display the elements destroyed -#include // iref - -#define i_key_ref iref // note: use i_key_ref instead of i_key for csptr/cbox elements -#include // csset_iref (like: std::set>) - -#define i_val_ref iref // note: as above. -#include // cvec_iref (like: std::vector>) - -int main() -{ - c_auto (cvec_iref, vec) // declare and init vec, call cvec_iref_del() at scope exit - c_auto (csset_iref, set) // declare and init set, call csset_iref_del() at scope exit - { - const int years[] = {2021, 2012, 2022, 2015}; - c_forrange (i, c_arraylen(years)) - cvec_iref_push_back(&vec, iref_new(years[i])); - - printf("vec:"); - c_foreach (i, cvec_iref, vec) printf(" %d", *i.ref->get); - puts(""); - - // add odd numbers from vec to set - c_foreach (i, cvec_iref, vec) - if (*i.ref->get & 1) - csset_iref_emplace(&set, *i.ref); // copy shared pointer => increments counter. - - // erase the two last elements in vec - cvec_iref_pop_back(&vec); - cvec_iref_pop_back(&vec); - - printf("vec:"); - c_foreach (i, cvec_iref, vec) printf(" %d", *i.ref->get); - - printf("\nset:"); - c_foreach (i, csset_iref, set) printf(" %d", *i.ref->get); - - c_autovar (iref p = iref_clone(vec.data[0]), iref_del(&p)) { - printf("\n%d is now owned by %ld objects\n", *p.get, *p.use_count); - } - - puts("\nDone"); - } -} -- cgit v1.2.3