acl  3.5.3.0
acl_ring.h 文件参考
#include "acl_define.h"
#include <stddef.h>
+ acl_ring.h 的引用(Include)关系图:
+ 此图展示该文件直接或间接的被哪些文件引用了:

浏览源代码.

struct  ACL_RING
 
struct  ACL_RING_ITER
 

宏定义

#define ACL_RING_SUCC(c)   ((c)->succ)
 
#define acl_ring_succ   ACL_RING_SUCC
 
#define ACL_RING_PRED(c)   ((c)->pred)
 
#define acl_ring_pred   ACL_RING_PRED
 
#define ACL_RING_TO_APPL(ring_ptr, app_type, ring_member)   ((app_type *) (((char *) (ring_ptr)) - offsetof(app_type,ring_member)))
 
#define acl_ring_to_appl   ACL_RING_TO_APPL
 
#define ACL_RING_FOREACH(iter, head_ptr)
 
#define acl_ring_foreach   ACL_RING_FOREACH
 
#define ACL_RING_FOREACH_REVERSE(iter, head_ptr)
 
#define acl_ring_foreach_reverse   ACL_RING_FOREACH_REVERSE
 
#define ACL_RING_FIRST(head)   (acl_ring_succ(head) != (head) ? acl_ring_succ(head) : 0)
 
#define acl_ring_first   ACL_RING_FIRST
 
#define ACL_RING_FIRST_APPL(head, app_type, ring_member)
 
#define acl_ring_first_appl   ACL_RING_FIRST_APPL
 
#define ACL_RING_LAST(head)   (acl_ring_pred(head) != (head) ? acl_ring_pred(head) : 0)
 
#define acl_ring_last   ACL_RING_LAST
 
#define ACL_RING_LAST_APPL(head, app_type, ring_member)
 
#define acl_ring_last_appl   ACL_RING_LAST_APPL
 
#define ACL_RING_APPEND(ring_in, entry_in)
 
#define ACL_RING_PREPEND(ring_in, entry_in)
 
#define ACL_RING_DETACH(entry_in)
 

类型定义

typedef struct ACL_RING ACL_RING
 
typedef struct ACL_RING_ITER ACL_RING_ITER
 

函数

ACL_API void acl_ring_init (ACL_RING *ring)
 
ACL_API int acl_ring_size (const ACL_RING *ring)
 
ACL_API void acl_ring_prepend (ACL_RING *ring, ACL_RING *entry)
 
ACL_API void acl_ring_append (ACL_RING *ring, ACL_RING *entry)
 
ACL_API void acl_ring_detach (ACL_RING *entry)
 
ACL_API ACL_RINGacl_ring_pop_head (ACL_RING *ring)
 
ACL_API ACL_RINGacl_ring_pop_tail (ACL_RING *ring)
 

宏定义说明

◆ ACL_RING_APPEND

#define ACL_RING_APPEND (   ring_in,
  entry_in 
)
值:
do { \
ACL_RING *ring_ptr = (ring_in), *entry_ptr = (entry_in); \
entry_ptr->succ = ring_ptr->succ; \
entry_ptr->pred = ring_ptr; \
entry_ptr->parent = ring_ptr->parent; \
ring_ptr->succ->pred = entry_ptr; \
ring_ptr->succ = entry_ptr; \
ring_ptr->parent->len++; \
} while (0)

将一个新元素添加进环的尾部

参数
ring{ACL_RING*} 数据环
entry{ACL_RING*} 新的元素

在文件 acl_ring.h208 行定义.

◆ ACL_RING_DETACH

#define ACL_RING_DETACH (   entry_in)
值:
do { \
ACL_RING *succ, *pred, *entry_ptr = (entry_in); \
succ = entry_ptr->succ; \
pred = entry_ptr->pred; \
if (succ != NULL && pred != NULL) { \
pred->succ = succ; \
succ->pred = pred; \
entry_ptr->parent->len--; \
entry_ptr->succ = entry_ptr->pred = NULL; \
} \
} while (0)

将一个环元素从数据环中删除

参数
entry{ACL_RING*} 环元素

在文件 acl_ring.h237 行定义.

◆ ACL_RING_FIRST

#define ACL_RING_FIRST (   head)    (acl_ring_succ(head) != (head) ? acl_ring_succ(head) : 0)

