Remove check_instance from i-list

This commit is contained in:
Patrick Pelissier committed 2017-02-27 21:17:32 +01:00
1 parent bf9714e00a
commit 2b27d36692
1 file changed
+3 -17
+3 -17
View File
@@ -47,8 +47,8 @@
LIST_DEF(name, type [, oplist_of_the_type]) */ LIST_DEF(name, type [, oplist_of_the_type]) */
#define ILIST_DEF(name, ...) \ #define ILIST_DEF(name, ...) \
M_IF_NARGS_EQ1(__VA_ARGS__) \ M_IF_NARGS_EQ1(__VA_ARGS__) \
(ILISTI_DEF2(name, __VA_ARGS__, M_DEFAULT_OPLIST, ILISTI_CHECK_INSTANCE ), \ (ILISTI_DEF2(name, __VA_ARGS__, M_DEFAULT_OPLIST ), \
ILISTI_DEF2(name, __VA_ARGS__, ILISTI_CHECK_INSTANCE )) ILISTI_DEF2(name, __VA_ARGS__ ))
/* Define the oplist of an ilist of type */ /* Define the oplist of an ilist of type */
#define ILIST_OPLIST(name) \ #define ILIST_OPLIST(name) \
@@ -72,14 +72,6 @@
//TODO: Add oplist as optional argument of ILIST_OPLIST //TODO: Add oplist as optional argument of ILIST_OPLIST
/********************************** INTERNAL ************************************/ /********************************** INTERNAL ************************************/
/* Check if there is only one instance on the list in debug mode.
* It doesn't work with C++ (as global vars with the same name are not merged).
* (Not sure if it is really mandatory, nor a good idea) */
#if !defined(__cplusplus) && !defined (NDEBUG)
# define ILISTI_CHECK_INSTANCE 1
#else
# define ILISTI_CHECK_INSTANCE 0
#endif
/* /*
* From a pointer to a 'field_type' 'field' of a 'type'structure, * From a pointer to a 'field_type' 'field' of a 'type'structure,
@@ -88,7 +80,7 @@
#define ILISTI_TYPE_FROM_FIELD(type, ptr, field_type, field) \ #define ILISTI_TYPE_FROM_FIELD(type, ptr, field_type, field) \
((type *)(void*)( (char *)M_ASSIGN_CAST(field_type*, (ptr)) - offsetof(type, field) )) ((type *)(void*)( (char *)M_ASSIGN_CAST(field_type*, (ptr)) - offsetof(type, field) ))
#define ILISTI_DEF2(name, type, oplist, check_instance) \ #define ILISTI_DEF2(name, type, oplist) \
typedef struct M_C3(ilist_head_, name, _s) M_C3(ilist_, name, _t)[1]; \ typedef struct M_C3(ilist_head_, name, _s) M_C3(ilist_, name, _t)[1]; \
\ \
typedef type M_C3(ilist_type_,name, _t); \ typedef type M_C3(ilist_type_,name, _t); \
@@ -113,13 +105,9 @@
return u.cptr; \ return u.cptr; \
} \ } \
\ \
M_IF(check_instance)(bool M_C3(ilist_instance_, name, _g);, ) \
\
static inline void M_C3(ilist_, name, _init)(M_C3(ilist_, name, _t) list) \ static inline void M_C3(ilist_, name, _init)(M_C3(ilist_, name, _t) list) \
{ \ { \
assert (list != NULL); \ assert (list != NULL); \
M_IF(check_instance)(assert (M_C3(ilist_instance_, name, _g) == false),); \
M_IF(check_instance)(M_C3(ilist_instance_, name, _g) = true,); \
list->next = list; \ list->next = list; \
list->prev = list; \ list->prev = list; \
} \ } \
@@ -133,8 +121,6 @@
\ \
static inline void M_C3(ilist_, name, _clear)(M_C3(ilist_, name, _t) list) \ static inline void M_C3(ilist_, name, _clear)(M_C3(ilist_, name, _t) list) \
{ \ { \
M_IF(check_instance)(assert (M_C3(ilist_instance_, name, _g) == true),); \
M_IF(check_instance)(M_C3(ilist_instance_, name, _g) = false,); \
M_C3(ilist_, name, _clean)(list); \ M_C3(ilist_, name, _clean)(list); \
} \ } \
\ \