diff options
| author | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2014-03-11 17:32:24 +0000 |
|---|---|---|
| committer | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2014-03-13 14:25:14 +0000 |
| commit | e302712edc8c5d3d2d7bc661179d6983cb0847f2 (patch) | |
| tree | 81ad5f4bf5f36ca6b2251c24e3be7d2b7deff2ee | |
| parent | 4ece5930f8d60245bf497ad556c0969f4e679da4 (diff) | |
glib-client-gen: factor out value_getter
| -rw-r--r-- | tools/glib-client-gen.py | 50 | ||||
| -rw-r--r-- | tools/libglibcodegen.py | 22 |
2 files changed, 28 insertions, 44 deletions
diff --git a/tools/glib-client-gen.py b/tools/glib-client-gen.py index cd420a16a..db87741d6 100644 --- a/tools/glib-client-gen.py +++ b/tools/glib-client-gen.py @@ -29,8 +29,8 @@ from getopt import gnu_getopt from libtpcodegen import file_set_contents, key_by_name, u from libglibcodegen import (Signature, type_to_gtype, - get_docstring, xml_escape, get_deprecated, copy_into_gvalue) - + get_docstring, xml_escape, get_deprecated, copy_into_gvalue, + value_getter) NS_TP = "http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0" @@ -236,31 +236,12 @@ class Generator(object): self.b(' if (callback != NULL)') self.b(' callback (g_object_ref (tpproxy),') - # FIXME: factor out into a function for i, arg in enumerate(args): name, info, tp_type, elt = arg ctype, gtype, marshaller, pointer = info - if marshaller == 'BOXED': - self.b(' g_value_get_boxed (args->values + %d),' % i) - elif gtype == 'G_TYPE_STRING': - self.b(' g_value_get_string (args->values + %d),' % i) - elif gtype == 'G_TYPE_UCHAR': - self.b(' g_value_get_uchar (args->values + %d),' % i) - elif gtype == 'G_TYPE_BOOLEAN': - self.b(' g_value_get_boolean (args->values + %d),' % i) - elif gtype == 'G_TYPE_UINT': - self.b(' g_value_get_uint (args->values + %d),' % i) - elif gtype == 'G_TYPE_INT': - self.b(' g_value_get_int (args->values + %d),' % i) - elif gtype == 'G_TYPE_UINT64': - self.b(' g_value_get_uint64 (args->values + %d),' % i) - elif gtype == 'G_TYPE_INT64': - self.b(' g_value_get_int64 (args->values + %d),' % i) - elif gtype == 'G_TYPE_DOUBLE': - self.b(' g_value_get_double (args->values + %d),' % i) - else: - assert False, "Don't know how to get %s from a GValue" % gtype + getter = value_getter(gtype, marshaller) + self.b(' %s (args->values + %d),' % (getter, i)) self.b(' user_data,') self.b(' weak_object);') @@ -623,31 +604,12 @@ class Generator(object): self.b(' callback ((%s) self,' % self.proxy_cls) - # FIXME: factor out into a function for i, arg in enumerate(out_args): name, info, tp_type, elt = arg ctype, gtype, marshaller, pointer = info - if marshaller == 'BOXED': - self.b(' g_value_get_boxed (args->values + %d),' % i) - elif gtype == 'G_TYPE_STRING': - self.b(' g_value_get_string (args->values + %d),' % i) - elif gtype == 'G_TYPE_UCHAR': - self.b(' g_value_get_uchar (args->values + %d),' % i) - elif gtype == 'G_TYPE_BOOLEAN': - self.b(' g_value_get_boolean (args->values + %d),' % i) - elif gtype == 'G_TYPE_UINT': - self.b(' g_value_get_uint (args->values + %d),' % i) - elif gtype == 'G_TYPE_INT': - self.b(' g_value_get_int (args->values + %d),' % i) - elif gtype == 'G_TYPE_UINT64': - self.b(' g_value_get_uint64 (args->values + %d),' % i) - elif gtype == 'G_TYPE_INT64': - self.b(' g_value_get_int64 (args->values + %d),' % i) - elif gtype == 'G_TYPE_DOUBLE': - self.b(' g_value_get_double (args->values + %d),' % i) - else: - assert False, "Don't know how to get %s from a GValue" % gtype + getter = value_getter(gtype, marshaller) + self.b(' %s (args->values + %d),' % (getter, i)) self.b(' error, user_data, weak_object);') self.b('') diff --git a/tools/libglibcodegen.py b/tools/libglibcodegen.py index 0b703a5a8..c03544fe2 100644 --- a/tools/libglibcodegen.py +++ b/tools/libglibcodegen.py @@ -193,3 +193,25 @@ def copy_into_gvalue(gvaluep, gtype, marshaller, name): return 'g_value_set_double (%s, %s);' % (gvaluep, name) else: raise AssertionError("Don't know how to put %s in a GValue" % gtype) + +def value_getter(gtype, marshaller): + if marshaller == 'BOXED': + return 'g_value_get_boxed' + elif gtype == 'G_TYPE_STRING': + return 'g_value_get_string' + elif gtype == 'G_TYPE_UCHAR': + return 'g_value_get_uchar' + elif gtype == 'G_TYPE_BOOLEAN': + return 'g_value_get_boolean' + elif gtype == 'G_TYPE_UINT': + return 'g_value_get_uint' + elif gtype == 'G_TYPE_INT': + return 'g_value_get_int' + elif gtype == 'G_TYPE_UINT64': + return 'g_value_get_uint64' + elif gtype == 'G_TYPE_INT64': + return 'g_value_get_int64' + elif gtype == 'G_TYPE_DOUBLE': + return 'g_value_get_double' + else: + raise AssertionError("Don't know how to get %s from a GValue" % marshaller) |