返回数据环中第一个环元素指针

参数
head{ACL_RING*} 环头指针
返回
{ACL_RING*} NULL: 环为空

在文件 acl_ring.h162 行定义.

◆ acl_ring_first

#define acl_ring_first   ACL_RING_FIRST

在文件 acl_ring.h165 行定义.

◆ ACL_RING_FIRST_APPL

#define ACL_RING_FIRST_APPL (   head,
  app_type,
  ring_member 
)
值:
(acl_ring_succ(head) != (head) ? \
ACL_RING_TO_APPL(acl_ring_succ(head), app_type, ring_member) : 0)
#define ACL_RING_TO_APPL(ring_ptr, app_type, ring_member)
Definition: acl_ring.h:96
#define acl_ring_succ
Definition: acl_ring.h:81

返回数据环中头第一个环元素指针同时将其转换应用自定义结构类型的对象地址

参数
head{ACL_RING*} 环头指针
app_type应用自定义结构类型
ring_member{ACL_RING*} 环元素在应用自定义结构中的成员名称
返回
{app_type*} 应用自定义结构类型的对象地址

在文件 acl_ring.h174 行定义.

◆ acl_ring_first_appl

#define acl_ring_first_appl   ACL_RING_FIRST_APPL

在文件 acl_ring.h178 行定义.

◆ ACL_RING_FOREACH

#define ACL_RING_FOREACH (   iter,
  head_ptr 
)
值:
for ((iter).ptr = acl_ring_succ((head_ptr)); (iter).ptr != (head_ptr); \
(iter).ptr = acl_ring_succ((iter).ptr))
#define acl_ring_succ
Definition: acl_ring.h:81

在文件 acl_ring.h140 行定义.

◆ acl_ring_foreach

#define acl_ring_foreach   ACL_RING_FOREACH

在文件 acl_ring.h144 行定义.

◆ ACL_RING_FOREACH_REVERSE

#define ACL_RING_FOREACH_REVERSE (   iter,
  head_ptr 
)
值:
for ((iter).ptr = acl_ring_pred((head_ptr)); (iter).ptr != (head_ptr); \
(iter).ptr = acl_ring_pred((iter).ptr))
#define acl_ring_pred
Definition: acl_ring.h:87

从尾部至头部遍历数据环中的所有环元素

参数
iter{ACL_RING_ITER}
head_ptr{ACL_RING*} 数据环的头指针

在文件 acl_ring.h151 行定义.

◆ acl_ring_foreach_reverse

#define acl_ring_foreach_reverse   ACL_RING_FOREACH_REVERSE

在文件 acl_ring.h155 行定义.

◆ ACL_RING_LAST

#define ACL_RING_LAST (   head)    (acl_ring_pred(head) != (head) ? acl_ring_pred(head) : 0)

返回数据环中最后一个环元素指针

参数
head{ACL_RING*} 环头指针
返回
{ACL_RING*} NULL: 环为空

在文件 acl_ring.h185 行定义.

◆ acl_ring_last

#define acl_ring_last   ACL_RING_LAST

在文件 acl_ring.h188 行定义.

◆ ACL_RING_LAST_APPL

#define ACL_RING_LAST_APPL (   head,
  app_type,
  ring_member 
)
值:
(acl_ring_pred(head) != (head) ? \
ACL_RING_TO_APPL(acl_ring_pred(head), app_type, ring_member) : 0)
#define ACL_RING_TO_APPL(ring_ptr, app_type, ring_member)
Definition: acl_ring.h:96
#define acl_ring_pred
Definition: acl_ring.h:87

返回数据环中最后一个环元素指针同时将其转换应用自定义结构类型的对象地址

参数
head{ACL_RING*} 环头指针
app_type应用自定义结构类型
ring_member{ACL_RING*} 环元素在应用自定义结构中的成员名称
返回
{app_type*} 应用自定义结构类型的对象地址

在文件 acl_ring.h197 行定义.

◆ acl_ring_last_appl

#define acl_ring_last_appl   ACL_RING_LAST_APPL

在文件 acl_ring.h201 行定义.

◆ ACL_RING_PRED

#define ACL_RING_PRED (   c)    ((c)->pred)

返回当前环元素的前一个环元素

在文件 acl_ring.h86 行定义.

