XWOS API  4.0
XWOS C/C++ API参考手册
载入中...
搜索中...
未找到
bclst.h 文件参考

XWOS通用库:双循环链表 更多...

#include <xwos/standard.h>
bclst.h 的引用(Include)关系图:
此图展示该文件直接或间接的被哪些文件引用了:

浏览源代码.

结构体

struct  xwlib_bclst_node
 双循环链表的节点 更多...
 

宏定义

#define xwlib_bclst_head   xwlib_bclst_node
 双循环链表头
 
#define XWLIB_BCLST_HEAD_INIT(n)   (struct xwlib_bclst_head){&(n), &(n)}
 双循环链表头的初始化结构体
 
#define XWLIB_BCLST_NODE_INIT(n)   (struct xwlib_bclst_node){&(n), &(n)}
 双循环链表节点的初始化结构体
 
#define xwlib_bclst_entry(ptr, type, member)   xwcc_derof((ptr), type, member)
 从一个链表节点的指针值计算出包含此节点成员的外层结构体的指针值。
 
#define xwlib_bclst_first_entry(head, type, member)    xwlib_bclst_entry((head)->next, type, member)
 获得包含链表第一个节点的外层结构体的指针。
 
#define xwlib_bclst_last_entry(head, type, member)    xwlib_bclst_entry((head)->prev, type, member)
 获得包含链表最后一个节点的外层结构体的指针。
 
#define xwlib_bclst_next_entry(p, type, member)    xwlib_bclst_entry((p)->member.next, type, member)
 从一个包含链表节点的外层结构体指针得到下一个外层结构体的指针
 
#define xwlib_bclst_prev_entry(p, type, member)    xwlib_bclst_entry((p)->member.prev, type, member)
 从一个包含链表节点的外层结构体指针得到上一个外层结构体的指针
 
#define xwlib_bclst_itr_next(p, head)    for ((p) = (head)->next; (p) != (head); (p) = (p)->next)
 向前遍历(iterate over)整个链表
 
#define xwlib_bclst_itr_prev(p, head)    for ((p) = (head)->prev; (p) != (head); (p) = (p)->prev)
 向后遍历(iterate over)整个链表
 
#define xwlib_bclst_itr_next_safe(p, n, head)
 向前遍历(iterate over)整个链表,并防止因遍历到的节点被删除而造成的错误。
 
#define xwlib_bclst_itr_prev_safe(p, n, head)
 向后遍历(iterate over)整个链表,并防止因遍历到的节点被删除而造成的错误。
 
#define xwlib_bclst_itr_next_entry(p, head, type, member)
 向前遍历(iterate over)整个链表,并将节点指针转化为包含它们的外层结构体指针。
 
#define xwlib_bclst_itr_prev_entry(p, head, type, member)
 向后遍历(iterate over)整个链表,并将节点指针转化为包含它们的外层结构体指针。
 
#define xwlib_bclst_itr_next_entry_safe(p, n, head, type, member)
 向前遍历(iterate over)整个链表,并防止因遍历到的节点被删除而造成的错误。 同时将节点指针转化为包含它们的外层结构体指针。
 
#define xwlib_bclst_itr_next_entry_del(p, head, type, member)
 以删除节点为目的,向前遍历(iterate over)整个链表, 同时将节点指针转化为包含它们的外层结构体指针。
 
#define xwlib_bclst_itr_prev_entry_safe(p, n, head, type, member)
 向后遍历(iterate over)整个链表,并防止因遍历到的节点被删除而造成的错误。 同时将节点指针转化为包含它们的外层结构体指针。
 
#define xwlib_bclst_itr_prev_entry_del(p, head, type, member)
 以删除节点为目的,向后遍历(iterate over)整个链表, 同时将节点指针转化为包含它们的外层结构体指针。
 

函数

static void xwlib_bclst_init_head (struct xwlib_bclst_node *h)
 初始化一个链表头。
 
static void xwlib_bclst_init_node (struct xwlib_bclst_node *n)
 初始化一个链表节点。
 
