[glib/mjog/2104-short-gtypes: 7/7] gio: Map short GValues to int16 GVariants and vice versa in GSettings
- From: Michael Gratton <mjog src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib/mjog/2104-short-gtypes: 7/7] gio: Map short GValues to int16 GVariants and vice versa in GSettings
- Date: Mon, 11 May 2020 11:38:23 +0000 (UTC)
commit 93c33740ad0ce309f1fd1d29e2fcbf0b509b8403
Author: Michael Gratton <mike vee net>
Date: Mon May 11 21:34:47 2020 +1000
gio: Map short GValues to int16 GVariants and vice versa in GSettings
gio/gsettings-mapping.c | 54 +++++++++++++++++++++++++++++++++++++++++--------
1 file changed, 46 insertions(+), 8 deletions(-)
---
diff --git a/gio/gsettings-mapping.c b/gio/gsettings-mapping.c
index 8c64b02a5..93c06b7e5 100644
--- a/gio/gsettings-mapping.c
+++ b/gio/gsettings-mapping.c
@@ -28,7 +28,9 @@ g_settings_set_mapping_int (const GValue *value,
GVariant *variant = NULL;
gint64 l;
- if (G_VALUE_HOLDS_INT (value))
+ if (G_VALUE_HOLDS_SHORT (value))
+ l = g_value_get_short (value);
+ else if (G_VALUE_HOLDS_INT (value))
l = g_value_get_int (value);
else if (G_VALUE_HOLDS_INT64 (value))
l = g_value_get_int64 (value);
@@ -137,7 +139,9 @@ g_settings_set_mapping_unsigned_int (const GValue *value,
GVariant *variant = NULL;
guint64 u;
- if (G_VALUE_HOLDS_UINT (value))
+ if (G_VALUE_HOLDS_USHORT (value))
+ u = g_value_get_ushort (value);
+ else if (G_VALUE_HOLDS_UINT (value))
u = g_value_get_uint (value);
else if (G_VALUE_HOLDS_UINT64 (value))
u = g_value_get_uint64 (value);
@@ -203,7 +207,17 @@ g_settings_get_mapping_int (GValue *value,
else
return FALSE;
- if (G_VALUE_HOLDS_INT (value))
+ if (G_VALUE_HOLDS_SHORT (value))
+ {
+ g_value_set_short (value, l);
+ return (G_MINSHORT <= l && l <= G_MAXSHORT);
+ }
+ else if (G_VALUE_HOLDS_USHORT (value))
+ {
+ g_value_set_ushort (value, l);
+ return (0 <= l && l <= G_MAXUSHORT);
+ }
+ else if (G_VALUE_HOLDS_INT (value))
{
g_value_set_int (value, l);
return (G_MININT32 <= l && l <= G_MAXINT32);
@@ -248,7 +262,17 @@ g_settings_get_mapping_float (GValue *value,
return FALSE;
l = (gint64)d;
- if (G_VALUE_HOLDS_INT (value))
+ if (G_VALUE_HOLDS_SHORT (value))
+ {
+ g_value_set_short (value, l);
+ return (G_MINSHORT <= l && l <= G_MAXSHORT);
+ }
+ else if (G_VALUE_HOLDS_USHORT (value))
+ {
+ g_value_set_ushort (value, l);
+ return (0 <= l && l <= G_MAXUSHORT);
+ }
+ else if (G_VALUE_HOLDS_INT (value))
{
g_value_set_int (value, l);
return (G_MININT32 <= l && l <= G_MAXINT32);
@@ -296,7 +320,17 @@ g_settings_get_mapping_unsigned_int (GValue *value,
else
return FALSE;
- if (G_VALUE_HOLDS_INT (value))
+ if (G_VALUE_HOLDS_SHORT (value))
+ {
+ g_value_set_short (value, u);
+ return (G_MINSHORT <= u && u <= G_MAXSHORT);
+ }
+ else if (G_VALUE_HOLDS_USHORT (value))
+ {
+ g_value_set_ushort (value, u);
+ return (0 <= u && u <= G_MAXUSHORT);
+ }
+ else if (G_VALUE_HOLDS_INT (value))
{
g_value_set_int (value, u);
return (u <= G_MAXINT32);
@@ -350,14 +384,16 @@ g_settings_set_mapping (const GValue *value,
}
}
- else if (G_VALUE_HOLDS_INT (value) ||
+ else if (G_VALUE_HOLDS_SHORT (value) ||
+ G_VALUE_HOLDS_INT (value) ||
G_VALUE_HOLDS_INT64 (value))
return g_settings_set_mapping_int (value, expected_type);
else if (G_VALUE_HOLDS_DOUBLE (value))
return g_settings_set_mapping_float (value, expected_type);
- else if (G_VALUE_HOLDS_UINT (value) ||
+ else if (G_VALUE_HOLDS_USHORT (value) ||
+ G_VALUE_HOLDS_UINT (value) ||
G_VALUE_HOLDS_UINT64 (value))
return g_settings_set_mapping_unsigned_int (value, expected_type);
@@ -563,7 +599,9 @@ g_settings_mapping_is_compatible (GType gvalue_type,
else if (gvalue_type == G_TYPE_CHAR ||
gvalue_type == G_TYPE_UCHAR)
ok = g_variant_type_equal (variant_type, G_VARIANT_TYPE_BYTE);
- else if (gvalue_type == G_TYPE_INT ||
+ else if (gvalue_type == G_TYPE_SHORT ||
+ gvalue_type == G_TYPE_USHORT ||
+ gvalue_type == G_TYPE_INT ||
gvalue_type == G_TYPE_UINT ||
gvalue_type == G_TYPE_INT64 ||
gvalue_type == G_TYPE_UINT64 ||
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]