Go to the source code of this file.
Data Structures | |
struct | _LILI_NODE |
Node object structure. More... | |
struct | _LILI |
List object structure. More... | |
Defines | |
#define | LiLiIsLifo(list) (((list)->lst_flags & LILI_F_ORDER) == LILI_F_LIFO) |
Return true if the given list is a last in, first out queue. | |
#define | LiLiIsFifo(list) (((list)->lst_flags & LILI_F_ORDER) == LILI_F_FIFO) |
Return true if the given list is a first in, first out queue. | |
#define | LiLiIsSorted(list) (((list)->lst_flags & LILI_F_ORDER) == LILI_F_SORT) |
Return true if the given list is sorted. | |
#define | LiLiIsEmpty(list) ((list)->lst_head == NULL) |
Return true if the given list is empty. | |
#define | LiLiHasUniqueItems(list) (((list)->lst_flags & LILI_F_UNIQUE) == LILI_F_UNIQUE) |
Return true if the given list has unique items only. | |
#define | LiLiFirstNode(list) ((list)->lst_head) |
Return the first node object of a given list. | |
#define | LiLiLastNode(list) ((list)->lst_tail) |
Return the last node object of a given list. | |
#define | LiLiNextNode(node) ((node)->nod_nxt) |
Return the next node object of a given node. | |
#define | LiLiPreviousNode(node) ((node)->nod_prv) |
Return the previous node object of a given node. | |
#define | LiLiNodeItem(node) ((node)->nod_itm) |
Return the item reference of a given node. | |
Typedefs | |
typedef intptr_t | LILI_ITEMREF |
Type of an item reference. | |
typedef LILI_ITEMREF(* | LiLiItemCreateFunc )(LILI_ITEMREF) |
typedef void(* | LiLiItemDestroyFunc )(LILI_ITEMREF) |
typedef int(* | LiLiItemCompareFunc )(LILI_ITEMREF, LILI_ITEMREF) |
typedef struct _LILI_NODE | LILI_NODE |
Node object type. | |
typedef struct _LILI | LILI |
List object type. | |
Functions | |
LILI * | LiLiCreate (uint8_t flags, LiLiItemCreateFunc cre, LiLiItemDestroyFunc des, LiLiItemCompareFunc cmp) |
Create a linked list. | |
void | LiLiClean (LILI *list) |
Remove all items from a list. | |
void | LiLiDestroy (LILI *list) |
Destroy a linked list. | |
int | LiLiNodes (LILI *list) |
Return the number of nodes in a given list. | |
int | LiLiPushItem (LILI *list, LILI_ITEMREF ref) |
Add an item to the list. | |
int | LiLiPopItem (LILI *list, LILI_ITEMREF *refp) |
Remove the next item from the list. | |
LILI_NODE * | LiLiFindItem (LILI *list, LILI_ITEMREF ref) |
Find the node of a given item. | |
LILI_NODE * | LiLiLocateItem (LILI *list, LILI_ITEMREF ref) |
Find the node's location by a given item. | |
LILI_NODE * | LiLiInsertItemAfterNode (LILI *list, LILI_NODE *node, LILI_ITEMREF ref) |
LILI_NODE * | LiLiInsertItemBeforeNode (LILI *list, LILI_NODE *node, LILI_ITEMREF ref) |
void | LiLiRemoveNode (LILI *list, LILI_NODE *node) |
Remove a given node from the list. | |
LILI_ITEMREF | LiLiCreateStringItemCopy (LILI_ITEMREF ref) |
Create a copy of a referenced string item. | |
void | LiLiDestroyStringItemCopy (LILI_ITEMREF ref) |
Destroy the string item copy. | |
int | LiLiCompareStringItems (LILI_ITEMREF ref1, LILI_ITEMREF ref2) |
Compare two string items. | |
List attribute flags | |
#define | LILI_F_LIFO 0x00 |
Last in, first out queue. | |
#define | LILI_F_FIFO 0x01 |
First in, first out queue. | |
#define | LILI_F_SORT 0x02 |
Sorted list. | |
#define | LILI_F_ORDER 0x03 |
List order mask. | |
#define | LILI_F_UNIQUE 0x80 |
Allow unique items only. |