mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager
synced 2024-10-06 16:21:50 +00:00
glib-aux: improve NM_FLAGS_{SET,UNSET,ASSIGN,ASSIGN_MASK}() macros
- add unused code which triggers a compiler check about compatible enum values.
This commit is contained in:
parent
28c27f3070
commit
d359a9a1e7
|
@ -1023,34 +1023,43 @@ nm_g_variant_equal(GVariant *a, GVariant *b)
|
|||
#define NM_FLAGS_SET(flags, val) \
|
||||
({ \
|
||||
const typeof(flags) _flags = (flags); \
|
||||
const typeof(flags) _val = (val); \
|
||||
typeof(_flags) _val = (val); \
|
||||
\
|
||||
_flags | _val; \
|
||||
(void) (FALSE && (flags) == (val)); \
|
||||
\
|
||||
(_flags | _val); \
|
||||
})
|
||||
|
||||
#define NM_FLAGS_UNSET(flags, val) \
|
||||
({ \
|
||||
const typeof(flags) _flags = (flags); \
|
||||
const typeof(flags) _val = (val); \
|
||||
typeof(_flags) _val = (val); \
|
||||
\
|
||||
_flags & (~_val); \
|
||||
(void) (FALSE && (flags) == (val)); \
|
||||
\
|
||||
(_flags & (~_val)); \
|
||||
})
|
||||
|
||||
#define NM_FLAGS_ASSIGN(flags, val, assign) \
|
||||
({ \
|
||||
const typeof(flags) _flags = (flags); \
|
||||
const typeof(flags) _val = (val); \
|
||||
typeof(_flags) _val = (val); \
|
||||
\
|
||||
(assign) ? _flags | (_val) : _flags & (~_val); \
|
||||
(void) (FALSE && (flags) == (val)); \
|
||||
\
|
||||
(assign) ? (_flags | _val) : (_flags & (~_val)); \
|
||||
})
|
||||
|
||||
#define NM_FLAGS_ASSIGN_MASK(flags, mask, val) \
|
||||
({ \
|
||||
const typeof(flags) _flags = (flags); \
|
||||
const typeof(flags) _mask = (mask); \
|
||||
const typeof(flags) _val = (val); \
|
||||
typeof(_flags) _mask = (mask); \
|
||||
typeof(_flags) _val = (val); \
|
||||
\
|
||||
((_flags & ~_mask) | (_mask & _val)); \
|
||||
(void) (FALSE && (flags) == (val)); \
|
||||
(void) (FALSE && (flags) == (mask)); \
|
||||
\
|
||||
((_flags & (~_mask)) | (_val & _mask)); \
|
||||
})
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
Loading…
Reference in a new issue