From c083936d8fa46b5df921dedae6ca15e1192d6612 Mon Sep 17 00:00:00 2001 From: Tyge Løvset Date: Tue, 14 Dec 2021 11:20:17 +0100 Subject: cstr_printf() now returns int like printf(). Minor updates in sharedptr.c example. --- examples/sharedptr.c | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) (limited to 'examples') diff --git a/examples/sharedptr.c b/examples/sharedptr.c index a8e3e3ae..c3da5287 100644 --- a/examples/sharedptr.c +++ b/examples/sharedptr.c @@ -5,50 +5,50 @@ void int_del(int* x) { printf("del: %d\n", *x); } -// csptr implements its own clone method using ref counting, so 'i_valfrom' -// should not be defined (ignored). +// 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 func, just to display elements destroyed -#include // csptr_int +#define i_del int_del // optional, just to display the elements destroyed +#include // iref -#define i_key_ref csptr_int // note: use i_key_ref instead of i_key -#define i_tag int // tag otherwise defaults to 'ref' -#include // csset_int (like: std::set>) +#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 csptr_int // Note: use i_val_ref instead of i_val -#define i_tag int // tag otherwise defaults to 'ref' -#include // cvec_int (like: std::vector>) +#define i_val_ref iref // note: as above. +#include // cvec_iref (like: std::vector>) int main() { - c_auto (cvec_int, vec) // declare and init vec, call del at scope exit - c_auto (csset_int, set) // declare and init set, call del at scope exit + 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_int_push_back(&vec, csptr_int_new(years[i])); + cvec_iref_push_back(&vec, iref_new(years[i])); printf("vec:"); - c_foreach (i, cvec_int, vec) printf(" %d", *i.ref->get); + c_foreach (i, cvec_iref, vec) printf(" %d", *i.ref->get); puts(""); // add odd numbers from vec to set - c_foreach (i, cvec_int, vec) + c_foreach (i, cvec_iref, vec) if (*i.ref->get & 1) - csset_int_emplace(&set, *i.ref); // copy shared pointer => increments counter. + csset_iref_emplace(&set, *i.ref); // copy shared pointer => increments counter. // erase the two last elements in vec - cvec_int_pop_back(&vec); - cvec_int_pop_back(&vec); + cvec_iref_pop_back(&vec); + cvec_iref_pop_back(&vec); printf("vec:"); - c_foreach (i, cvec_int, vec) printf(" %d", *i.ref->get); + c_foreach (i, cvec_iref, vec) printf(" %d", *i.ref->get); printf("\nset:"); - c_foreach (i, csset_int, set) printf(" %d", *i.ref->get); + c_foreach (i, csset_iref, set) printf(" %d", *i.ref->get); - c_autovar (csptr_int p = csptr_int_clone(vec.data[0]), csptr_int_del(&p)) { - printf("\n%d is now owned by %zu objects\n", *p.get, *p.use_count); + 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