summaryrefslogtreecommitdiffstats
path: root/glib
diff options
context:
space:
mode:
authorHavoc Pennington <hp@redhat.com>2005-01-28 03:06:56 +0000
committerHavoc Pennington <hp@redhat.com>2005-01-28 03:06:56 +0000
commit3ed9db546e1143bc9aa2d83a6f423fdd81227352 (patch)
tree6ba7a785ddeff02224072cc51faf108482dfb0c7 /glib
parent4506b6594b4a86557fad7850f56b5fdabd3108de (diff)
2005-01-27 Havoc Pennington <hp@redhat.com>
* dbus/dbus-arch-deps.h.in: add 16/32-bit types * configure.in: find the right type for 16 and 32 bit ints as well as 64 * dbus/dbus-protocol.h (DBUS_TYPE_INT16, DBUS_TYPE_UINT16): add the 16-bit types so people don't have to stuff them in 32-bit or byte arrays.
Diffstat (limited to 'glib')
-rw-r--r--glib/dbus-gparser.c4
-rw-r--r--glib/dbus-gutils.c4
-rw-r--r--glib/dbus-gvalue.c29
3 files changed, 31 insertions, 6 deletions
diff --git a/glib/dbus-gparser.c b/glib/dbus-gparser.c
index 2318c015..478dcdf3 100644
--- a/glib/dbus-gparser.c
+++ b/glib/dbus-gparser.c
@@ -437,6 +437,10 @@ basic_type_from_string (const char *str)
{
if (strcmp (str, "string") == 0)
return DBUS_TYPE_STRING;
+ else if (strcmp (str, "int16") == 0)
+ return DBUS_TYPE_INT16;
+ else if (strcmp (str, "uint16") == 0)
+ return DBUS_TYPE_UINT16;
else if (strcmp (str, "int32") == 0)
return DBUS_TYPE_INT32;
else if (strcmp (str, "uint32") == 0)
diff --git a/glib/dbus-gutils.c b/glib/dbus-gutils.c
index 9e4a5cd2..ff48e7f1 100644
--- a/glib/dbus-gutils.c
+++ b/glib/dbus-gutils.c
@@ -88,6 +88,10 @@ _dbus_gutils_type_to_string (int type)
return "boolean";
case DBUS_TYPE_BYTE:
return "byte";
+ case DBUS_TYPE_INT16:
+ return "int16";
+ case DBUS_TYPE_UINT16:
+ return "uint16";
case DBUS_TYPE_INT32:
return "int32";
case DBUS_TYPE_UINT32:
diff --git a/glib/dbus-gvalue.c b/glib/dbus-gvalue.c
index 1fed0cf7..e2bf40b2 100644
--- a/glib/dbus-gvalue.c
+++ b/glib/dbus-gvalue.c
@@ -40,12 +40,29 @@ dbus_gvalue_demarshal (DBusMessageIter *iter, GValue *value)
switch (dbus_message_iter_get_arg_type (iter))
{
MAP_BASIC (BOOLEAN, BOOLEAN);
- MAP_BASIC (BYTE, UCHAR);
- MAP_BASIC (INT32, INT);
- MAP_BASIC (UINT32, UINT);
- MAP_BASIC (INT64, INT64);
- MAP_BASIC (UINT64, UINT64);
- MAP_BASIC (DOUBLE, DOUBLE);
+ MAP_BASIC (BYTE, UCHAR);
+ MAP_BASIC (INT32, INT);
+ MAP_BASIC (UINT32, UINT);
+ MAP_BASIC (INT64, INT64);
+ MAP_BASIC (UINT64, UINT64);
+ MAP_BASIC (DOUBLE, DOUBLE);
+
+ case DBUS_TYPE_INT16:
+ {
+ dbus_int16_t v;
+ g_value_init (value, G_TYPE_INT);
+ dbus_message_iter_get_basic (iter, &v);
+ g_value_set_int (value, v);
+ }
+ break;
+ case DBUS_TYPE_UINT16:
+ {
+ dbus_uint16_t v;
+ g_value_init (value, G_TYPE_UINT);
+ dbus_message_iter_get_basic (iter, &v);
+ g_value_set_uint (value, v);
+ }
+ break;
case DBUS_TYPE_STRING:
case DBUS_TYPE_OBJECT_PATH: