XWOS API  4.0
XWOS C/C++ API参考手册
载入中...
搜索中...
未找到
双循环链表
双循环链表 的协作图:

结构体

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)
 将一段链表片段(无链表头)衔接到另一条链表头之前
 

详细描述

宏定义说明

◆ xwlib_bclst_entry

#define xwlib_bclst_entry (   ptr,
  type,
  member 
)    xwcc_derof((ptr), type, member)

从一个链表节点的指针值计算出包含此节点成员的外层结构体的指针值。

参数
[in]ptr节点指针
[in]type外层结构体类型
[in]member节点在外层结构体中的成员符号名(symbol)
返回
外层结构体的指针

在文件 bclst.h54 行定义.

◆ xwlib_bclst_first_entry

#define xwlib_bclst_first_entry (   head,
  type,
  member 
)     xwlib_bclst_entry((head)->next, type, member)

获得包含链表第一个节点的外层结构体的指针。

参数
[in]head链表头指针
[in]type外层结构体类型
[in]member节点在外层结构体中的成员符号名(symbol)
返回
外层结构体的指针

在文件 bclst.h63 行定义.

◆ xwlib_bclst_head

#define xwlib_bclst_head   xwlib_bclst_node

双循环链表头

在文件 bclst.h35 行定义.

◆ XWLIB_BCLST_HEAD_INIT

#define XWLIB_BCLST_HEAD_INIT (   n)    (struct xwlib_bclst_head){&(n), &(n)}

双循环链表头的初始化结构体

在文件 bclst.h40 行定义.

◆ xwlib_bclst_itr_next

#define xwlib_bclst_itr_next (   p,
  head 
)     for ((p) = (head)->next; (p) != (head); (p) = (p)->next)

向前遍历(iterate over)整个链表

参数
[in]p光标指针,指向当前遍历到的节点
[in]head链表头指针

在文件 bclst.h101 行定义.

◆ xwlib_bclst_itr_next_entry

#define xwlib_bclst_itr_next_entry (   p,
  head,
  type,
  member 
)
值:
for ((p) = xwlib_bclst_first_entry(head, type, member); \
&(p)->member != (head); \
(p) = xwlib_bclst_next_entry((p), type, member))
#define xwlib_bclst_next_entry(p, type, member)
从一个包含链表节点的外层结构体指针得到下一个外层结构体的指针
Definition bclst.h:83
#define xwlib_bclst_first_entry(head, type, member)
获得包含链表第一个节点的外层结构体的指针。
Definition bclst.h:63

向前遍历(iterate over)整个链表,并将节点指针转化为包含它们的外层结构体指针。

参数
[in]p光标指针,指向当前遍历到的节点所对应的外层结构体
[in]head链表头指针
[in]type外层结构体类型
[in]member节点在外层结构体中的成员符号名(symbol)

在文件 bclst.h143 行定义.

◆ xwlib_bclst_itr_next_entry_del

#define xwlib_bclst_itr_next_entry_del (   p,
  head,
  type,
  member 
)
值:
for ((p) = xwlib_bclst_first_entry(head, type, member); \
&(p)->member != (head); \
(p) = xwlib_bclst_first_entry(head, type, member))

以删除节点为目的,向前遍历(iterate over)整个链表, 同时将节点指针转化为包含它们的外层结构体指针。

参数
[in]p光标指针,指向当前遍历到的节点所对应的外层结构体
[in]head链表头指针
[in]type外层结构体类型
[in]member节点在外层结构体中的成员符号名(symbol)
注解

‍这个宏仅用于在退出操作中清理链表中剩余节点。在迭代操作的循环体中, 必须将节点所对应的结构体释放掉,并将节点从链表中删除。

在文件 bclst.h187 行定义.

◆ xwlib_bclst_itr_next_entry_safe

#define xwlib_bclst_itr_next_entry_safe (   p,
  n,
  head,
  type,
  member 
)
值:
for ((p) = xwlib_bclst_first_entry(head, type, member), \
(n) = xwlib_bclst_next_entry((p), type, member); \
&(p)->member != (head); \
(p) = (n), (n) = xwlib_bclst_next_entry((n), type, member))

