static void ollrblink_dispose(struct llrb_link* link, void* param) { struct ollrb_node* node = container_of(link, struct ollrb_node, link); struct ollrb* ollrb = (struct ollrb*)param; /* delete the node it self */ allocator_dealloc(ollrb->allocator, node); }
static void signctx_dealloc(struct signctx *self) { allocator_dealloc(&self->mAllocator); vector_dealloc(&self->signatureParams); string_dealloc(&self->signatureParamsBuf); string_dealloc(&self->signatureSeed); }
static void ollrb_itr_destroy(object* citr) { struct ollrb_itr* itr = (struct ollrb_itr*)citr; dbg_assert(__is_object(citr)); dbg_assert(itr->__cast == ollrb_itr_cast); /* destroy itself */ allocator_dealloc(itr->allocator, itr); }
void ollrb_destroy(object* o) { struct ollrb* ollrb = (struct ollrb*)o; allocator alc = ollrb->allocator; bool join_alc = ollrb->allocator_join_ondispose; ollrb_clear(o); allocator_dealloc(alc, ollrb); if (join_alc) { allocator_join(alc); } }