bool const fr_type_integer[FR_TYPE_MAX + 1] = FR_TYPE_INTEGER_DEF(ARRAY_BEG, ARRAY_MID, ARRAY_END);
bool const fr_type_numeric[FR_TYPE_MAX + 1] = FR_TYPE_NUMERIC_DEF(ARRAY_BEG, ARRAY_MID, ARRAY_END);
+#ifdef __clang__
+#pragma clang diagnostic ignored "-Wgnu-designator"
+#endif
+bool const fr_type_signed[FR_TYPE_MAX + 1] = { [ FR_TYPE_INT8 ... FR_TYPE_INT64] = true,
+ [FR_TYPE_TIME_DELTA] = true,
+ [FR_TYPE_FLOAT64] = true,
+ [FR_TYPE_FLOAT32] = true
+};
+
bool const fr_type_ip[FR_TYPE_MAX + 1] = FR_TYPE_IP_DEF(ARRAY_BEG, ARRAY_MID, ARRAY_END);
bool const fr_type_fixed_size[FR_TYPE_MAX + 1] = FR_TYPE_FIXED_SIZE_DEF(ARRAY_BEG, ARRAY_MID, ARRAY_END);
*/
extern bool const fr_type_integer_except_bool[FR_TYPE_MAX + 1];
extern bool const fr_type_integer[FR_TYPE_MAX + 1];
+extern bool const fr_type_signed[FR_TYPE_MAX + 1];
extern bool const fr_type_numeric[FR_TYPE_MAX + 1];
extern bool const fr_type_ip[FR_TYPE_MAX + 1];
#define fr_type_is_integer_except_bool(_x) (fr_type_integer_except_bool[_x])
#define fr_type_is_integer(_x) (fr_type_integer[_x])
#define fr_type_is_numeric(_x) (fr_type_numeric[_x])
+#define fr_type_is_signed(_x) (fr_type_signed[_x])
#define fr_type_is_ip(_x) (fr_type_ip[_x])