Exemple #1
0
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;
}
Exemple #2
0
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);
}