Esempio n. 1
0
File: zhashx.c Progetto: claws/czmq
void
zhashx_destroy (zhashx_t **self_p)
{
    assert (self_p);
    if (*self_p) {
        zhashx_t *self = *self_p;
        if (self->items) {
            s_purge (self);
            free (self->items);
        }
        zlistx_destroy (&self->comments);
        free (self->filename);
        free (self);
        *self_p = NULL;
    }
}
Esempio n. 2
0
//  --------------------------------------------------------------------------
//  Delete all items from the hash table. If the key destructor is
//  set, calls it on every key. If the item destructor is set, calls
//  it on every item.
void
zhash_purge (zhash_t *self)
{
    assert (self);
    s_purge (self);

    if (self->prime_index > INITIAL_PRIME) {
        // Try to shrink hash table
        size_t limit = primes [INITIAL_PRIME];
        item_t **items =
            (item_t **) zmalloc (sizeof (item_t *) * limit);
        if (items) {
            free (self->items);
            self->prime_index = INITIAL_PRIME;
            self->chain_limit = INITIAL_CHAIN;
            self->items = items;
        }
    }
}