向前遍历(iterate over)整个链表,并防止因遍历到的节点被删除而造成的错误。 同时将节点指针转化为包含它们的外层结构体指针。

参数
[in]p光标指针,指向当前遍历到的节点所对应的外层结构体
[in]n暂存光标指针所指向的节点的next指针所对应的外层结构体指针, 防止此节点被删除后取到错误的next指针
[in]head链表头指针
[in]type外层结构体类型
[in]member节点在外层结构体中的成员符号名(symbol)

在文件 bclst.h170 行定义.

◆ xwlib_bclst_itr_next_safe

#define xwlib_bclst_itr_next_safe (   p,
  n,
  head 
)
值:
for ((p) = (head)->next, (n) = (p)->next; \
(p) != (head); \
(p) = (n), (n) = (p)->next)

向前遍历(iterate over)整个链表,并防止因遍历到的节点被删除而造成的错误。

参数
[in]p光标指针,指向当前遍历到的节点
[in]n暂存光标指针所指向的节点的next指针, 防止此节点被删除后取到错误的next指针。
[in]head链表头指针

在文件 bclst.h119 行定义.

◆ xwlib_bclst_itr_prev

#define xwlib_bclst_itr_prev (   p,
  head 
)     for ((p) = (head)->prev; (p) != (head); (p) = (p)->prev)

向后遍历(iterate over)整个链表

参数
[in]p光标指针,指向当前遍历到的节点
[in]head链表头指针

在文件 bclst.h109 行定义.

◆ xwlib_bclst_itr_prev_entry

#define xwlib_bclst_itr_prev_entry (   p,
  head,
  type,
  member 
)
值:
for ((p) = xwlib_bclst_last_entry(head, type, member); \
&(p)->member != (head); \
(p) = xwlib_bclst_prev_entry((p), type, member))
#define xwlib_bclst_last_entry(head, type, member)
获得包含链表最后一个节点的外层结构体的指针。
Definition bclst.h:73
#define xwlib_bclst_prev_entry(p, type, member)
从一个包含链表节点的外层结构体指针得到上一个外层结构体的指针
Definition bclst.h:93

向后遍历(iterate over)整个链表,并将节点指针转化为包含它们的外层结构体指针。

参数
[in]p光标指针,指向当前遍历到的节点所对应的外层结构体
[in]head链表头指针
[in]type外层结构体类型
[in]member节点在外层结构体中的成员符号名(symbol)

在文件 bclst.h155 行定义.

◆ xwlib_bclst_itr_prev_entry_del

#define xwlib_bclst_itr_prev_entry_del (   p,
  head,
  type,
  member 
)
值:
for ((p) = xwlib_bclst_last_entry(head, type, member); \
&(p)->member != (head); \
(p) = xwlib_bclst_last_entry(head, type, member))

以删除节点为目的,向后遍历(iterate over)整个链表, 同时将节点指针转化为包含它们的外层结构体指针。

参数
[in]p光标指针,指向当前遍历到的节点所对应的外层结构体
[in]head链表头指针
[in]type外层结构体类型
[in]member节点在外层结构体中的成员符号名(symbol)
注解

‍这个宏通仅用于在退出操作中清理链表中剩余节点。在迭代操作的循环体中, 必须将节点所对应的结构体释放掉,并将节点从链表中删除。

在文件 bclst.h219 行定义.

◆ xwlib_bclst_itr_prev_entry_safe

#define xwlib_bclst_itr_prev_entry_safe (   p,
  n,
  head,
  type,
  member 
)
值:
for ((p) = xwlib_bclst_last_entry(head, type, member), \
(n) = xwlib_bclst_prev_entry((p), type, member); \
&(p)->member != (head); \
(p) = (n), (n) = xwlib_bclst_prev_entry((n), type, member))

向后遍历(iterate over)整个链表,并防止因遍历到的节点被删除而造成的错误。 同时将节点指针转化为包含它们的外层结构体指针。

