ZE-Standard-Libraries/list/list_expand.h

350 lines
11 KiB
C
Raw Normal View History

2018-07-23 04:59:16 +00:00
#ifndef LIST_EXPAND_H
2018-08-03 10:32:20 +00:00
#define LIST_EXPAND_H
2018-08-17 08:58:15 +00:00
#include "list.h"
2018-08-22 14:50:08 +00:00
/************************************************
*便
************************************************/
/****
*
*/
/*
*使
*: argc指示传递参数的类型格式;args为需要返回的参数.*/
2018-08-21 08:26:31 +00:00
#define __SEND_ARG(argc, args...) newReturn(0, -1, argc , args)
2018-08-22 14:50:08 +00:00
/*
*使
*: name为回调函数名.*/
2018-08-23 07:24:59 +00:00
#define __CALLBACK_STATE(name) static List *_do##name(unsigned int, void *, List *)
2018-08-22 14:50:08 +00:00
/*
*使
*: name为回调函数名.*/
2018-08-23 07:24:59 +00:00
#define __CALLBACK_DEFINE(name) static List *_do##name(unsigned int type, void *value, List *expand_resources)
2018-08-22 14:50:08 +00:00
/*
*使
*: name为回调函数名.*/
#define __CALLBACK_CALL(name) _do##name
/*
*使
*: x为该值的顺序号, type为获取的指针值的类型.*/
#define __RTN_ARGS_P(list,x,type) (type *) lidxp(list, x);
/*
*使
*: x为该值的顺序号, type为获取的值的类型.*/
#define __RTN_ARGS(list,x,type) *((type *) lidxp(list, x));
/****
*
*/
/*
*使
*: c_type为获取值的类型.*/
2018-08-21 08:26:31 +00:00
#define __VALUE(c_type) (c_type)value
2018-08-22 14:50:08 +00:00
/*
*使
*: x为该值的顺序号, type为获取值的类型.*/
2018-08-21 08:26:31 +00:00
#define __ARGS(x, type) *((type *) lidxp(expand_resources, x));
2018-08-22 14:50:08 +00:00
/*
*使
*: x为该值的顺序号, type为获取的指针值的类型.*/
2018-08-21 08:26:31 +00:00
#define __ARGS_P(x, type) (type *) lidxp(expand_resources, x);
2018-08-22 14:50:08 +00:00
/*
*使
*/
2018-08-21 08:26:31 +00:00
#define __LIST_LEN getInfoForListThrough(expand_resources,0)
2018-08-22 14:50:08 +00:00
/*
*使
*/
#define __NOW_INDEX getInfoForListThrough(expand_resources,1)
/*
*使
*: argc指示返回参数的个数;args为需要返回的参数.*/
#define __RETURN(argc, args...) newReturn(1, -1, argc , args)
/*
*使
*/
#define __CRETURN__ newCReturn()
/************************************************
*: ,
* 使.
************************************************/
/*
*, 使
*if_sid指示函数是否为节点获取ID
*: ,NULL.*/
extern Node *nodeWithInt(int, _Bool if_sid);
/*
*, 使
*if_sid指示函数是否为节点获取ID
*: ,NULL.*/
extern Node *nodeWithUInt(unsigned int, _Bool if_sid);
/*
*, 使
*if_sid指示函数是否为节点获取ID
*: ,NULL.*/
extern Node *nodeWithULLInt(unsigned long long, _Bool if_sid);
/*
*, 使
*if_sid指示函数是否为节点获取ID
*: ,NULL.*/
extern Node *nodeWithDouble(double, _Bool if_sid);
/*
*, 使
*if_sid指示函数是否为节点获取ID
*: ,NULL.*/
extern Node *nodeWithString(const char *, _Bool if_sid);
/*
*, 使
*if_sid指示函数是否为节点获取ID
*: ,NULL.*/
extern Node *nodeWithPointer(const void *, _Bool if_sid);
/************************************************
*: ,
* 使.
************************************************/
/*
*, 使
*: ,NULL.*/
extern s_Node *s_nodeWithInt(int);
/*
*, 使
*: ,NULL.*/
extern s_Node *s_nodeWithUInt(unsigned int);
/*
*, 使
*: ,NULL.*/
extern s_Node *s_nodeWithDouble(double);
/*
*, 使
*: ,NULL.*/
extern s_Node *s_nodeWithString(const char *);
/*
*, 使
*: ,NULL.*/
extern s_Node *s_nodeWithPointer(const void *);
2018-07-23 04:59:16 +00:00
2018-08-22 14:50:08 +00:00
/************************************************
*: ,
* 使
*: .
************************************************/
/*
*
*: ,NULL.*/
extern Node *nodeWithComplex(void);
/*
*
*: type指明所输入值的类型,value为指向所输入值的内存空间的指针
*: 0,-1.*/
extern int addValueForComplex(Node *, int type, void *value);
/*
*
*: 0,-1.*/
extern int addIntForComplex(Node *, int);
/*
*
*: 0,-1.*/
extern int addDoubleForComplex(Node *, double);
/*
*
*: 0,-1.*/
extern int addStringForComplex(Node *, char *);
/*
*
*: 0,-1.*/
extern int addPointerForComplex(Node *, void *);
/************************************************
*: ,
************************************************/
/*
*
*: 0,-1.*/
extern int updateValueWithIntForNode(Node *,int);
/*
*
*: 0,-1.*/
extern int updateValueWithULLIntForNode(Node *, unsigned long long);
/*
*
*: 0,-1.*/
extern int updateValueWithDoubleForNode(Node *,double);
/*
*
*: 0,-1.*/
extern int updateValueWithStringForNode(Node *,char *);
/*
*
*: 0,-1.*/
extern int updateValueWithPointerForNode(Node *,void *);
/************************************************
*: ,
************************************************/
/*
*,
*: ,NULL.*/
List *mply_findByIntForNode(List*, int);
/*
*,
*: ,NULL.*/
List *mply_findByDoubleForNode(List*, double);
/*
*,
*: ,NULL.*/
List *mply_findByStringForNode(List*, char *);
/*
*,
*: ,NULL.*/
2018-08-14 15:59:55 +00:00
List *mply_findByPointerForNode(List*, void *);
2018-08-22 14:50:08 +00:00
/************************************************
*:
************************************************/
/*
*
*: priority为每行输出信息前的空格数除以4*/
void printListInfo(List *p_list,int priority);
/*
*
*: priority为每行输出信息前的空格数乘以4*/
void printNodeInfo(Node *p_node,int priority);
/*
*
*/
2018-08-21 08:26:31 +00:00
void printList(List *);
2018-08-22 14:50:08 +00:00
/*
*
*: func为一个函数指针, */
void printListForCustom(List *p_list,void (*func)(void *value));
/*
*printListForCustom函数的回调函数
*/
__CALLBACK_STATE(printListForCustom);
/*
*
*/
void printNode(Node *p_node);
/************************************************
*:
************************************************/
/*
*
*: p_func为一个函数指针, (type)/(value)/(args),
,,,,
expand_resources为一个链表,
*: ,,NULL.*/
extern List *listThrough(List *p_list, List *(*p_func)(unsigned int type, void *value, List *args), List *expand_resources);
/*
*,便
*/
extern List *newReturn(int if_status ,int status, char *argc, ...);
/*
*,便
*/
2018-08-17 08:58:15 +00:00
List *newCReturn(void);
2018-08-22 14:50:08 +00:00
/*
*,便
*/
2018-08-21 08:26:31 +00:00
unsigned long long getInfoForListThrough(List *expand_resources, int type);
2018-08-22 14:50:08 +00:00
/************************************************
*:
************************************************/
/*
*
*/
2018-07-23 05:47:31 +00:00
unsigned long long calListMemory(List *);
2018-08-22 14:50:08 +00:00
2018-07-23 04:59:16 +00:00
#endif