summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorColin Walters <walters@verbum.org>2010-10-21 14:07:59 -0400
committerColin Walters <walters@verbum.org>2010-10-21 14:08:41 -0400
commit78716bd269a1b2b770138b3ce5e00f2a9f479b55 (patch)
treecd7b7f53c797ac029eb6e19cd45b62eb4f180c1a
parentaea515709e0b608d6fa7c7de4dd555b8ac034969 (diff)
downloadgobject-introspection-78716bd269a1b2b770138b3ce5e00f2a9f479b55.tar.gz
scanner: Support GStrv as signal parameters
-rw-r--r--giscanner/ast.py5
-rw-r--r--tests/scanner/Regress-1.0-expected.gir14
-rw-r--r--tests/scanner/regress.c20
3 files changed, 39 insertions, 0 deletions
diff --git a/giscanner/ast.py b/giscanner/ast.py
index 1b1de5ca..d4f251f0 100644
--- a/giscanner/ast.py
+++ b/giscanner/ast.py
@@ -94,6 +94,11 @@ in contrast to the other create_type() functions."""
elif gtype_name in ('GArray', 'GPtrArray', 'GByteArray'):
return Array('GLib.' + gtype_name[1:], TYPE_ANY,
gtype_name=gtype_name)
+ elif gtype_name == 'GStrv':
+ bare_utf8 = TYPE_STRING.clone()
+ bare_utf8.ctype = None
+ return Array(None, bare_utf8, ctype=None, gtype_name=gtype_name,
+ is_const=False)
return cls(gtype_name=gtype_name)
def get_giname(self):
diff --git a/tests/scanner/Regress-1.0-expected.gir b/tests/scanner/Regress-1.0-expected.gir
index bf71521a..ba3ce29b 100644
--- a/tests/scanner/Regress-1.0-expected.gir
+++ b/tests/scanner/Regress-1.0-expected.gir
@@ -640,6 +640,20 @@ TpAccount::status-changed</doc>
</parameter>
</parameters>
</glib:signal>
+ <glib:signal name="sig-with-strv">
+ <doc xml:whitespace="preserve">Test GStrv as a param.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none"/>
+ </return-value>
+ <parameters>
+ <parameter name="object" transfer-ownership="none">
+ <doc xml:whitespace="preserve">strings</doc>
+ <array>
+ <type name="utf8"/>
+ </array>
+ </parameter>
+ </parameters>
+ </glib:signal>
<glib:signal name="test">
<return-value transfer-ownership="none">
<type name="none"/>
diff --git a/tests/scanner/regress.c b/tests/scanner/regress.c
index 839114f8..b83ed981 100644
--- a/tests/scanner/regress.c
+++ b/tests/scanner/regress.c
@@ -1649,6 +1649,7 @@ regress_test_obj_default_matrix (RegressTestObj *obj, const char *somestr)
enum {
REGRESS_TEST_OBJ_SIGNAL_SIG_NEW_WITH_ARRAY_PROP,
REGRESS_TEST_OBJ_SIGNAL_SIG_WITH_HASH_PROP,
+ REGRESS_TEST_OBJ_SIGNAL_SIG_WITH_STRV,
N_REGRESS_TEST_OBJ_SIGNALS
};
@@ -1726,6 +1727,25 @@ regress_test_obj_class_init (RegressTestObjClass *klass)
1,
G_TYPE_HASH_TABLE);
+ /**
+ * RegressTestObj::sig-with-strv:
+ * @self: an object
+ * @strs: strings
+ *
+ * Test GStrv as a param.
+ */
+ regress_test_obj_signals[REGRESS_TEST_OBJ_SIGNAL_SIG_WITH_STRV] =
+ g_signal_new ("sig-with-strv",
+ G_TYPE_FROM_CLASS (gobject_class),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL,
+ NULL,
+ g_cclosure_marshal_VOID__BOXED,
+ G_TYPE_NONE,
+ 1,
+ G_TYPE_STRV);
+
gobject_class->set_property = regress_test_obj_set_property;
gobject_class->get_property = regress_test_obj_get_property;
gobject_class->dispose = regress_test_obj_dispose;