ZE-Standard-Libraries/list/list_expand.h

60 lines
2.1 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"
#define RETURN(argc, args...) newReturn(1, -1, argc , args)
#define C_RETURN newCReturn()
#define SEND_ARG(argc, args...) newReturn(0, -1, argc , args)
#define CALLBACK_STATE(name) List *do_##name(unsigned int, void *, List *)
#define CALLBACK_DEFINE(name) List *do_##name(unsigned int type, void *value, List *args)
#define VALUE(c_type) (c_type)value
#define ARGS(x, type)\
if(#type == "int") lidxi(args, x);\
else if if(#type == "double") lidxd(args, x);\
else if(#type == "string") lidxs(args, x);\
else lidxi(args, x);
#define CALLBACK_CALL(name) do_##name
Node *nodeWithInt(int, _Bool if_sid);
Node *nodeWithUInt(unsigned int, _Bool if_sid);
Node *nodeWithULLInt(unsigned long long, _Bool if_sid);
Node *nodeWithDouble(double, _Bool if_sid);
Node *nodeWithString(const char *, _Bool if_sid);
Node *nodeWithPointer(const void *, _Bool if_sid);
2018-08-14 15:59:55 +00:00
s_Node *s_nodeWithInt(int);
s_Node *s_nodeWithUInt(unsigned int);
s_Node *s_nodeWithDouble(double);
s_Node *s_nodeWithString(const char *);
s_Node *s_nodeWithPointer(const void *);
2018-07-23 04:59:16 +00:00
2018-08-03 03:38:19 +00:00
Node *nodeWithComplex(void);
int addValueForComplex(Node *, int type, void *value);
int addIntForComplex(Node *, int);
int addDoubleForComplex(Node *, double);
int addStringForComplex(Node *, char *);
2018-08-07 04:10:55 +00:00
int addPointerForComplex(Node *, void *);
2018-08-14 15:59:55 +00:00
int updateValueWithIntForNode(Node *,int);
int updateValueWithDoubleForNode(Node *,double);
int updateValueWithStringForNode(Node *,char *);
int updateValueWithPointerForNode(Node *,void *);
2018-07-23 04:59:16 +00:00
2018-08-14 15:59:55 +00:00
List *mply_findByIntForNode(List*, int);
List *mply_findByDoubleForNode(List*, double);
List *mply_findByStringForNode(List*, char *);
List *mply_findByPointerForNode(List*, void *);
2018-07-23 04:59:16 +00:00
2018-08-03 03:38:19 +00:00
void printListInfo(List *p_list,int priority);
void printNodeInfo(Node *p_node,int priority);
void printList(List *);
void printNode(Node *p_node);
2018-07-23 04:59:16 +00:00
2018-08-07 04:10:55 +00:00
List *listThrough(List *p_list, List *(*p_func)(unsigned int type, void *value, List *), List *expand_resources);
2018-08-17 08:58:15 +00:00
List *newReturn(int if_status ,int status, char *argc, ...);
List *newCReturn(void);
2018-07-23 05:47:31 +00:00
unsigned long long calListMemory(List *);
2018-07-23 04:59:16 +00:00
#endif