On Mon, 10 Feb 2025 09:48:50 +0800
Bingbin Chen <chen.bing...@zte.com.cn> wrote:

> +
> +#define ZXDH_INIT_D_NODE(ptr, pdata) \
> +     do {\
> +             ZXDH_D_NODE *temp_ptr = ptr;\
> +             (temp_ptr)->data = pdata;\
> +             (temp_ptr)->prev = NULL;\
> +             (temp_ptr)->next = NULL;\
> +     } while (0)
> +
> +#define ZXDH_INIT_RBT_TN(p_tn, p_newkey) \
> +     do {\
> +             ZXDH_RB_TN *p_temp_tn = p_tn;\
> +             (p_temp_tn)->p_key    = p_newkey; \
> +             (p_temp_tn)->color_lsv = 0; \
> +             (p_temp_tn)->p_left   = NULL; \
> +             (p_temp_tn)->p_right  = NULL; \
> +             (p_temp_tn)->p_parent = NULL; \
> +             ZXDH_INIT_D_NODE(&((p_temp_tn)->tn_ln), (p_temp_tn));\
> +     } while (0)
> +
> +#define ZXDH_GET_TN_LSV(p_tn)   \
> +             ((p_tn)->color_lsv >> 2)
> +
> +#define ZXDH_SET_TN_LSV(p_tn, list_val) \
> +     do {\
> +             ZXDH_RB_TN *p_temp_tn = p_tn;\
> +             (p_temp_tn)->color_lsv &= 0x3;\
> +             (p_temp_tn)->color_lsv |= ((list_val) << 2); \
> +     } while (0)
> +
> +#define ZXDH_SET_TN_COLOR(p_tn, color) \
> +     do {\
> +             ZXDH_RB_TN *p_temp_tn = p_tn;\
> +             (p_temp_tn)->color_lsv  &= 0xfffffffc;\
> +             (p_temp_tn)->color_lsv  |= ((color) & 0x3);\
> +     } while (0)
> +

Prefer using inline functions instead of macros.
That way you get type safety and everything is more readable.

Reply via email to