utils: add NM_FLAGS_SET(), NM_FLAGS_UNSET() and NM_FLAGS_ASSIGN() macros

(cherry picked from commit 57958b93b6)
This commit is contained in:
Thomas Haller 2015-05-25 11:23:08 +02:00
parent 1d3c143948
commit baf5f63374

View file

@ -189,6 +189,29 @@ nm_clear_g_source (guint *id)
#define NM_FLAGS_ANY(flags, check) ( ( ((flags) & (check)) != 0 ) ? TRUE : FALSE )
#define NM_FLAGS_ALL(flags, check) ( ( ((flags) & (check)) == (check) ) ? TRUE : FALSE )
#define NM_FLAGS_SET(flags, val) ({ \
const typeof(flags) _flags = (flags); \
const typeof(flags) _val = (val); \
\
_flags | _val; \
})
#define NM_FLAGS_UNSET(flags, val) ({ \
const typeof(flags) _flags = (flags); \
const typeof(flags) _val = (val); \
\
_flags & (~_val); \
})
#define NM_FLAGS_ASSIGN(flags, val, assign) ({ \
const typeof(flags) _flags = (flags); \
const typeof(flags) _val = (val); \
\
(assign) \
? _flags | (_val) \
: _flags & (~_val); \
})
/*****************************************************************************/
#endif /* __NM_MACROS_INTERNAL_H__ */