[Pkg-telepathy-commits] [telepathy-glib] 43/111: codegen: factor out copy_into_gvalue

Simon McVittie smcv at debian.org
Wed Mar 19 18:07:25 UTC 2014


This is an automated email from the git hooks/post-receive script.

smcv pushed a commit to branch debian
in repository telepathy-glib.

commit 7ffbde3f23170ccc219ca969052efaf9c9a535bf
Author: Simon McVittie <simon.mcvittie at collabora.co.uk>
Date:   Mon Oct 21 16:50:53 2013 +0100

    codegen: factor out copy_into_gvalue
    
    I needed this for TpExportable (which is still work in progress),
    but it's already a small code reduction.
    
    Bug: https://bugs.freedesktop.org/show_bug.cgi?id=59024
    Reviewed-by: Guillaume Desmottes <guillaume.desmottes at collabora.co.uk>
---
 tools/glib-client-gen.py | 68 +++++-------------------------------------------
 tools/libglibcodegen.py  | 23 ++++++++++++++++
 2 files changed, 29 insertions(+), 62 deletions(-)

diff --git a/tools/glib-client-gen.py b/tools/glib-client-gen.py
index 7d67c71..a0fecf0 100644
--- a/tools/glib-client-gen.py
+++ b/tools/glib-client-gen.py
@@ -28,8 +28,8 @@ import xml.dom.minidom
 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
+from libglibcodegen import (Signature, type_to_gtype,
+        get_docstring, xml_escape, get_deprecated, copy_into_gvalue)
 
 
 NS_TP = "http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0"
@@ -205,36 +205,8 @@ class Generator(object):
                 self.b('  g_value_unset (args->values + %d);' % i)
                 self.b('  g_value_init (args->values + %d, %s);' % (i, gtype))
 
-                if gtype == 'G_TYPE_STRING':
-                    self.b('  g_value_set_string (args->values + %d, %s);'
-                           % (i, name))
-                elif marshaller == 'BOXED':
-                    self.b('  g_value_set_boxed (args->values + %d, %s);'
-                           % (i, name))
-                elif gtype == 'G_TYPE_UCHAR':
-                    self.b('  g_value_set_uchar (args->values + %d, %s);'
-                           % (i, name))
-                elif gtype == 'G_TYPE_BOOLEAN':
-                    self.b('  g_value_set_boolean (args->values + %d, %s);'
-                           % (i, name))
-                elif gtype == 'G_TYPE_INT':
-                    self.b('  g_value_set_int (args->values + %d, %s);'
-                           % (i, name))
-                elif gtype == 'G_TYPE_UINT':
-                    self.b('  g_value_set_uint (args->values + %d, %s);'
-                           % (i, name))
-                elif gtype == 'G_TYPE_INT64':
-                    self.b('  g_value_set_int (args->values + %d, %s);'
-                           % (i, name))
-                elif gtype == 'G_TYPE_UINT64':
-                    self.b('  g_value_set_uint64 (args->values + %d, %s);'
-                           % (i, name))
-                elif gtype == 'G_TYPE_DOUBLE':
-                    self.b('  g_value_set_double (args->values + %d, %s);'
-                           % (i, name))
-                else:
-                    assert False, ("Don't know how to put %s in a GValue"
-                                   % gtype)
+                self.b('  ' + copy_into_gvalue('args->values + %d' % i,
+                    gtype, marshaller, name))
                 self.b('')
 
             self.b('  tp_proxy_signal_connection_v0_take_results (sc, args);')
@@ -573,36 +545,8 @@ class Generator(object):
                 self.b('  g_value_unset (args->values + %d);' % i)
                 self.b('  g_value_init (args->values + %d, %s);' % (i, gtype))
 
-                if gtype == 'G_TYPE_STRING':
-                    self.b('  g_value_take_string (args->values + %d, %s);'
-                           % (i, name))
-                elif marshaller == 'BOXED':
-                    self.b('  g_value_take_boxed (args->values + %d, %s);'
-                            % (i, name))
-                elif gtype == 'G_TYPE_UCHAR':
-                    self.b('  g_value_set_uchar (args->values + %d, %s);'
-                            % (i, name))
-                elif gtype == 'G_TYPE_BOOLEAN':
-                    self.b('  g_value_set_boolean (args->values + %d, %s);'
-                            % (i, name))
-                elif gtype == 'G_TYPE_INT':
-                    self.b('  g_value_set_int (args->values + %d, %s);'
-                            % (i, name))
-                elif gtype == 'G_TYPE_UINT':
-                    self.b('  g_value_set_uint (args->values + %d, %s);'
-                            % (i, name))
-                elif gtype == 'G_TYPE_INT64':
-                    self.b('  g_value_set_int (args->values + %d, %s);'
-                            % (i, name))
-                elif gtype == 'G_TYPE_UINT64':
-                    self.b('  g_value_set_uint (args->values + %d, %s);'
-                            % (i, name))
-                elif gtype == 'G_TYPE_DOUBLE':
-                    self.b('  g_value_set_double (args->values + %d, %s);'
-                            % (i, name))
-                else:
-                    assert False, ("Don't know how to put %s in a GValue"
-                                   % gtype)
+                self.b('  ' + copy_into_gvalue('args->values + %d' % i,
+                    gtype, marshaller, name))
 
             self.b('  tp_proxy_pending_call_v0_take_results (user_data, '
                    'NULL, args);')
diff --git a/tools/libglibcodegen.py b/tools/libglibcodegen.py
index 6cd1a62..0b703a5 100644
--- a/tools/libglibcodegen.py
+++ b/tools/libglibcodegen.py
@@ -170,3 +170,26 @@ def type_to_gtype(s):
 
     # we just don't know ..
     raise Exception("don't know the GType for " + s)
+
+
+def copy_into_gvalue(gvaluep, gtype, marshaller, name):
+    if gtype == 'G_TYPE_STRING':
+        return 'g_value_set_string (%s, %s);' % (gvaluep, name)
+    elif marshaller == 'BOXED':
+        return 'g_value_set_boxed (%s, %s);' % (gvaluep, name)
+    elif gtype == 'G_TYPE_UCHAR':
+        return 'g_value_set_uchar (%s, %s);' % (gvaluep, name)
+    elif gtype == 'G_TYPE_BOOLEAN':
+        return 'g_value_set_boolean (%s, %s);' % (gvaluep, name)
+    elif gtype == 'G_TYPE_INT':
+        return 'g_value_set_int (%s, %s);' % (gvaluep, name)
+    elif gtype == 'G_TYPE_UINT':
+        return 'g_value_set_uint (%s, %s);' % (gvaluep, name)
+    elif gtype == 'G_TYPE_INT64':
+        return 'g_value_set_int (%s, %s);' % (gvaluep, name)
+    elif gtype == 'G_TYPE_UINT64':
+        return 'g_value_set_uint64 (%s, %s);' % (gvaluep, name)
+    elif gtype == 'G_TYPE_DOUBLE':
+        return 'g_value_set_double (%s, %s);' % (gvaluep, name)
+    else:
+        raise AssertionError("Don't know how to put %s in a GValue" % gtype)

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-telepathy/telepathy-glib.git



More information about the Pkg-telepathy-commits mailing list