Port to M_TYPE_FROM_FIELD

This commit is contained in:
Patrick Pelissier committed 2017-03-15 22:06:19 +01:00
1 parent 5022c1edb7
commit 4fa296c379
1 file changed
+3 -10
+3 -10
View File
@@ -86,13 +86,6 @@ typedef struct ilist_head_s {
POP(M_C3(ilist_,name,_pop_back)) \
)
/*
* From a pointer to a 'field_type' 'field' of a 'type'structure,
* return pointer to the structure.
*/
#define ILISTI_TYPE_FROM_FIELD(type, ptr, field_type, field) \
((type *)(void*)( (char *)M_ASSIGN_CAST(field_type*, (ptr)) - offsetof(type, field) ))
#define ILISTI_DEF2(name, type, oplist) \
typedef struct M_C3(ilist_, name, _s) { \
struct ilist_head_s name; \
@@ -209,7 +202,7 @@ typedef struct ilist_head_s {
M_C3(ilist_, name, _back)(const M_C3(ilist_, name,_t) list) \
{ \
assert(list != NULL && !M_C3(ilist_, name, _empty_p)(list)); \
return ILISTI_TYPE_FROM_FIELD(type, list->name.prev, \
return M_TYPE_FROM_FIELD(type, list->name.prev, \
struct ilist_head_s, name); \
} \
\
@@ -217,7 +210,7 @@ typedef struct ilist_head_s {
M_C3(ilist_, name, _front)(const M_C3(ilist_, name,_t) list) \
{ \
assert(list != NULL && !M_C3(ilist_, name, _empty_p)(list)); \
return ILISTI_TYPE_FROM_FIELD(type, list->name.next, \
return M_TYPE_FROM_FIELD(type, list->name.next, \
struct ilist_head_s, name); \
} \
\
@@ -324,7 +317,7 @@ typedef struct ilist_head_s {
assert (it->current->next == it->next); \
assert (it->current->prev == it->previous); \
assert (!M_C3(ilist_, name, _end_p)(it)); \
return ILISTI_TYPE_FROM_FIELD(type, it->current, \
return M_TYPE_FROM_FIELD(type, it->current, \
struct ilist_head_s, name); \
} \
\