void array_reset(struct array *a, void (*free_elm)(void*)) { if (a->data == NULL) return; if (free_elm != NULL) for (size_t i = 0; i < a->len; i++) free_elm(a->data[i]); a->len = 0; a->data[0] = NULL; }
void HT_NAME(_free)(HT_STRUCT *table, void (*free_elm)(HT_VALUE_TYPE elm)) { uint32_t i; struct HT_NAME(_entry) *tab; uint32_t tsize = 1 << table->table_size; if(free_elm) { if(table->table) { tab = table->table; } else { tab = table->dense; } for(i = 0; i < tsize; ++i) { if(tab[i].hash) { free_elm(tab[i].value); } } } if(table->table) free(table); }