From bca6dfec6706e7bc97dfcf44db65e6afa56f8b25 Mon Sep 17 00:00:00 2001 From: "Alan T. DeKok" Date: Thu, 10 Feb 2022 10:44:49 -0500 Subject: [PATCH] add fr_type_is_signed() --- src/lib/util/types.c | 9 +++++++++ src/lib/util/types.h | 2 ++ 2 files changed, 11 insertions(+) diff --git a/src/lib/util/types.c b/src/lib/util/types.c index f1aa304f8ba..be5d68fb70a 100644 --- a/src/lib/util/types.c +++ b/src/lib/util/types.c @@ -91,6 +91,15 @@ bool const fr_type_integer_except_bool[FR_TYPE_MAX + 1] = FR_TYPE_INTEGER_EXCEPT 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); diff --git a/src/lib/util/types.h b/src/lib/util/types.h index e25f6324b4d..7412df3233f 100644 --- a/src/lib/util/types.h +++ b/src/lib/util/types.h @@ -273,6 +273,7 @@ typedef enum { */ 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]; @@ -327,6 +328,7 @@ extern bool const fr_type_non_leaf[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]) -- 2.47.3