提交 d1055347 authored 作者: zhoush's avatar zhoush

代码格式化: Linux Kernel

上级 8c5b9efa
流水线 #3106 已失败 于阶段
......@@ -6,7 +6,8 @@
typedef enum { TRUE = 1, FALSE = 0 } BOOL;
// ================> SOURCE CODE BELOW <================
AWList* AWList_init(AWList* list) {
AWList *AWList_init(AWList *list)
{
if (list == NULL) {
list = calloc(1, sizeof(AWList));
......@@ -22,25 +23,32 @@ AWList* AWList_init(AWList* list) {
return list;
}
void AWList_destroy(AWList* list) {
void AWList_destroy(AWList *list)
{
if (!list) {
return ;
return;
}
AWList_clear(list);
free(list->head);
if (list->free_me) { free(list); }
if (list->free_me) {
free(list);
}
}
void AWList_clear(AWList* list) {
if (!list) { return; }
void AWList_clear(AWList *list)
{
if (!list) {
return;
}
for (; list->tail != list->head; AWList_delete_node(list, list->tail))
;
}
AWNode* AWNode_init(void* data, void (*delete_func)(void*)) {
AWNode* node = malloc(sizeof(AWNode));
AWNode *AWNode_init(void *data, void (*delete_func)(void *))
{
AWNode *node = malloc(sizeof(AWNode));
node->data = data;
node->delete_func = delete_func;
......@@ -50,29 +58,42 @@ AWNode* AWNode_init(void* data, void (*delete_func)(void*)) {
return node;
}
void AWNode_destroy(AWNode* node) {
if (node->next) { node->next->prev = node->prev; }
void AWNode_destroy(AWNode *node)
{
if (node->next) {
node->next->prev = node->prev;
}
node->prev->next = node->next;
if (node && node->delete_func) { node->delete_func(node->data); }
if (node && node->delete_func) {
node->delete_func(node->data);
}
free(node);
}
void AWList_delete_node(AWList* list, AWNode* node) {
if (!list || !list->head || !node) return;
void AWList_delete_node(AWList *list, AWNode *node)
{
if (!list || !list->head || !node)
return;
if (list->tail == node) { list->tail = node->prev; }
if (list->iter == node) { list->iter = node->prev; }
if (list->tail == node) {
list->tail = node->prev;
}
if (list->iter == node) {
list->iter = node->prev;
}
AWNode_destroy(node);
list->cnt -= 1;
}
void AWList_add_head(AWList* list, void* data, void (*delete_func)(void*)) {
if (!list || !list->head) return;
void AWList_add_head(AWList *list, void *data, void (*delete_func)(void *))
{
if (!list || !list->head)
return;
AWNode* node = AWNode_init(data, delete_func);
AWNode* dummy = list->head;
AWNode *node = AWNode_init(data, delete_func);
AWNode *dummy = list->head;
node->prev = dummy;
node->next = dummy->next;
......@@ -84,8 +105,9 @@ void AWList_add_head(AWList* list, void* data, void (*delete_func)(void*)) {
list->cnt += 1;
}
void AWList_add_tail(AWList* list, void* data, void (*delete_func)(void*)) {
AWNode* node = AWNode_init(data, delete_func);
void AWList_add_tail(AWList *list, void *data, void (*delete_func)(void *))
{
AWNode *node = AWNode_init(data, delete_func);
node->prev = list->tail;
node->next = NULL;
......@@ -96,12 +118,14 @@ void AWList_add_tail(AWList* list, void* data, void (*delete_func)(void*)) {
list->cnt += 1;
}
AWNode* AWList_find_node(AWList* list,
void* data,
int (*cmp_callback)(void*, void*)) {
AWNode* node;
AWList_for_each(node, list) {
if (cmp_callback(node->data, data) == 0) return node;
AWNode *AWList_find_node(AWList *list, void *data,
int (*cmp_callback)(void *, void *))
{
AWNode *node;
AWList_for_each(node, list)
{
if (cmp_callback(node->data, data) == 0)
return node;
}
return NULL;
......
......@@ -17,10 +17,10 @@
* @param delete_func function to free data
*/
typedef struct _node {
struct _node* next;
struct _node* prev;
void* data;
void (*delete_func)(void*);
struct _node *next;
struct _node *prev;
void *data;
void (*delete_func)(void *);
} AWNode;
/**
......@@ -31,9 +31,9 @@ typedef struct _node {
* @param free_me need to free itself or not
*/
typedef struct _linked_list {
AWNode* head; /* dummy node */
AWNode* tail; /* last node */
AWNode* iter; /* iterator */
AWNode *head; /* dummy node */
AWNode *tail; /* last node */
AWNode *iter; /* iterator */
int free_me;
int cnt;
} AWList;
......@@ -54,7 +54,7 @@ typedef struct _linked_list {
*
* @return AWList *
*/
AWList* AWList_init(AWList* list);
AWList *AWList_init(AWList *list);
/**
* @brief delete the whole list
......@@ -62,12 +62,12 @@ AWList* AWList_init(AWList* list);
* @param list pointer of list
*
*/
void AWList_destroy(AWList* list);
void AWList_destroy(AWList *list);
/**
* @brief free node, but retain list
*/
void AWList_clear(AWList* list);
void AWList_clear(AWList *list);
/**
* @brief delete node
......@@ -76,7 +76,7 @@ void AWList_clear(AWList* list);
* @param node list node pointer
*
*/
void AWList_delete_node(AWList* list, AWNode* node);
void AWList_delete_node(AWList *list, AWNode *node);
/**
* @brief insert node to the HEAD of list
......@@ -86,7 +86,7 @@ void AWList_delete_node(AWList* list, AWNode* node);
* @param delete_func function pointer to free data
*
*/
void AWList_add_head(AWList* list, void* data, void (*delete_func)(void*));
void AWList_add_head(AWList *list, void *data, void (*delete_func)(void *));
/**
* @brief append node to tail of the list
......@@ -96,7 +96,7 @@ void AWList_add_head(AWList* list, void* data, void (*delete_func)(void*));
* @param delete_func function pointer to free data
*
*/
void AWList_add_tail(AWList* list, void* data, void (*delete_func)(void*));
void AWList_add_tail(AWList *list, void *data, void (*delete_func)(void *));
/**
* @brief find assigned node via callback function
......@@ -109,9 +109,8 @@ void AWList_add_tail(AWList* list, void* data, void (*delete_func)(void*));
*
* @return the pointer of the node if exists, NULL if not found
*/
AWNode* AWList_find_node(AWList* list,
void* data,
int (*cmp_callback)(void*, void*));
AWNode *AWList_find_node(AWList *list, void *data,
int (*cmp_callback)(void *, void *));
/**
* @brief list iterator
......@@ -122,6 +121,6 @@ AWNode* AWList_find_node(AWList* list,
*
* @return next node address or NULL
*/
AWNode* AWList_iterator(AWList* list);
AWNode *AWList_iterator(AWList *list);
#endif /* AWLIST_H */
......@@ -8,27 +8,39 @@ static inline void mfree(void* arg) {
arg = NULL;
}
int main() {
AWList list = {0};
AWList_init(&list);
struct st {
char *str;
};
int* num[10] = {NULL};
int main()
{
AWList *list = AWList_init(NULL);
AWNode *node = NULL;
int num[10] = { 0 };
for (int i = 0; i < 10; ++i) {
num[i] = calloc(1, sizeof(int));
*num[i] = i;
/* num[i] = calloc(1, sizeof(int)); */
num[i] = i;
AWList_add_tail(&list, num[i], mfree);
AWList_add_tail(list, &num[i], 0);
}
AWNode* node = NULL;
for (node = list.head->next; node != list.tail->next; node = node->next) {
printf("%d ", *(int*)node->data);
while ((node = AWList_iterator(list))) {
if (!node)
break;
if (!node->data) break;
int n = *(int *)node->data;
printf("%d ", n);
}
printf("\n");
AWList_clear(&list);
/* while ((node = AWList_iterator(&list))) { printf("%d ", *(int*)node->data); } */
/* printf("\n"); */
AWList_destroy(&list);
/* AWList_clear(list); */
while ((node = AWList_iterator(list))) {
printf("%d ", *(int *)node->data);
}
printf("\n");
AWList_destroy(list);
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论