Documentation
Includes
tuya_cloud_types.h
#include "tuya_cloud_types.h"
Macros
Marco _UNI_SLIST_H
#define _UNI_SLIST_H
Marco SLIST_HEAD(name)
#define SLIST_HEAD(name) \
SLIST_HEAD name = {NULL}
Marco INIT_SLIST_HEAD(ptr)
#define INIT_SLIST_HEAD(ptr) do { \
(ptr)->next = NULL; \
} while (0)
Marco NEW_SLIST_NODE(type,node)
#define NEW_SLIST_NODE(type,node) \
{\
node = (type *)Malloc(sizeof(type));\
}
Marco SLIST_ENTRY(ptr, type, member)
#define SLIST_ENTRY(ptr, type, member) CNTR_OF(ptr,type,member)
Marco SLIST_FOR_EACH_ENTRY(tpos, type, pos, list, member)
#define SLIST_FOR_EACH_ENTRY(tpos, type, pos, list, member) \
for (pos = (list)->next; \
pos && (tpos = SLIST_ENTRY(pos, type, member), 1); \
pos = pos->next)
Marco SLIST_FOR_EACH_ENTRY_SAFE(tpos, type, pos, n, list, member)
#define SLIST_FOR_EACH_ENTRY_SAFE(tpos, type, pos, n, list, member) \
for (pos = (list)->next; \
pos && (n = pos->next, 1) && \
(tpos = SLIST_ENTRY(pos, type, member), 1); \
pos = n)
Marco SLIST_FOR_EACH(pos, list)
#define SLIST_FOR_EACH(pos, list) \
for (pos = (list)->next; pos ; \
pos = pos->next)
Marco SLIST_FOR_EACH_SAFE(pos, n, list)
#define SLIST_FOR_EACH_SAFE(pos, n, list) \
for (pos = (list)->next; pos && ({ n = pos->next; 1; }); \
pos = n)
Marco FREE_SLIST_SAFE(tpos, type, pos, n, list, member)
#define FREE_SLIST_SAFE(tpos, type, pos, n, list, member) \
{\
type *posnode; \
SLIST_FOR_EACH_ENTRY_SAFE(tpos, type, pos, n, list, member) { \
list->next = n; \
posnode = tpos; \
Free(posnode); \
} \
}
Functions
Vars
Variable last
last->next = pos->next;
Variable node
node->next = NULL;
Variable break
break;
Variable last
last->next = n;
Consts
Types
Typedefs
Typedef SLIST_HEAD;
typedef struct slist_head {
struct slist_head *next;
}SLIST_HEAD;