diff --git a/include/list/list_expand.h b/include/list/list_expand.h index 5469a1e..0578247 100644 --- a/include/list/list_expand.h +++ b/include/list/list_expand.h @@ -173,7 +173,7 @@ List *newCReturn(void); /* *回调函数相关宏操作的辅助函数,用于给回调函数获取母函数传入的参数返提供便利 */ -unsigned long long getInfoForListThrough(List *expand_resources, int type); +uint64_t getInfoForListThrough(List *expand_resources, int type); diff --git a/src/list/list_expand_callback.c b/src/list/list_expand_callback.c index 6dca02e..8d3e93e 100644 --- a/src/list/list_expand_callback.c +++ b/src/list/list_expand_callback.c @@ -5,8 +5,9 @@ /** - 顺序遍历链表的操作函数,不对用户开放。回调函数返回-1退出遍历,返回1继续向后遍历,返回其他值则暂停向下遍历。 + 顺序遍历链表的操作函数。回调函数返回-1退出遍历,返回1继续向后遍历,返回其他值则暂停向下遍历。 回调函数接受一个整数、一个指向节点内容的指针、一个而外的参数链表,且回调函数需要返回一个链表,链表的第一个值作为函数的实际返回值。 + 一般配合宏使用 @param p_list 指向目标链表的指针 @param p_func 指向回调函数的指针 @return 返回参数链表 @@ -41,26 +42,34 @@ List *listThrough(List *p_list, List *(*p_func)(uint32_t, void *, List *), List return m_rtnlst; } -unsigned long long getInfoForListThrough(List *expand_resources, int type){ + +/** + 回调宏相关函数,type为1时用于回调函数获取当前参数列表的参数个数。 + type为2时用于获取当前节点在链表中的序号 + + @param expand_resources 指向参数列表的指针 + @param type 模式 + @return 返回需要获取的数据 + */ +uint64_t getInfoForListThrough(List *expand_resources, int type){ Node *p_node = NULL; if (type == 0) { p_node = findByIndexForNode(expand_resources, expand_resources->length-1); }else{ p_node = findByIndexForNode(expand_resources, expand_resources->length-2); } - return *((unsigned long long *)p_node->value); + return *((uint64_t *)p_node->value); } -int getByIntForNode(Node *p_node) { - if (p_node->type == INT) return *(int *)(p_node->value); - else return -1; -} - -unsigned int getByUIntForNode(Node *p_node){ - if (p_node->type == UINT) return *(unsigned int *)(p_node->value); - else return -1; -} +/** + 回调宏相关函数,构造回调函数的返回参数列表 + @param if_status 模式参数 + @param status 模式参数 + @param argc 参数说明 + @param ... 参数 + @return 指向构造的参数列表的指针 + */ List *newReturn(int if_status ,int status, char *argc, ...){ List *p_list = initList(0); if(if_status){ @@ -116,6 +125,11 @@ List *newReturn(int if_status ,int status, char *argc, ...){ return p_list; } +/** + 回调宏相关函数,用于回调函数不带而外参数的返回 + + @return 指向构造的参数列表的指针 + */ List *newCReturn(void){ return newReturn(1, 0, NULL); } diff --git a/src/list/list_expand_get.c b/src/list/list_expand_get.c index e8d5812..892491b 100644 --- a/src/list/list_expand_get.c +++ b/src/list/list_expand_get.c @@ -6,6 +6,29 @@ #include #endif +/** + 直接获取储存整型数据的节点的值 + + @param p_node 指向目标节点的指针 + @return 成功则返回对应整型值,失败返回0 + */ +int getByIntForNode(Node *p_node) { + if (p_node->type == INT) return *(int *)(p_node->value); + else return 0; +} + + +/** + 直接获取储存无符号整型数据的节点的值 + + @param p_node 指向目标节点的指针 + @return 成功则返回对应无符号整型值,失败返回0 + */ +unsigned int getByUIntForNode(Node *p_node){ + if (p_node->type == UINT) return *(unsigned int *)(p_node->value); + else return 0; +} + /** 直接获得节点中储存的字符串 diff --git a/src/list/list_insert.c b/src/list/list_insert.c index 038e763..521d8c8 100644 --- a/src/list/list_insert.c +++ b/src/list/list_insert.c @@ -4,7 +4,16 @@ #include #endif + +/** + 在链表的头部插入节点 + + @param p_list 指向目标链表的指针 + @param p_node 指向目标节点的指针 + @return 函数执行成功返回0 + */ int insertInHead(List *p_list, Node *p_node) { +// 如果可能需要使用长链表模块则编译以下代码 #ifdef list_quick_enable if(p_list->p_lq != NULL && p_list->p_lq->if_sort) return -1; if(p_list->p_lq != NULL){ @@ -34,7 +43,15 @@ int insertInHead(List *p_list, Node *p_node) { return 0; } +/** + 在链表的尾部插入节点 + + @param p_list 指向目标链表的指针 + @param p_node 指向目标节点的指针 + @return 函数执行成功返回0 + */ int insertInTail(List *p_list, Node *p_node) { +// 如果可能需要使用长链表模块则编译以下代码 #ifdef list_quick_enable if(p_list->p_lq != NULL && p_list->p_lq->if_sort) return -1; #endif @@ -48,7 +65,7 @@ int insertInTail(List *p_list, Node *p_node) { p_node->last = p_list->tail; p_list->tail = p_node; } - +// 如果可能需要使用长链表模块则编译以下代码 #ifdef list_quick_enable if(p_list->p_lq != NULL){ p_node->f_number = p_list->p_lq->rlst_len; diff --git a/src/list/list_print.c b/src/list/list_print.c index dce1f49..82d4c50 100644 --- a/src/list/list_print.c +++ b/src/list/list_print.c @@ -8,11 +8,18 @@ #include #endif +/** + 打印链表及链表中节点的相关数据 + + @param p_list 指向目标链表的指针 + @param priority 行缩进次数 + */ void printListInfo(List *p_list, int priority) { int i = 0; Node *p_node; for (i = 0; i < priority; i++) printf(" "); printf("###LIST(location:%p",p_list); +// 如果可能使用到ID模块则编译以下代码 #ifdef id_enable printf(",id:%s",s_idToASCIIString(p_list->s_id)); #endif @@ -32,6 +39,12 @@ void printListInfo(List *p_list, int priority) { } + +/** + 打印链表及其节点写详细信息 + + @param p_list 指向目标链表的指针 + */ void printList(List *p_list) { int if_nearLast = 0; Node *p_node = p_list->head; @@ -61,6 +74,13 @@ void printList(List *p_list) { printf("]"); } + +/** + 打印节点的信息 + + @param p_node 指向目标节点的指针 + @param priority 行缩进次数 + */ void printNodeInfo(Node *p_node, int priority) { int i; for (i = 0; i < priority; i++) printf(" "); @@ -96,6 +116,11 @@ void printNodeInfo(Node *p_node, int priority) { printf("}\n"); } +/** + 打印节点的详细信息 + + @param p_node 指向目标节点的指针 + */ void printNode(Node *p_node) { int i; printf("#NODE(location:%p",p_node); @@ -132,6 +157,13 @@ void printNode(Node *p_node) { printf("}\n"); } + +/** + 遍历链表并自定义打印节点信息 + + @param p_list 指向目标链表的指针 + @param func 指向自定义打印函数的指针,函数接受指向目标节点的指针 + */ void printListForCustom(List *p_list,void (*func)(void *value)){ printf("###LIST (LEN:%llu ",p_list->length); #ifdef id_enable @@ -141,6 +173,7 @@ void printListForCustom(List *p_list,void (*func)(void *value)){ listThrough(p_list, __CALLBACK_CALL(printListForCustom), __SEND_ARG("%p", func)); } + __CALLBACK_DEFINE(printListForCustom){ void (*func)(void *) = __ARGS_P(0, void); printf("NODE (IDX:%llu ",__NOW_INDEX);