Update documentation

This commit is contained in:
2025-08-31 00:34:08 -07:00
parent d78cf29765
commit 4efdcc97ae
4 changed files with 89 additions and 33 deletions

View File

@ -21,9 +21,7 @@ A *make_a(RefcountContext *c, int n, const char *s) {
bool held_refs_callback(void *a_raw, RefcountList **out, void *ignored) {
A *a = a_raw;
if (a->next) {
*out = refcount_list_push_full(*out, a->next, &COUNTING_ALLOCATOR);
}
*out = refcount_list_push_full(*out, a->next, &COUNTING_ALLOCATOR);
return true;
}
@ -73,11 +71,47 @@ int main(int argc, const char **argv) {
a->next = refcount_context_ref(c, a);
assert(refcount_context_num_refs(c, a) == 1);
refcount_context_unref(c, a);
a = NULL;
for (char i = 'a'; i <= 'z'; ++i) {
A *na = make_a(c, i, "");
na->next = refcount_context_ref(c, a);
a = na;
}
assert(refcount_context_num_refs(c, a) == 0);
refcount_context_unref(c, a);
A *first = NULL;
a = NULL;
for (char i = 'a'; i <= 'z'; ++i) {
A *na = make_a(c, i, "");
if (!first) {
first = na;
}
na->next = refcount_context_ref(c, a);
a = na;
}
assert(refcount_context_num_refs(c, a) == 0);
first->next = refcount_context_ref(c, a);
a = first;
assert(refcount_context_num_refs(c, a) == 1);
refcount_context_ref(c, a);
refcount_context_unref(c, a);
assert(refcount_context_num_refs(c, a) == 1);
refcount_context_garbage_collect(c);
a = NULL;
for (char i = 'a'; i <= 'z'; ++i) {
A *na = make_a(c, i, "");
na->next = refcount_context_ref(c, a);
a = na;
}
assert(refcount_context_num_refs(c, a) == 0);
refcount_context_unref(c, a);
assert(refcount_context_garbage_collect(c) == 26);
refcount_context_destroy(c);