Go to the source code of this file.
Classes | |
struct | ib_list_struct |
struct | ib_list_node_struct |
struct | ib_list_helper_struct |
Typedefs | |
typedef struct ib_list_struct | ib_list_t |
typedef struct ib_list_node_struct | ib_list_node_t |
typedef struct ib_list_helper_struct | ib_list_helper_t |
Functions | |
UNIV_INTERN ib_list_t * | ib_list_create (void) |
UNIV_INTERN ib_list_t * | ib_list_create_heap (mem_heap_t *heap) |
UNIV_INTERN void | ib_list_free (ib_list_t *list) |
UNIV_INTERN ib_list_node_t * | ib_list_add_first (ib_list_t *list, void *data, mem_heap_t *heap) |
UNIV_INTERN ib_list_node_t * | ib_list_add_last (ib_list_t *list, void *data, mem_heap_t *heap) |
UNIV_INTERN ib_list_node_t * | ib_list_add_after (ib_list_t *list, ib_list_node_t *prev_node, void *data, mem_heap_t *heap) |
UNIV_INTERN void | ib_list_remove (ib_list_t *list, ib_list_node_t *node) |
UNIV_INLINE ib_list_node_t * | ib_list_get_first (ib_list_t *list) |
UNIV_INLINE ib_list_node_t * | ib_list_get_last (ib_list_t *list) |
typedef struct ib_list_struct ib_list_t |
A double-linked list. This differs from the one in ut0lst.h in that in this one, each list node contains a pointer to the data, whereas the one in ut0lst.h uses a strategy where the list pointers are embedded in the data items themselves.
Use this one when you need to store arbitrary data in the list where you can't embed the list pointers in the data, if a data item needs to be stored in multiple lists, etc.
Note about the memory management: ib_list_t is a fixed-size struct whose allocation/deallocation is done through ib_list_create/ib_list_free, but the memory for the list nodes is allocated through a user-given memory heap, which can either be the same for all nodes or vary per node. Most users will probably want to create a memory heap to store the item-specific data, and pass in this same heap to the list node creation functions, thus automatically freeing the list node when the item's heap is freed.
UNIV_INTERN ib_list_node_t* ib_list_add_after | ( | ib_list_t * | list, |
ib_list_node_t * | prev_node, | ||
void * | data, | ||
mem_heap_t * | heap | ||
) |
Add the data after the indicated node.
Add the data after the indicated node.
list | in: list |
prev_node | in: node preceding new node (can be NULL) |
data | in: data |
heap | in: memory heap to use |
Definition at line 117 of file ut0list.cc.
References ib_list_node_struct::data, ib_list_struct::first, ib_list_add_after(), ib_list_struct::last, mem_heap_alloc(), ib_list_node_struct::next, ib_list_node_struct::prev, and ut_a.
Referenced by ib_list_add_after(), ib_list_add_first(), and ib_list_add_last().
UNIV_INTERN ib_list_node_t* ib_list_add_first | ( | ib_list_t * | list, |
void * | data, | ||
mem_heap_t * | heap | ||
) |
Add the data to the start of the list.
Add the data to the start of the list.
list | in: list |
data | in: data |
heap | in: memory heap to use |
Definition at line 89 of file ut0list.cc.
References ib_list_add_after(), ib_list_add_first(), and ib_list_get_first().
Referenced by ib_list_add_first().
UNIV_INTERN ib_list_node_t* ib_list_add_last | ( | ib_list_t * | list, |
void * | data, | ||
mem_heap_t * | heap | ||
) |
Add the data to the end of the list.
Add the data to the end of the list.
list | in: list |
data | in: data |
heap | in: memory heap to use |
Definition at line 103 of file ut0list.cc.
References ib_list_add_after(), ib_list_add_last(), and ib_list_get_last().
Referenced by ib_list_add_last(), and ib_wqueue_add().
UNIV_INTERN ib_list_t* ib_list_create | ( | void | ) |
Create a new list using mem_alloc. Lists created with this function must be freed with ib_list_free.
Create a new list.
Definition at line 36 of file ut0list.cc.
References ib_list_struct::first, ib_list_create(), ib_list_struct::is_heap_list, and ib_list_struct::last.
Referenced by ib_list_create(), and ib_wqueue_create().
UNIV_INTERN ib_list_t* ib_list_create_heap | ( | mem_heap_t * | heap | ) |
Create a new list using the given heap. ib_list_free MUST NOT BE CALLED for lists created with this function.
Create a new list using the given heap. ib_list_free MUST NOT BE CALLED for lists created with this function.
heap | in: memory heap to use |
Definition at line 54 of file ut0list.cc.
References ib_list_struct::first, ib_list_create_heap(), ib_list_struct::is_heap_list, ib_list_struct::last, and mem_heap_alloc().
Referenced by ib_list_create_heap().
UNIV_INTERN void ib_list_free | ( | ib_list_t * | list | ) |
Free a list. in: list
Free a list.
list | in: list |
Definition at line 71 of file ut0list.cc.
References ib_list_free(), ib_list_struct::is_heap_list, mem_free, and ut_a.
Referenced by ib_list_free(), and ib_wqueue_free().
UNIV_INLINE ib_list_node_t* ib_list_get_first | ( | ib_list_t * | list | ) |
Get the first node in the list.
Referenced by ib_list_add_first(), ib_wqueue_free(), and ib_wqueue_wait().
UNIV_INLINE ib_list_node_t* ib_list_get_last | ( | ib_list_t * | list | ) |
Get the last node in the list.
Referenced by ib_list_add_last().
UNIV_INTERN void ib_list_remove | ( | ib_list_t * | list, |
ib_list_node_t * | node | ||
) |
Remove the node from the list. in: node to remove
Remove the node from the list.
list | in: list |
node | in: node to remove |
Definition at line 170 of file ut0list.cc.
References ib_list_struct::first, ib_list_remove(), ib_list_struct::last, ib_list_node_struct::next, ib_list_node_struct::prev, and ut_ad.
Referenced by ib_list_remove(), and ib_wqueue_wait().