Esempio n. 1
0
zring_t *
zring_new (void)
{
    zring_t *self = (zring_t *) zmalloc (sizeof (zring_t));
    if (self) {
        self->head = s_node_new (NULL, NULL, NULL);
        self->cursor = self->head;
    }
    return self;
}
Esempio n. 2
0
zlistx_t *
zlistx_new (void)
{
    zlistx_t *self = (zlistx_t *) zmalloc (sizeof (zlistx_t));
    assert (self);
    self->head = s_node_new (NULL);
    assert (self->head);
    self->cursor = self->head;
    self->comparator = s_comparator;
    return self;
}
Esempio n. 3
0
int
zring_append (zring_t *self, void *item)
{
    assert (self);
    node_t *node = s_node_new (self->head->prev, self->head, item);
    if (node) {
        self->head->prev->next = node;
        self->head->prev = node;
        self->cursor = node;
        self->size++;
        return 0;
    }
    else
        return -1;              //  Ran out of heap memory
}
Esempio n. 4
0
void *
zlistx_insert (zlistx_t *self, void *item, bool low_value)
{
    assert (self);
    if (self->duplicator) {
        item = (self->duplicator) (item);
        assert (item);
    }
    node_t *node = s_node_new (item);
    assert (node);
    zlistx_reorder (self, node, low_value);
    self->cursor = self->head;
    self->size++;
    return node;
}
Esempio n. 5
0
zlistx_t *
zlistx_new (void)
{
    zlistx_t *self = (zlistx_t *) zmalloc (sizeof (zlistx_t));
    if (self) {
        self->head = s_node_new (NULL);
        if (self->head) {
            self->cursor = self->head;
            self->comparator = s_comparator;
        }
        else
            zlistx_destroy (&self);

    }
    return self;
}
Esempio n. 6
0
void *
zlistx_insert (zlistx_t *self, void *item, bool low_value)
{
    assert (self);
    if (self->duplicator) {
        item = (self->duplicator)(item);
        if (!item)
            return NULL;        //  Out of memory
    }
    node_t *node = s_node_new (item);
    if (node) {
        zlistx_reorder (self, node, low_value);
        self->cursor = self->head;
        self->size++;
    }
    return node;
}
Esempio n. 7
0
void *
zlistx_add_end (zlistx_t *self, void *item)
{
    assert (self);
    assert (item);

    if (self->duplicator) {
        item = (self->duplicator) (item);
        assert (item);
    }
    node_t *node = s_node_new (item);
    assert (node);

    //  Insert before head
    s_node_relink (node, self->head->prev, self->head);
    self->cursor = self->head;
    self->size++;
    return node;
}
Esempio n. 8
0
void *
zlistx_add_start (zlistx_t *self, void *item)
{
    assert (self);
    assert (item);

    if (self->duplicator) {
        item = (self->duplicator) (item);
        assert (item);
    }
    node_t *node = s_node_new (item);
    assert (node);

    //  Insert after head
    s_node_relink (node, self->head, self->head->next);
    self->cursor = self->head;
    self->size++;
    return node;
}