static bool xwlib_bclst_tst_empty (const struct xwlib_bclst_node *h)
 测试链表是否为空。
 
static bool xwlib_bclst_tst_first (struct xwlib_bclst_node *h, struct xwlib_bclst_node *n)
 测试一个节点是否为指定链表的第一个节点。
 
static bool xwlib_bclst_tst_last (struct xwlib_bclst_node *h, struct xwlib_bclst_node *n)
 测试一个节点是否为指定链表的最后一个节点。
 
static bool xwlib_bclst_tst_empty_carefully (const struct xwlib_bclst_node *h)
 测试链表是否为空且是否没有正在被修改
 
static void xwlib_bclst_add_between (struct xwlib_bclst_node *newn, struct xwlib_bclst_node *prev, struct xwlib_bclst_node *next)
 将一个新节点加入到prev与next之间
 
static void xwlib_bclst_add_front (struct xwlib_bclst_node *newn, struct xwlib_bclst_node *next)
 将一个节点加入到另一个节点的前面
 
static void xwlib_bclst_add_behind (struct xwlib_bclst_node *newn, struct xwlib_bclst_node *prev)
 将一个节点加入到另一个节点的后面
 
static void xwlib_bclst_add_head (struct xwlib_bclst_node *head, struct xwlib_bclst_node *newn)
 将一个节点加入链表头部(链表头的后面)
 
static void xwlib_bclst_add_tail (struct xwlib_bclst_node *head, struct xwlib_bclst_node *newn)
 将一个节点加入链表尾部(链表头的前面)
 
static void xwlib_bclst_del_between (struct xwlib_bclst_node *prev, struct xwlib_bclst_node *next)
 删除prev节点与next节点之间的节点
 
static void xwlib_bclst_del (struct xwlib_bclst_node *node)
 删除一个节点
 
static void xwlib_bclst_del_init (struct xwlib_bclst_node *node)
 删除一个节点,并重新初始化它
 
static void xwlib_bclst_replace (struct xwlib_bclst_node *newn, struct xwlib_bclst_node *oldn)
 用一个新节点代替旧节点
 
static void xwlib_bclst_replace_init (struct xwlib_bclst_node *newn, struct xwlib_bclst_node *oldn)
 用一个新节点代替旧节点,并重新初始化旧节点
 
static void xwlib_bclst_splice_between (struct xwlib_bclst_node *list, struct xwlib_bclst_node *prev, struct xwlib_bclst_node *next)
 将一条链表衔接到另一条链表的prev节点与next节点之间
 
static void xwlib_bclst_splice_head (struct xwlib_bclst_node *head, struct xwlib_bclst_node *list)
 将一条链表衔接到另一条链表头之后
 
static void xwlib_bclst_splice_tail (struct xwlib_bclst_node *head, struct xwlib_bclst_node *list)
 将一条链表衔接到另一条链表头之前
 
static void xwlib_bclst_splice_head_init (struct xwlib_bclst_node *head, struct xwlib_bclst_node *list)
 将一条链表衔接到另一条链表头之后,并重新初始化剩下的空链表头
 
static void xwlib_bclst_splice_tail_init (struct xwlib_bclst_node *head, struct xwlib_bclst_node *list)
 将一条链表衔接到另一条链表头之前,并重新初始化剩下的空链表头
 
static void xwlib_bclst_insseg_between (struct xwlib_bclst_node *seg, struct xwlib_bclst_node *prev, struct xwlib_bclst_node *next)
 将一段链表片段(无链表头)衔接到另一条链表的prev节点与next节点之间
 
static void xwlib_bclst_insseg_head (struct xwlib_bclst_node *head, struct xwlib_bclst_node *seg)
 将一段链表片段(无链表头)衔接到另一条链表头之后
 
static void xwlib_bclst_insseg_tail (struct xwlib_bclst_node *head, struct xwlib_bclst_node *seg)
 将一段链表片段(无链表头)衔接到另一条链表头之前
 

详细描述

XWOS通用库:双循环链表

作者

在文件 bclst.h 中定义.