参数
[in]p光标指针,指向当前遍历到的节点所对应的外层结构体
[in]n暂存光标指针所指向的节点的prev指针所对应的外层结构体指针, 防止此节点被删除后取到错误的prev指针
[in]head链表头指针
[in]type外层结构体类型
[in]member节点在外层结构体中的成员符号名(symbol)

在文件 bclst.h202 行定义.

◆ xwlib_bclst_itr_prev_safe

#define xwlib_bclst_itr_prev_safe (   p,
  n,
  head 
)
值:
for ((p) = (head)->prev, (n) = (p)->prev; \
(p) != (head); \
(p) = (n), (n) = (p)->prev)

向后遍历(iterate over)整个链表,并防止因遍历到的节点被删除而造成的错误。

参数
[in]p光标指针,指向当前遍历到的节点
[in]n暂存光标指针所指向的节点的prev指针, 防止此节点被删除后取到错误的prev指针。
[in]head链表头指针

在文件 bclst.h131 行定义.

◆ xwlib_bclst_last_entry

#define xwlib_bclst_last_entry (   head,
  type,
  member 
)     xwlib_bclst_entry((head)->prev, type, member)

获得包含链表最后一个节点的外层结构体的指针。

参数
[in]head链表头指针
[in]type外层结构体类型
[in]member节点在外层结构体中的成员符号名(symbol)
返回
外层结构体的指针

在文件 bclst.h73 行定义.

◆ xwlib_bclst_next_entry

#define xwlib_bclst_next_entry (   p,
  type,
  member 
)     xwlib_bclst_entry((p)->member.next, type, member)

从一个包含链表节点的外层结构体指针得到下一个外层结构体的指针

参数
[in]p包含链表节点的外层结构体指针
[in]type外层结构体类型
[in]member节点在外层结构体中的成员符号名(symbol)
返回
下一个外层结构体的指针

在文件 bclst.h83 行定义.

◆ XWLIB_BCLST_NODE_INIT

#define XWLIB_BCLST_NODE_INIT (   n)    (struct xwlib_bclst_node){&(n), &(n)}

双循环链表节点的初始化结构体

在文件 bclst.h45 行定义.

◆ xwlib_bclst_prev_entry

#define xwlib_bclst_prev_entry (   p,
  type,
  member 
)     xwlib_bclst_entry((p)->member.prev, type, member)

从一个包含链表节点的外层结构体指针得到上一个外层结构体的指针

参数
[in]p包含链表节点的外层结构体指针
[in]type外层结构体类型
[in]member节点在外层结构体中的成员符号名(symbol)
返回
上一个外层结构体的指针

在文件 bclst.h93 行定义.

函数说明

◆ xwlib_bclst_add_behind()

static void xwlib_bclst_add_behind ( struct xwlib_bclst_node newn,
struct xwlib_bclst_node prev 
)
inlinestatic

将一个节点加入到另一个节点的后面

参数
[in]newn被加入的节点指针
[in]prev另一个节点指针

在文件 bclst.h333 行定义.

335{
336 xwlib_bclst_add_between(newn, prev, prev->next);
337}
static void xwlib_bclst_add_between(struct xwlib_bclst_node *newn, struct xwlib_bclst_node *prev, struct xwlib_bclst_node *next)
将一个新节点加入到prev与next之间
Definition bclst.h:304
struct xwlib_bclst_node * next
Definition bclst.h:28
函数调用图:
这是这个函数的调用关系图:

◆ xwlib_bclst_add_between()

static void xwlib_bclst_add_between ( struct xwlib_bclst_node newn,
struct xwlib_bclst_node prev,
struct xwlib_bclst_node next 
)
inlinestatic

将一个新节点加入到prev与next之间

参数
[in]newn新节点指针
[in]prevprev节点指针
[in]nextnext节点指针

在文件 bclst.h304 行定义.

307{
308 next->prev = newn;
309 newn->next = next;
310 newn->prev = prev;
311 prev->next = newn;
312}
struct xwlib_bclst_node * prev
Definition bclst.h:29
这是这个函数的调用关系图:

◆ xwlib_bclst_add_front()

static void xwlib_bclst_add_front ( struct xwlib_bclst_node newn,
struct xwlib_bclst_node next 
)
inlinestatic

将一个节点加入到另一个节点的前面

参数
[in]newn被加入的节点指针
[in]next另一个节点指针

在文件 bclst.h320 行定义.

322{
323 xwlib_bclst_add_between(newn, next->prev, next);
324
325}
函数调用图:
这是这个函数的调用关系图:

◆ xwlib_bclst_add_head()

static void xwlib_bclst_add_head ( struct xwlib_bclst_node head,
struct xwlib_bclst_node newn 
)
inlinestatic

将一个节点加入链表头部(链表头的后面)

参数
[in]head链表头指针
[in]newn被加入的节点指针

在文件 bclst.h345 行定义.

347{
348 xwlib_bclst_add_between(newn, head, head->next);
349}
函数调用图:
这是这个函数的调用关系图:

◆ xwlib_bclst_add_tail()

static void xwlib_bclst_add_tail ( struct xwlib_bclst_node head,
struct xwlib_bclst_node newn 
)
inlinestatic

将一个节点加入链表尾部(链表头的前面)

参数
[in]head链表头指针
[in]newn被加入的节点指针

在文件 bclst.h357 行定义.

359{
360 xwlib_bclst_add_between(newn, head->prev, head);
361}
函数调用图:
这是这个函数的调用关系图:

◆ xwlib_bclst_del()

static void xwlib_bclst_del ( struct xwlib_bclst_node node)
inlinestatic

删除一个节点

参数
[in]node被删除的节点指针

在文件 bclst.h381 行定义.

382{
383 xwlib_bclst_del_between(node->prev, node->next);
384}
static void xwlib_bclst_del_between(struct xwlib_bclst_node *prev, struct xwlib_bclst_node *next)
删除prev节点与next节点之间的节点
Definition bclst.h:369
函数调用图:

◆ xwlib_bclst_del_between()

static void xwlib_bclst_del_between ( struct xwlib_bclst_node prev,
struct xwlib_bclst_node next 
)
inlinestatic

删除prev节点与next节点之间的节点

参数
[in]prevprev节点指针
[in]nextnext节点指针

在文件 bclst.h369 行定义.

371{
372 next->prev = prev;
373 prev->next = next;
374}
这是这个函数的调用关系图:

◆ xwlib_bclst_del_init()

static void xwlib_bclst_del_init ( struct xwlib_bclst_node node)
inlinestatic

删除一个节点,并重新初始化它

参数
[in]node被删除的节点指针

在文件 bclst.h391 行定义.

392{
393 xwlib_bclst_del_between(node->prev, node->next);
395}
static void xwlib_bclst_init_node(struct xwlib_bclst_node *n)
初始化一个链表节点。
Definition bclst.h:240
函数调用图:
这是这个函数的调用关系图:

◆ xwlib_bclst_init_head()

static void xwlib_bclst_init_head ( struct xwlib_bclst_node h)
inlinestatic

初始化一个链表头。

参数
[in]h链表头指针

在文件 bclst.h229 行定义.

230{
231 h->next = h;
232 h->prev = h;
233}
这是这个函数的调用关系图:

◆ xwlib_bclst_init_node()

static void xwlib_bclst_init_node ( struct xwlib_bclst_node n)
inlinestatic

初始化一个链表节点。

参数
[in]n链表节点指针

在文件 bclst.h240 行定义.

241{
242 n->next = n;
243 n->prev = n;
244}
这是这个函数的调用关系图:

◆ xwlib_bclst_insseg_between()

static void xwlib_bclst_insseg_between ( struct xwlib_bclst_node seg,
struct xwlib_bclst_node prev,
struct xwlib_bclst_node next 
)
inlinestatic

将一段链表片段(无链表头)衔接到另一条链表的prev节点与next节点之间

参数
[in]seg待衔接的链表碎片的第一个节点指针
[in]prev另一条链表的prev节点指针
[in]next另一条链表的next节点指针

