diff options
| author | Tyge Løvset <[email protected]> | 2021-12-14 11:20:17 +0100 |
|---|---|---|
| committer | Tyge Løvset <[email protected]> | 2021-12-14 11:20:17 +0100 |
| commit | c083936d8fa46b5df921dedae6ca15e1192d6612 (patch) | |
| tree | a8f2b0e78030e3c3db87487acb85ae8c75733a38 /examples | |
| parent | 17280f8177736c35b34e41556a307ca51e68d1e2 (diff) | |
| download | STC-modified-c083936d8fa46b5df921dedae6ca15e1192d6612.tar.gz STC-modified-c083936d8fa46b5df921dedae6ca15e1192d6612.zip | |
cstr_printf() now returns int like printf(). Minor updates in sharedptr.c example.
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/sharedptr.c | 44 |
1 files changed, 22 insertions, 22 deletions
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 <stc/csptr.h> // csptr_int
+#define i_del int_del // optional, just to display the elements destroyed
+#include <stc/csptr.h> // 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 <stc/csset.h> // csset_int (like: std::set<std::shared_ptr<int>>)
+#define i_key_ref iref // note: use i_key_ref instead of i_key for csptr/cbox elements
+#include <stc/csset.h> // csset_iref (like: std::set<std::shared_ptr<int>>)
-#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 <stc/cvec.h> // cvec_int (like: std::vector<std::shared_ptr<int>>)
+#define i_val_ref iref // note: as above.
+#include <stc/cvec.h> // cvec_iref (like: std::vector<std::shared_ptr<int>>)
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");
|
