From a6f65d99b4591451c8c4f0c599a5678cab74b6c5 Mon Sep 17 00:00:00 2001 From: Maria Matejka Date: Sun, 11 Feb 2024 22:57:55 +0100 Subject: [PATCH] Typed lists: enabled defining the list structure independently on the node --- lib/tlists.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/tlists.h b/lib/tlists.h index d7f1cf03..70b8eb3f 100644 --- a/lib/tlists.h +++ b/lib/tlists.h @@ -71,15 +71,14 @@ #define TLIST_NAME(x) MACRO_CONCAT_AFTER(TLIST_PREFIX,_##x) #ifndef TLIST_LIST_STRUCT -#define TLIST_LIST_STRUCT TLIST_NAME(list) +#define TLIST_LIST_STRUCT struct TLIST_NAME(list) #endif -typedef struct TLIST_LIST_STRUCT { - TLIST_TYPE *first; - TLIST_TYPE *last; -} TLIST_LIST_STRUCT; +#ifndef TLIST_DEFINED_BEFORE +TLIST_STRUCT_DEF(TLIST_PREFIX, TLIST_TYPE); +#endif -static inline struct TLIST_LIST_STRUCT * TLIST_NAME(enlisted)(TLIST_TYPE *node) +static inline TLIST_LIST_STRUCT * TLIST_NAME(enlisted)(TLIST_TYPE *node) { return node->TLIST_ITEM.list; } @@ -206,6 +205,7 @@ static inline void TLIST_NAME(rem_node)(TLIST_LIST_STRUCT *list, TLIST_TYPE *nod #endif #define TLIST_LIST(_name) struct _name##_list +#define TLIST_STRUCT_DEF(_name, _type) TLIST_LIST(_name) { _type *first, *last; } #define TLIST_NODE_IN(_name, _type) { _type *next; _type *prev; TLIST_LIST(_name) *list; } #define TLIST_NODE(_name, _type) struct _name##_node TLIST_NODE_IN(_name, _type)