在文件 bclst.h510 行定义.

513{
514 struct xwlib_bclst_node * first = seg;
515 struct xwlib_bclst_node * last = seg->prev;
516
517 first->prev = prev;
518 prev->next = first;
519 last->next = next;
520 next->prev = last;
521}
双循环链表的节点
Definition bclst.h:27
这是这个函数的调用关系图:

◆ xwlib_bclst_insseg_head()

static void xwlib_bclst_insseg_head ( struct xwlib_bclst_node head,
struct xwlib_bclst_node seg 
)
inlinestatic

将一段链表片段(无链表头)衔接到另一条链表头之后

参数
[in]head另一条链表头指针
[in]seg待衔接的链表碎片的第一个节点指针

在文件 bclst.h529 行定义.

531{
532 xwlib_bclst_insseg_between(seg, head, head->next);
533}
static void xwlib_bclst_insseg_between(struct xwlib_bclst_node *seg, struct xwlib_bclst_node *prev, struct xwlib_bclst_node *next)
将一段链表片段(无链表头)衔接到另一条链表的prev节点与next节点之间
Definition bclst.h:510
函数调用图:

◆ xwlib_bclst_insseg_tail()

static void xwlib_bclst_insseg_tail ( struct xwlib_bclst_node head,
struct xwlib_bclst_node seg 
)
inlinestatic

将一段链表片段(无链表头)衔接到另一条链表头之前

参数
[in]head另一条链表头指针
[in]seg待衔接的链表碎片的第一个节点指针

在文件 bclst.h541 行定义.

543{
544 xwlib_bclst_insseg_between(seg, head->prev, head);
545}
函数调用图:

◆ xwlib_bclst_replace()

static void xwlib_bclst_replace ( struct xwlib_bclst_node newn,
struct xwlib_bclst_node oldn 
)
inlinestatic

用一个新节点代替旧节点

参数
[in]newn新节点指针
[in]oldn旧节点指针

在文件 bclst.h403 行定义.

405{
406 newn->next = oldn->next;
407 newn->next->prev = newn;
408 newn->prev = oldn->prev;
409 newn->prev->next = newn;
410}
这是这个函数的调用关系图:

◆ xwlib_bclst_replace_init()

static void xwlib_bclst_replace_init ( struct xwlib_bclst_node newn,
struct xwlib_bclst_node oldn 
)
inlinestatic

用一个新节点代替旧节点,并重新初始化旧节点

参数
[in]newn新节点指针
[in]oldn旧节点指针

在文件 bclst.h418 行定义.

420{
421 xwlib_bclst_replace(newn, oldn);
423}
static void xwlib_bclst_replace(struct xwlib_bclst_node *newn, struct xwlib_bclst_node *oldn)
用一个新节点代替旧节点
Definition bclst.h:403
函数调用图:

◆ xwlib_bclst_splice_between()

static void xwlib_bclst_splice_between ( struct xwlib_bclst_node list,
struct xwlib_bclst_node prev,
struct xwlib_bclst_node next 
)
inlinestatic

将一条链表衔接到另一条链表的prev节点与next节点之间

参数
[in]list待衔接的链表头指针
[in]prev另一条链表的prev节点指针
[in]next另一条链表的next节点指针

在文件 bclst.h432 行定义.

435{
436 struct xwlib_bclst_node * first = list->next;
437 struct xwlib_bclst_node * last = list->prev;
438
439 first->prev = prev;
440 prev->next = first;
441 last->next = next;
442 next->prev = last;
443}
这是这个函数的调用关系图:

◆ xwlib_bclst_splice_head()

static void xwlib_bclst_splice_head ( struct xwlib_bclst_node head,
struct xwlib_bclst_node list 
)
inlinestatic

将一条链表衔接到另一条链表头之后

参数
[in]head另一条链表头指针
[in]list待衔接的链表头指针

在文件 bclst.h451 行定义.

