📄 wd_list.h
字号:
#ifndef _WD_HEADER_WD_LIST_
#define _WD_HEADER_WD_LIST_
// 这个模块提供一个使用方便的双向链表,可以做需要
// 保存数据时候的各种用途。
#include "wdf.h"
#include "wd_syn.h"
struct wd_list_node_;
// 链表的头
typedef struct wd_list_ {
wd_spin lock; // 链表锁
struct wd_list_node_ *head; // 链表实际数据
struct wd_list_node_ *tail; // 尾巴
} wd_list;
typedef struct wd_list_node_ {
wd_void *data; // 数据
struct wd_list_node_ *prev; // 前环
struct wd_list_node_ *next; // 后环
wd_list *list; // 头部
} wd_list_node;
// 一些快捷的通道
_inline wd_list_node *wd_list_head(wd_list *list)
{ return list!=NULL?list->head:NULL; };
_inline wd_list_node *wd_list_tail(wd_list *list)
{ return list!=NULL?list->tail:NULL; };
_inline wd_list_node *wd_list_node_next(wd_list_node *node)
{ return node!=NULL?node->next:NULL; };
_inline wd_list_node *wd_list_node_prev(wd_list_node *node)
{ return node!=NULL?node->prev:NULL; };
_inline wd_void *wd_list_node_data(wd_list_node *node)
{ return node!=NULL?node->data:NULL; };
_inline wd_list *wd_list_node_list(wd_list_node *node)
{ return node!=NULL?node->list:NULL; };
wd_list* wd_list_create();
void wd_list_destroy(wd_list* list);
wd_list_node *wd_list_append(wd_list *list,wd_void *data);
wd_bool wd_list_delete_node(wd_list_node *node);
wd_bool wd_list_erase_data(wd_list *list,wd_void *data);
_inline wd_void wd_list_hold(wd_list *list)
{ wd_spin_hold(&list->lock); };
_inline wd_void wd_list_loose(wd_list *list)
{ wd_spin_loose(&list->lock); };
#endif // _WD_HEADER_WD_LIST_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -