#define GCC_VERSION (__GNUC__ * 10000 + \
|
|
__GNUC_MINOR__ * 100 + \
|
|
__GNUC_PATCHLEVEL__)
|
|
|
|
|
|
#if GCC_VERSION < 40900
|
|
|
|
#error Your GCC version is too old, please switch to >= 4.9
|
|
|
|
#endif
|
|
|
|
|
|
// Generic wrapper macro for the various dict_write_* functions
|
|
// Can be used with gcc >= 4.9 and --std=c11 flag
|
|
#define dict_write_value(iter, key, value, ...) _Generic((value), \
|
|
uint8_t: dict_write_uint8, \
|
|
uint16_t: dict_write_uint16, \
|
|
uint32_t: dict_write_uint32, \
|
|
unsigned: dict_write_uint32, \
|
|
int8_t: dict_write_int8, \
|
|
int16_t: dict_write_int16, \
|
|
int32_t: dict_write_int32, \
|
|
int: dict_write_int32, \
|
|
char*: dict_write_cstring, \
|
|
uint8_t*: dict_write_data \
|
|
)(iter, key, value, ## __VA_ARGS__)
|