Ejemplo n.º 1
0
DListRet dlist_delete(DList* thiz, size_t index)
{
	DListNode* cursor = dlist_get_node(thiz, index, 0);

	if(cursor != NULL)
	{
		if(cursor == thiz->first)
		{
			thiz->first = cursor->next;
		}

		if(cursor->next != NULL)
		{
			cursor->next->prev = cursor->prev;
		}

		if(cursor->prev != NULL)
		{
			cursor->prev->next = cursor->next;
		}

		dlist_destroy_node(thiz, cursor);
	}

	return DLIST_RET_OK;
}
Ejemplo n.º 2
0
Ret dlist_delete(DList* thiz, size_t index)
{
    Ret ret = RET_OK;
    DListNode* cursor = NULL;

    return_val_if_fail(thiz != NULL, RET_INVALID_PARAMS);

    cursor = dlist_get_node(thiz, index, 0);

    do {
        if (cursor == NULL) {
            ret = RET_INVALID_PARAMS;
            break;
        }

        if (cursor != NULL) {
            if (cursor == thiz->first) {
                thiz->first = cursor->next;
            }

            if (cursor->next != NULL) {
                cursor->next->prev = cursor->prev;
            }

            if (cursor->prev != NULL) {
                cursor->prev->next = cursor->next;
            }

            dlist_destroy_node(thiz, cursor);
        }

    } while (0);

    return RET_OK;
}
Ejemplo n.º 3
0
void dlist_destroy(DList* thiz)
{
	DListNode* iter = thiz->first;
	DListNode* next = NULL;

	while(iter != NULL)
	{
		next = iter->next;
		dlist_destroy_node(thiz, iter);
		iter = next;
	}

	thiz->first = NULL;
	free(thiz);

	return;
}
Ejemplo n.º 4
0
void dlist_destroy(DList* thiz)
{
	DListNode* iter = NULL;
	DListNode* next = NULL;
	
	return_if_fail(thiz != NULL);

	iter = thiz->first;
	while(iter != NULL)
	{
		next = iter->next;
		dlist_destroy_node(thiz, iter);
		iter = next;
	}

	thiz->first = NULL;
	
	SAFE_FREE(thiz);

	return;
}