Fixed.
This commit is contained in:
parent
940087e820
commit
30323b5d63
@ -173,7 +173,7 @@ List *newCReturn(void);
|
|||||||
/*
|
/*
|
||||||
*回调函数相关宏操作的辅助函数,用于给回调函数获取母函数传入的参数返提供便利
|
*回调函数相关宏操作的辅助函数,用于给回调函数获取母函数传入的参数返提供便利
|
||||||
*/
|
*/
|
||||||
unsigned long long getInfoForListThrough(List *expand_resources, int type);
|
uint64_t getInfoForListThrough(List *expand_resources, int type);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -5,8 +5,9 @@
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
顺序遍历链表的操作函数,不对用户开放。回调函数返回-1退出遍历,返回1继续向后遍历,返回其他值则暂停向下遍历。
|
顺序遍历链表的操作函数。回调函数返回-1退出遍历,返回1继续向后遍历,返回其他值则暂停向下遍历。
|
||||||
回调函数接受一个整数、一个指向节点内容的指针、一个而外的参数链表,且回调函数需要返回一个链表,链表的第一个值作为函数的实际返回值。
|
回调函数接受一个整数、一个指向节点内容的指针、一个而外的参数链表,且回调函数需要返回一个链表,链表的第一个值作为函数的实际返回值。
|
||||||
|
一般配合宏使用
|
||||||
@param p_list 指向目标链表的指针
|
@param p_list 指向目标链表的指针
|
||||||
@param p_func 指向回调函数的指针
|
@param p_func 指向回调函数的指针
|
||||||
@return 返回参数链表
|
@return 返回参数链表
|
||||||
@ -41,26 +42,34 @@ List *listThrough(List *p_list, List *(*p_func)(uint32_t, void *, List *), List
|
|||||||
return m_rtnlst;
|
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;
|
Node *p_node = NULL;
|
||||||
if (type == 0) {
|
if (type == 0) {
|
||||||
p_node = findByIndexForNode(expand_resources, expand_resources->length-1);
|
p_node = findByIndexForNode(expand_resources, expand_resources->length-1);
|
||||||
}else{
|
}else{
|
||||||
p_node = findByIndexForNode(expand_resources, expand_resources->length-2);
|
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 *newReturn(int if_status ,int status, char *argc, ...){
|
||||||
List *p_list = initList(0);
|
List *p_list = initList(0);
|
||||||
if(if_status){
|
if(if_status){
|
||||||
@ -116,6 +125,11 @@ List *newReturn(int if_status ,int status, char *argc, ...){
|
|||||||
return p_list;
|
return p_list;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
回调宏相关函数,用于回调函数不带而外参数的返回
|
||||||
|
|
||||||
|
@return 指向构造的参数列表的指针
|
||||||
|
*/
|
||||||
List *newCReturn(void){
|
List *newCReturn(void){
|
||||||
return newReturn(1, 0, NULL);
|
return newReturn(1, 0, NULL);
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,29 @@
|
|||||||
#include <list/list_quick.h>
|
#include <list/list_quick.h>
|
||||||
#endif
|
#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;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
直接获得节点中储存的字符串
|
直接获得节点中储存的字符串
|
||||||
|
|
||||||
|
@ -4,7 +4,16 @@
|
|||||||
#include <list/list_quick.h>
|
#include <list/list_quick.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
在链表的头部插入节点
|
||||||
|
|
||||||
|
@param p_list 指向目标链表的指针
|
||||||
|
@param p_node 指向目标节点的指针
|
||||||
|
@return 函数执行成功返回0
|
||||||
|
*/
|
||||||
int insertInHead(List *p_list, Node *p_node) {
|
int insertInHead(List *p_list, Node *p_node) {
|
||||||
|
// 如果可能需要使用长链表模块则编译以下代码
|
||||||
#ifdef list_quick_enable
|
#ifdef list_quick_enable
|
||||||
if(p_list->p_lq != NULL && p_list->p_lq->if_sort) return -1;
|
if(p_list->p_lq != NULL && p_list->p_lq->if_sort) return -1;
|
||||||
if(p_list->p_lq != NULL){
|
if(p_list->p_lq != NULL){
|
||||||
@ -34,7 +43,15 @@ int insertInHead(List *p_list, Node *p_node) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
在链表的尾部插入节点
|
||||||
|
|
||||||
|
@param p_list 指向目标链表的指针
|
||||||
|
@param p_node 指向目标节点的指针
|
||||||
|
@return 函数执行成功返回0
|
||||||
|
*/
|
||||||
int insertInTail(List *p_list, Node *p_node) {
|
int insertInTail(List *p_list, Node *p_node) {
|
||||||
|
// 如果可能需要使用长链表模块则编译以下代码
|
||||||
#ifdef list_quick_enable
|
#ifdef list_quick_enable
|
||||||
if(p_list->p_lq != NULL && p_list->p_lq->if_sort) return -1;
|
if(p_list->p_lq != NULL && p_list->p_lq->if_sort) return -1;
|
||||||
#endif
|
#endif
|
||||||
@ -48,7 +65,7 @@ int insertInTail(List *p_list, Node *p_node) {
|
|||||||
p_node->last = p_list->tail;
|
p_node->last = p_list->tail;
|
||||||
p_list->tail = p_node;
|
p_list->tail = p_node;
|
||||||
}
|
}
|
||||||
|
// 如果可能需要使用长链表模块则编译以下代码
|
||||||
#ifdef list_quick_enable
|
#ifdef list_quick_enable
|
||||||
if(p_list->p_lq != NULL){
|
if(p_list->p_lq != NULL){
|
||||||
p_node->f_number = p_list->p_lq->rlst_len;
|
p_node->f_number = p_list->p_lq->rlst_len;
|
||||||
|
@ -8,11 +8,18 @@
|
|||||||
#include <id/id.h>
|
#include <id/id.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
打印链表及链表中节点的相关数据
|
||||||
|
|
||||||
|
@param p_list 指向目标链表的指针
|
||||||
|
@param priority 行缩进次数
|
||||||
|
*/
|
||||||
void printListInfo(List *p_list, int priority) {
|
void printListInfo(List *p_list, int priority) {
|
||||||
int i = 0;
|
int i = 0;
|
||||||
Node *p_node;
|
Node *p_node;
|
||||||
for (i = 0; i < priority; i++) printf(" ");
|
for (i = 0; i < priority; i++) printf(" ");
|
||||||
printf("###LIST(location:%p",p_list);
|
printf("###LIST(location:%p",p_list);
|
||||||
|
// 如果可能使用到ID模块则编译以下代码
|
||||||
#ifdef id_enable
|
#ifdef id_enable
|
||||||
printf(",id:%s",s_idToASCIIString(p_list->s_id));
|
printf(",id:%s",s_idToASCIIString(p_list->s_id));
|
||||||
#endif
|
#endif
|
||||||
@ -32,6 +39,12 @@ void printListInfo(List *p_list, int priority) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
打印链表及其节点写详细信息
|
||||||
|
|
||||||
|
@param p_list 指向目标链表的指针
|
||||||
|
*/
|
||||||
void printList(List *p_list) {
|
void printList(List *p_list) {
|
||||||
int if_nearLast = 0;
|
int if_nearLast = 0;
|
||||||
Node *p_node = p_list->head;
|
Node *p_node = p_list->head;
|
||||||
@ -61,6 +74,13 @@ void printList(List *p_list) {
|
|||||||
printf("]");
|
printf("]");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
打印节点的信息
|
||||||
|
|
||||||
|
@param p_node 指向目标节点的指针
|
||||||
|
@param priority 行缩进次数
|
||||||
|
*/
|
||||||
void printNodeInfo(Node *p_node, int priority) {
|
void printNodeInfo(Node *p_node, int priority) {
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i < priority; i++) printf(" ");
|
for (i = 0; i < priority; i++) printf(" ");
|
||||||
@ -96,6 +116,11 @@ void printNodeInfo(Node *p_node, int priority) {
|
|||||||
printf("}\n");
|
printf("}\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
打印节点的详细信息
|
||||||
|
|
||||||
|
@param p_node 指向目标节点的指针
|
||||||
|
*/
|
||||||
void printNode(Node *p_node) {
|
void printNode(Node *p_node) {
|
||||||
int i;
|
int i;
|
||||||
printf("#NODE(location:%p",p_node);
|
printf("#NODE(location:%p",p_node);
|
||||||
@ -132,6 +157,13 @@ void printNode(Node *p_node) {
|
|||||||
printf("}\n");
|
printf("}\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
遍历链表并自定义打印节点信息
|
||||||
|
|
||||||
|
@param p_list 指向目标链表的指针
|
||||||
|
@param func 指向自定义打印函数的指针,函数接受指向目标节点的指针
|
||||||
|
*/
|
||||||
void printListForCustom(List *p_list,void (*func)(void *value)){
|
void printListForCustom(List *p_list,void (*func)(void *value)){
|
||||||
printf("###LIST (LEN:%llu ",p_list->length);
|
printf("###LIST (LEN:%llu ",p_list->length);
|
||||||
#ifdef id_enable
|
#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));
|
listThrough(p_list, __CALLBACK_CALL(printListForCustom), __SEND_ARG("%p", func));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
__CALLBACK_DEFINE(printListForCustom){
|
__CALLBACK_DEFINE(printListForCustom){
|
||||||
void (*func)(void *) = __ARGS_P(0, void);
|
void (*func)(void *) = __ARGS_P(0, void);
|
||||||
printf("NODE (IDX:%llu ",__NOW_INDEX);
|
printf("NODE (IDX:%llu ",__NOW_INDEX);
|
||||||
|
Loading…
Reference in New Issue
Block a user