453{
454 if (!xwlib_bclst_tst_empty(list)) {
455 xwlib_bclst_splice_between(list, head, head->next);
456 }
457}
static void xwlib_bclst_splice_between(struct xwlib_bclst_node *list, struct xwlib_bclst_node *prev, struct xwlib_bclst_node *next)
将一条链表衔接到另一条链表的prev节点与next节点之间
Definition bclst.h:432
static bool xwlib_bclst_tst_empty(const struct xwlib_bclst_node *h)
测试链表是否为空。
Definition bclst.h:253
函数调用图:

◆ xwlib_bclst_splice_head_init()

static void xwlib_bclst_splice_head_init ( struct xwlib_bclst_node head,
struct xwlib_bclst_node list 
)
inlinestatic

将一条链表衔接到另一条链表头之后,并重新初始化剩下的空链表头

参数
[in]head另一条链表头指针
[in]list待衔接的链表头指针

在文件 bclst.h479 行定义.

481{
482 if (!xwlib_bclst_tst_empty(list)) {
483 xwlib_bclst_splice_between(list, head, head->next);
485 }
486}
static void xwlib_bclst_init_head(struct xwlib_bclst_node *h)
初始化一个链表头。
Definition bclst.h:229
函数调用图:

◆ xwlib_bclst_splice_tail()

static void xwlib_bclst_splice_tail ( struct xwlib_bclst_node head,
struct xwlib_bclst_node list 
)
inlinestatic

将一条链表衔接到另一条链表头之前

参数
[in]head另一条链表头指针
[in]list待衔接的链表头指针

在文件 bclst.h465 行定义.

467{
468 if (!xwlib_bclst_tst_empty(list)) {
469 xwlib_bclst_splice_between(list, head->prev, head);
470 }
471}
函数调用图:

◆ xwlib_bclst_splice_tail_init()

static void xwlib_bclst_splice_tail_init ( struct xwlib_bclst_node head,
struct xwlib_bclst_node list 
)
inlinestatic

将一条链表衔接到另一条链表头之前,并重新初始化剩下的空链表头

参数
[in]head另一条链表头指针
[in]list待衔接的链表头指针

在文件 bclst.h494 行定义.

496{
497 if (!xwlib_bclst_tst_empty(list)) {
498 xwlib_bclst_splice_between(list, head->prev, head);
500 }
501}
函数调用图:

◆ xwlib_bclst_tst_empty()

static bool xwlib_bclst_tst_empty ( const struct xwlib_bclst_node h)
inlinestatic

测试链表是否为空。

参数
[in]h链表头指针
返回值
true
false非空

在文件 bclst.h253 行定义.

254{
255 return (h->next == h);
256}
这是这个函数的调用关系图:

◆ xwlib_bclst_tst_empty_carefully()

static bool xwlib_bclst_tst_empty_carefully ( const struct xwlib_bclst_node h)
inlinestatic

测试链表是否为空且是否没有正在被修改

参数
[in]h链表头指针
注解
测试链表是否为空且是否没有正在被另一些CPU修改它的任意成员符号(next or prev)。

在文件 bclst.h291 行定义.

292{
293 struct xwlib_bclst_node * next = h->next;
294 return ((next == (const struct xwlib_bclst_node *)h) && (next == h->prev));
295}

◆ xwlib_bclst_tst_first()

static bool xwlib_bclst_tst_first ( struct xwlib_bclst_node h,
struct xwlib_bclst_node n 
)
inlinestatic

测试一个节点是否为指定链表的第一个节点。

参数
[in]h链表头指针
[in]n被测试的节点
返回值
true是该链表的第一个节点
false不是该链表的第一个节点

在文件 bclst.h266 行定义.

267{
268 return (n == h->next);
269}

◆ xwlib_bclst_tst_last()

static bool xwlib_bclst_tst_last ( struct xwlib_bclst_node h,
struct xwlib_bclst_node n 
)
inlinestatic

测试一个节点是否为指定链表的最后一个节点。

参数
[in]h链表头指针
[in]n被测试的节点
返回值
true是该链表的最后一个节点
false不是该链表的最后一个节点

在文件 bclst.h279 行定义.

280{
281 return (n == h->prev);
282}