◆ acl_ring_pred

#define acl_ring_pred   ACL_RING_PRED

在文件 acl_ring.h87 行定义.

◆ ACL_RING_PREPEND

#define ACL_RING_PREPEND (   ring_in,
  entry_in 
)
值:
do { \
ACL_RING *ring_ptr = (ring_in), *entry_ptr = (entry_in); \
entry_ptr->pred = ring_ptr->pred; \
entry_ptr->succ = ring_ptr; \
entry_ptr->parent = ring_ptr->parent; \
ring_ptr->pred->succ = entry_ptr; \
ring_ptr->pred = entry_ptr; \
ring_ptr->parent->len++; \
} while (0)

将一个新元素添加进环的头部

参数
ring{ACL_RING*} 数据环
entry{ACL_RING*} 新的元素

在文件 acl_ring.h223 行定义.

◆ ACL_RING_SUCC

#define ACL_RING_SUCC (   c)    ((c)->succ)

返回当前环元素的下一个环元素

在文件 acl_ring.h80 行定义.

◆ acl_ring_succ

#define acl_ring_succ   ACL_RING_SUCC

在文件 acl_ring.h81 行定义.

◆ ACL_RING_TO_APPL

#define ACL_RING_TO_APPL (   ring_ptr,
  app_type,
  ring_member 
)    ((app_type *) (((char *) (ring_ptr)) - offsetof(app_type,ring_member)))

将环元素指针转换成应用的自定义类型的指针地址

参数
ring_ptr{ACL_RING*} 环元素指针
app_type应用自定义类型
ring_member{ACL_RING*} 环元素在应用自定义结构中的成员名称
返回
{app_type*} 应用自定义结构类型的对象地址

在文件 acl_ring.h96 行定义.

◆ acl_ring_to_appl

#define acl_ring_to_appl   ACL_RING_TO_APPL

在文件 acl_ring.h99 行定义.

类型定义说明

◆ ACL_RING

typedef struct ACL_RING ACL_RING

在文件 acl_ring.h11 行定义.

◆ ACL_RING_ITER

函数说明

◆ acl_ring_append()

ACL_API void acl_ring_append ( ACL_RING ring,
ACL_RING entry 
)

将一个新元素添加进环的尾部

参数
ring{ACL_RING*} 数据环
entry{ACL_RING*} 新的元素
示例
F:/download/acl/help/include/acl/stdlib/acl_ring.h.

◆ acl_ring_detach()

ACL_API void acl_ring_detach ( ACL_RING entry)

将一个环元素从数据环中删除

参数
entry{ACL_RING*} 环元素
示例
F:/download/acl/help/include/acl/stdlib/acl_ring.h.

◆ acl_ring_init()

ACL_API void acl_ring_init ( ACL_RING ring)

初始化数据环

参数
ring{ACL_RING*} 数据环
示例
F:/download/acl/help/include/acl/stdlib/acl_ring.h.

◆ acl_ring_pop_head()

ACL_API ACL_RING* acl_ring_pop_head ( ACL_RING ring)

从环中弹出头部环元素

参数
ring{ACL_RING*} 数据环
返回
{ACL_RING*} 头部环元素,如果返回空则表示该数据环为空
示例
F:/download/acl/help/include/acl/stdlib/acl_ring.h.

◆ acl_ring_pop_tail()

ACL_API ACL_RING* acl_ring_pop_tail ( ACL_RING ring)

从环中弹出尾部环元素

参数
ring{ACL_RING*} 数据环
返回
{ACL_RING*} 尾部环元素,如果返回空则表示该数据环为空
示例
F:/download/acl/help/include/acl/stdlib/acl_ring.h.

◆ acl_ring_prepend()

ACL_API void acl_ring_prepend ( ACL_RING ring,
ACL_RING entry 
)

将一个新元素添加进环的头部

参数
ring{ACL_RING*} 数据环
entry{ACL_RING*} 新的元素
示例
F:/download/acl/help/include/acl/stdlib/acl_ring.h.

◆ acl_ring_size()

ACL_API int acl_ring_size ( const ACL_RING ring)

获得当前数据环内元素个数

参数
ring{ACL_RING*} 数据环
返回
{int} 数据环内元素个数
示例
F:/download/acl/help/include/acl/stdlib/acl_ring.h.