]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
add fr_type_is_signed()
authorAlan T. DeKok <aland@freeradius.org>
Thu, 10 Feb 2022 15:44:49 +0000 (10:44 -0500)
committerAlan T. DeKok <aland@freeradius.org>
Thu, 10 Feb 2022 15:44:49 +0000 (10:44 -0500)
src/lib/util/types.c
src/lib/util/types.h

index f1aa304f8ba607d7edef815a8d27720a2344ae3b..be5d68fb70aa2f7a7ee5f6acc71da6426226694e 100644 (file)
@@ -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);
index e25f6324b4df71d742cf08561e014962b5fe46bc..7412df3233f41cd6637efffd9735d6c6d5cd1dbc 100644 (file)
@@ -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])