[gobject-introspection: 2/5] regress: Add test with signal inout parameter
- From: Philip Chimento <pchimento src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gobject-introspection: 2/5] regress: Add test with signal inout parameter
- Date: Thu, 21 Jun 2018 01:41:31 +0000 (UTC)
commit c4f5896068ca342b75bc438af0b78d44cf635305
Author: Philip Chimento <philip chimento gmail com>
Date: Wed May 9 23:38:38 2018 -0700
regress: Add test with signal inout parameter
This is modeled after GtkEditable::insert-text which isn't marshalled
properly in GJS.
See gjs#147.
tests/scanner/Regress-1.0-expected.gir | 30 ++++++++++++++++++++++++++++
tests/scanner/regress.c | 36 ++++++++++++++++++++++++++++++++++
tests/scanner/regress.h | 3 +++
3 files changed, 69 insertions(+)
---
diff --git a/tests/scanner/Regress-1.0-expected.gir b/tests/scanner/Regress-1.0-expected.gir
index 316c12ca..ad6af895 100644
--- a/tests/scanner/Regress-1.0-expected.gir
+++ b/tests/scanner/Regress-1.0-expected.gir
@@ -3134,6 +3134,19 @@ case.</doc>
</instance-parameter>
</parameters>
</method>
+ <method name="emit_sig_with_inout_int"
+ c:identifier="regress_test_obj_emit_sig_with_inout_int">
+ <doc xml:space="preserve">The signal handler must increment the inout parameter by 1.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="obj" transfer-ownership="none">
+ <doc xml:space="preserve">The object to emit the signal.</doc>
+ <type name="TestObj" c:type="RegressTestObj*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
<method name="emit_sig_with_int64"
c:identifier="regress_test_obj_emit_sig_with_int64">
<return-value transfer-ownership="none">
@@ -3787,6 +3800,23 @@ raise from the introspection client language.</doc>
</parameter>
</parameters>
</glib:signal>
+ <glib:signal name="sig-with-inout-int" when="last">
+ <doc xml:space="preserve">This signal is modeled after GtkEditable::insert-text.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="position"
+ direction="inout"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">The position, in characters, at which to
+ insert the new text. This is an in-out paramter. After the signal
+ emission is finished, it should point after the newly inserted text.</doc>
+ <type name="gint" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
<glib:signal name="sig-with-int64-prop" when="last">
<doc xml:space="preserve">You can use this with regress_test_obj_emit_sig_with_int64, or raise from
the introspection client langage.</doc>
diff --git a/tests/scanner/regress.c b/tests/scanner/regress.c
index 2cf4cddb..a321c5eb 100644
--- a/tests/scanner/regress.c
+++ b/tests/scanner/regress.c
@@ -2279,6 +2279,7 @@ enum {
REGRESS_TEST_OBJ_SIGNAL_SIG_WITH_INT64_PROP,
REGRESS_TEST_OBJ_SIGNAL_SIG_WITH_UINT64_PROP,
REGRESS_TEST_OBJ_SIGNAL_SIG_WITH_INTARRAY_RET,
+ REGRESS_TEST_OBJ_SIGNAL_SIG_WITH_INOUT_INT,
N_REGRESS_TEST_OBJ_SIGNALS
};
@@ -2529,6 +2530,27 @@ regress_test_obj_class_init (RegressTestObjClass *klass)
1,
G_TYPE_INT);
+ /**
+ * RegressTestObj::sig-with-inout-int
+ * @self: The object that emitted the signal
+ * @position: (inout) (type int): The position, in characters, at which to
+ * insert the new text. This is an in-out paramter. After the signal
+ * emission is finished, it should point after the newly inserted text.
+ *
+ * This signal is modeled after GtkEditable::insert-text.
+ */
+ regress_test_obj_signals[REGRESS_TEST_OBJ_SIGNAL_SIG_WITH_INOUT_INT] =
+ g_signal_new ("sig-with-inout-int",
+ G_TYPE_FROM_CLASS (gobject_class),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL,
+ NULL,
+ NULL,
+ G_TYPE_NONE,
+ 1,
+ G_TYPE_POINTER);
+
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;
@@ -2807,6 +2829,20 @@ regress_test_obj_emit_sig_with_array_len_prop (RegressTestObj *obj)
g_signal_emit_by_name (obj, "sig-with-array-len-prop", &arr, 5);
}
+/**
+ * regress_test_obj_emit_sig_with_inout_int:
+ * @obj: The object to emit the signal.
+ *
+ * The signal handler must increment the inout parameter by 1.
+ */
+void
+regress_test_obj_emit_sig_with_inout_int (RegressTestObj *obj)
+{
+ int inout = 42;
+ g_signal_emit_by_name (obj, "sig-with-inout-int", &inout);
+ g_assert_cmpint (inout, ==, 43);
+}
+
int
regress_test_obj_instance_method (RegressTestObj *obj)
{
diff --git a/tests/scanner/regress.h b/tests/scanner/regress.h
index d88df3f2..f07d162c 100644
--- a/tests/scanner/regress.h
+++ b/tests/scanner/regress.h
@@ -839,6 +839,9 @@ void regress_test_obj_emit_sig_with_uint64 (RegressTestObj *obj);
_GI_TEST_EXTERN
void regress_test_obj_emit_sig_with_array_len_prop (RegressTestObj *obj);
+_GI_TEST_EXTERN
+void regress_test_obj_emit_sig_with_inout_int (RegressTestObj *obj);
+
_GI_TEST_EXTERN
int regress_test_obj_instance_method (RegressTestObj *obj);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]