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_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);
|
||||
}
|
||||
|
@ -6,6 +6,29 @@
|
||||
#include <list/list_quick.h>
|
||||
#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>
|
||||
#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;
|
||||
|
@ -8,11 +8,18 @@
|
||||
#include <id/id.h>
|
||||
#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);
|
||||
|
Loading…
Reference in New Issue
Block a user