/*******************************************************************//**
@file ut/ut0list.cc
A double-linked list
Created 4/26/2006 Osku Salerma
************************************************************************/
#include"ut0list.h"
/****************************************************************//**
Create a new list.
@return list */
ib_list_t*
ib_list_create(void) /*=================*/
{ return(static_cast<ib_list_t*>(ut_zalloc_nokey(sizeof(ib_list_t))));
}
/****************************************************************//**
Free a list. */ void
ib_list_free( /*=========*/
ib_list_t* list) /*!< in: list */
{ /* We don't check that the list is empty because it's entirely valid toe.g.haveallthenodesallocatedfromasingleheapthatisthen
freed after the list itself is freed. */
ut_free(list);
}
/****************************************************************//**
Add the data after the indicated node.
@returnnew list node */ static
ib_list_node_t*
ib_list_add_after( /*==============*/
ib_list_t* list, /*!< in: list */
ib_list_node_t* prev_node, /*!< in: node preceding new node (can
be NULL) */ void* data, /*!< in: data */
mem_heap_t* heap) /*!< in: memory heap to use */
{
ib_list_node_t* node;
/****************************************************************//**
Add the data to the end of the list.
@returnnew list node */
ib_list_node_t*
ib_list_add_last( /*=============*/
ib_list_t* list, /*!< in: list */ void* data, /*!< in: data */
mem_heap_t* heap) /*!< in: memory heap to use */
{ return(ib_list_add_after(list, ib_list_get_last(list), data, heap));
}
/****************************************************************//**
Remove the node from the list. */ void
ib_list_remove( /*===========*/
ib_list_t* list, /*!< in: list */
ib_list_node_t* node) /*!< in: node to remove */
{ if (node->prev) {
node->prev->next = node->next;
} else { /* First item in list. */
ut_ad(list->first == node);
list->first = node->next;
}
if (node->next) {
node->next->prev = node->prev;
} else { /* Last item in list. */
ut_ad(list->last == node);
list->last = node->prev;
}
node->prev = node->next = NULL;
}
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.12 Sekunden
(vorverarbeitet am 2026-10-08)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.