Documentation

Documentation

Includes

tuya_cloud_types.h

#include "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}
/**
 * @brief define a sigle list head and initialize to empty
 * 
 */

Marco INIT_SLIST_HEAD(ptr)

#define INIT_SLIST_HEAD(ptr) do { \
   (ptr)->next = NULL; \
} while (0)
/**
 * @brief sigle list head initialization
 * 
 */

Marco NEW_SLIST_NODE(type,node)

#define NEW_SLIST_NODE(type,node) \
{\
   node = (type *)Malloc(sizeof(type));\
}
/**
 * @brief new a sigle list head, will call Malloc
 * 
 */

Marco SLIST_ENTRY(ptr, type, member)

#define SLIST_ENTRY(ptr, type, member) CNTR_OF(ptr,type,member)
/**
 * @brief cast the slist entry to special type 
 * 
 */

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)
/**
 * @brief traverse each object of the sigle list, cannot change the sigle list
 * 
 */

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)
/**
 * @brief traverse each object of the sigle list, you can add or del the object during traverse
 * 
 */

Marco SLIST_FOR_EACH(pos, list)

#define SLIST_FOR_EACH(pos, list) \
   for (pos = (list)->next; pos ; \
        pos = pos->next)
/**
 * @brief traverse each node of the sigle list, cannot change the sigle list
 * 
 */

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)
/**
 * @brief traverse each node of the sigle list, you can add or del the object during traverse
 * 
 */

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); \
   } \
}
/**
 * @brief traverse and free each object of the sigle list
 * 
 */

Functions

Vars

Variable last

last->next = pos->next;
// success find and delete

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;
/**
 * @brief sigle list head
 * 
 */