diff options
-rw-r--r-- | ChangeLog | 21 | ||||
-rw-r--r-- | girepository/girparser.c | 26 | ||||
-rw-r--r-- | giscanner/girwriter.py | 13 | ||||
-rw-r--r-- | giscanner/transformer.py | 4 | ||||
-rw-r--r-- | tests/boxed.gir | 16 | ||||
-rw-r--r-- | tests/invoke/testfns-1.0.gir | 30 | ||||
-rw-r--r-- | tests/object.gir | 16 | ||||
-rw-r--r-- | tests/scanner/DrawableAdditions.xml | 2 | ||||
-rw-r--r-- | tests/scanner/GtkFrob-1.0-expected.tgir | 2 | ||||
-rw-r--r-- | tests/scanner/annotation-1.0-expected.tgir | 48 | ||||
-rw-r--r-- | tests/scanner/drawable-1.0-expected.tgir | 12 | ||||
-rw-r--r-- | tests/scanner/drawable-injected-1.0-expected.gir | 2 | ||||
-rw-r--r-- | tests/scanner/drawable-injected-1.0-expected.tgir | 14 | ||||
-rw-r--r-- | tests/scanner/foo-1.0-expected.tgir | 98 | ||||
-rw-r--r-- | tools/generate.c | 27 |
15 files changed, 177 insertions, 154 deletions
@@ -1,5 +1,26 @@ 2008-10-23 Tommi Komulainen <tommi.komulainen@iki.fi> + Bug 556739 – transfer-ownership attribute should be mandatory in .gir + + * girepository/girparser.c (parse_param_transfer): + * giscanner/transformer.py (_create_parameter, _create_return): + * giscanner/girwriter.py (_write_return, _write_parameter): + * tools/generate.c (write_callable_info): always write and + require "transfer-ownership" for return-values and parameters + + * tests/boxed.gir: + * tests/invoke/testfns-1.0.gir: + * tests/object.gir: + * tests/scanner/DrawableAdditions.xml: + * tests/scanner/GtkFrob-1.0-expected.tgir: + * tests/scanner/annotation-1.0-expected.tgir: + * tests/scanner/drawable-1.0-expected.tgir: + * tests/scanner/drawable-injected-1.0-expected.gir: + * tests/scanner/drawable-injected-1.0-expected.tgir: + * tests/scanner/foo-1.0-expected.tgir: Updated + +2008-10-23 Tommi Komulainen <tommi.komulainen@iki.fi> + * giscanner/cgobject.py: build fundamental types same way as glib * giscanner/glibtransformer.py (_type_from_gtype): record GType diff --git a/girepository/girparser.c b/girepository/girparser.c index b92bc548..b898db4f 100644 --- a/girepository/girparser.c +++ b/girepository/girparser.c @@ -660,31 +660,29 @@ start_function (GMarkupParseContext *context, static void parse_param_transfer (GIrNodeParam *param, const gchar *transfer) { - if (transfer && strcmp (transfer, "none") == 0) + if (transfer == NULL) + { + g_warning ("required attribute 'transfer-ownership' missing"); + } + else if (strcmp (transfer, "none") == 0) { param->transfer = FALSE; param->shallow_transfer = FALSE; } - else if (transfer && strcmp (transfer, "container") == 0) + else if (strcmp (transfer, "container") == 0) { param->transfer = FALSE; param->shallow_transfer = TRUE; } - else + else if (strcmp (transfer, "full") == 0) { - if (transfer) - { - if (strcmp (transfer, "full") != 0) - g_warning ("Unknown transfer %s", transfer); - else - param->transfer = TRUE; - } - else if (param->in && !param->out) - param->transfer = FALSE; - else - param->transfer = TRUE; + param->transfer = TRUE; param->shallow_transfer = FALSE; } + else + { + g_warning ("Unknown transfer-ownership value: %s", transfer); + } } static gboolean diff --git a/giscanner/girwriter.py b/giscanner/girwriter.py index 7cac6210..5c8aa12b 100644 --- a/giscanner/girwriter.py +++ b/giscanner/girwriter.py @@ -124,10 +124,10 @@ class GIRWriter(XMLWriter): if not return_: return + assert return_.transfer is not None, return_ + attrs = [] - if return_.transfer: - attrs.append(('transfer-ownership', - return_.transfer)) + attrs.append(('transfer-ownership', return_.transfer)) with self.tagcontext('return-value', attrs): self._write_type(return_.type) @@ -139,14 +139,15 @@ class GIRWriter(XMLWriter): self._write_parameter(parameter) def _write_parameter(self, parameter): + assert parameter.transfer is not None, parameter + attrs = [] if parameter.name is not None: attrs.append(('name', parameter.name)) if parameter.direction != 'in': attrs.append(('direction', parameter.direction)) - if parameter.transfer: - attrs.append(('transfer-ownership', - parameter.transfer)) + attrs.append(('transfer-ownership', + parameter.transfer)) if parameter.allow_none: attrs.append(('allow-none', '1')) with self.tagcontext('parameter', attrs): diff --git a/giscanner/transformer.py b/giscanner/transformer.py index 5d1bf6d1..6b0a5a3e 100644 --- a/giscanner/transformer.py +++ b/giscanner/transformer.py @@ -509,6 +509,8 @@ class Transformer(object): print 'Unhandled parameter annotation option: %r' % ( option, ) self._handle_generic_param_options(param, options) + + assert param.transfer is not None, param return param def _create_return(self, source_type, options=None): @@ -527,6 +529,8 @@ class Transformer(object): else: print 'Unhandled return type annotation option: %r' % ( option, ) + + assert return_.transfer is not None, return_ return return_ def _create_const(self, symbol): diff --git a/tests/boxed.gir b/tests/boxed.gir index 806104c4..4d993283 100644 --- a/tests/boxed.gir +++ b/tests/boxed.gir @@ -15,14 +15,14 @@ <type name="uint32"/> </field> <method name="frob_boxed1" c:identifier="frob_boxed1"> - <return-value> + <return-value transfer-ownership="none"> <type name="none"/> </return-value> <parameters> - <parameter name="box"> + <parameter name="box" transfer-ownership="none"> <type name="BoxedType1"/> </parameter> - <parameter name="w"> + <parameter name="w" transfer-ownership="none"> <type name="GLib.List"> <type name="boxed2"/> </type> @@ -39,11 +39,11 @@ </parameters> </method> <method name="lart" c:identifier="lart"> - <return-value> + <return-value transfer-ownership="none"> <type name="boolean"/> </return-value> <parameters> - <parameter name="box"> + <parameter name="box" transfer-ownership="none"> <type name="boxed2"/> </parameter> <parameter name="val" transfer-ownership="full" direction="inout"> @@ -53,14 +53,14 @@ </method> </glib:boxed> <function name="freefunc" c:identifier="freefunc" deprecated="1"> - <return-value> + <return-value transfer-ownership="none"> <type name="boolean"/> </return-value> <parameters> - <parameter name="v1"> + <parameter name="v1" transfer-ownership="none"> <type name="int"/> </parameter> - <parameter name="val2"> + <parameter name="val2" transfer-ownership="none"> <type name="int"/> </parameter> </parameters> diff --git a/tests/invoke/testfns-1.0.gir b/tests/invoke/testfns-1.0.gir index 97238b3c..5218fa87 100644 --- a/tests/invoke/testfns-1.0.gir +++ b/tests/invoke/testfns-1.0.gir @@ -5,72 +5,72 @@ xmlns:glib="http://www.gtk.org/introspection/glib/1.0"> <namespace name="test" version="1.0"> <function name="test1" c:identifier="test1"> - <return-value> + <return-value transfer-ownership="none"> <type name="int" c:type="gint"/> </return-value> <parameters> - <parameter name="in" direction="in"> + <parameter name="in" direction="in" transfer-ownership="none"> <type name="int" c:type="gint"/> </parameter> </parameters> </function> <function name="test2" c:identifier="test2"> - <return-value> + <return-value transfer-ownership="none"> <type name="none" c:type="void"/> </return-value> <parameters> - <parameter name="in" c:type="gint" direction="in"> + <parameter name="in" c:type="gint" direction="in" transfer-ownership="none"> <type name="int" c:type="gint"/> </parameter> - <parameter name="out" c:type="gint" direction="out"> + <parameter name="out" c:type="gint" direction="out" transfer-ownership="none"> <type name="int" c:type="gint"/> </parameter> </parameters> </function> <function name="test3" c:identifier="test3"> - <return-value> + <return-value transfer-ownership="none"> <type name="none" c:type="void"/> </return-value> <parameters> - <parameter name="inout" c:type="gint" direction="inout"> + <parameter name="inout" c:type="gint" direction="inout" transfer-ownership="none"> <type name="int" c:type="gint"/> </parameter> </parameters> </function> <function name="test4" c:identifier="test4"> - <return-value> + <return-value transfer-ownership="none"> <type name="none" c:type="void"/> </return-value> <parameters> - <parameter name="blurb" direction="in"> + <parameter name="blurb" direction="in" transfer-ownership="none"> <type name="utf8" c:type="gchar*"/> </parameter> </parameters> </function> <function name="test5" c:identifier="test5"> - <return-value> + <return-value transfer-ownership="none"> <type name="none" c:type="void"/> </return-value> <parameters> <parameter name="blurb" direction="out" transfer-ownership="full"> <type name="utf8" c:type="gchar*"/> </parameter> - <parameter name="len" direction="out"> + <parameter name="len" direction="out" transfer-ownership="none"> <type name="int" c:type="gint"/> </parameter> </parameters> </function> <function name="test6" c:identifier="test6"> - <return-value> + <return-value transfer-ownership="none"> <type name="int" c:type="gint"/> </return-value> <parameters> - <parameter name="list" direction="in"> + <parameter name="list" direction="in" transfer-ownership="none"> <type name="GLib.List<int>*" c:type="GList*"/> </parameter> </parameters> @@ -82,14 +82,14 @@ <type name="utf8" c:type="gchar*"/> </return-value> <parameters> - <parameter name="list" direction="in"> + <parameter name="list" direction="in" transfer-ownership="none"> <type name="GLib.List<utf8>*" c:type="GList*"/> </parameter> </parameters> </function> <function name="broken" c:identifier="broken"> - <return-value> + <return-value transfer-ownership="none"> <type name="none" c:type="void"/> </return-value> </function> diff --git a/tests/object.gir b/tests/object.gir index 21645f54..c7ad2924 100644 --- a/tests/object.gir +++ b/tests/object.gir @@ -12,41 +12,41 @@ <type name="int"/> </property> <glib:signal name="signal1" when="LAST"> - <return-value> + <return-value transfer-ownership="none"> <type name="boolean"/> </return-value> <parameters> - <parameter name="obj"> + <parameter name="obj" transfer-ownership="none"> <type name="Object1"/> </parameter> </parameters> </glib:signal> <glib:signal name="signal2" when="FIRST" no-recurse="1" detailed="1" action="1" no-hooks="1"> - <return-value> + <return-value transfer-ownership="none"> <type name="none"/> </return-value> <parameters> - <parameter name="obj"> + <parameter name="obj" transfer-ownership="none"> <type name="Object1"/> </parameter> </parameters> </glib:signal> <vfunc name="vfunc1" offset="20"> - <return-value> + <return-value transfer-ownership="none"> <type name="Object2"/> </return-value> <parameters> - <parameter name="param1"> + <parameter name="param1" transfer-ownership="none"> <type name="Object1"/> </parameter> </parameters> </vfunc> <vfunc name="vfunc2" offset="24"> - <return-value> + <return-value transfer-ownership="none"> <type name="Object2"/> </return-value> <parameters> - <parameter name="param1"> + <parameter name="param1" transfer-ownership="none"> <type name="Object1"/> </parameter> </parameters> diff --git a/tests/scanner/DrawableAdditions.xml b/tests/scanner/DrawableAdditions.xml index 6dd6e050..7589a172 100644 --- a/tests/scanner/DrawableAdditions.xml +++ b/tests/scanner/DrawableAdditions.xml @@ -4,7 +4,7 @@ xmlns:glib="http://www.gtk.org/introspection/glib/1.0"> <inject path="namespace/class[@name='TestDrawable']"> <method name="get_width" c:identifier="girepo_test_drawable_get_width"> - <return-value> + <return-value transfer-ownership="none"> <type name="int" c:type="gint"/> </return-value> </method> diff --git a/tests/scanner/GtkFrob-1.0-expected.tgir b/tests/scanner/GtkFrob-1.0-expected.tgir index 81156ac7..85c527d6 100644 --- a/tests/scanner/GtkFrob-1.0-expected.tgir +++ b/tests/scanner/GtkFrob-1.0-expected.tgir @@ -7,7 +7,7 @@ <include name="GLib" version="2.0"/> <namespace name="GtkFrob" version="1.0" shared-library="gtkfrob"> <function name="language_manager_get_default" c:identifier="gtk_frob_language_manager_get_default"> - <return-value> + <return-value transfer-ownership="none"> <type name="none"/> </return-value> </function> diff --git a/tests/scanner/annotation-1.0-expected.tgir b/tests/scanner/annotation-1.0-expected.tgir index 6910e262..0e4c6557 100644 --- a/tests/scanner/annotation-1.0-expected.tgir +++ b/tests/scanner/annotation-1.0-expected.tgir @@ -8,11 +8,11 @@ <include name="GLib" version="2.0"/> <namespace name="annotation" version="1.0" shared-library="annotation"> <callback name="Callback"> - <return-value> + <return-value transfer-ownership="none"> <type name="int"/> </return-value> <parameters> - <parameter name="in"> + <parameter name="in" transfer-ownership="none"> <type name="int"/> </parameter> </parameters> @@ -24,7 +24,7 @@ </type> </return-value> <parameters> - <parameter name="in"> + <parameter name="in" transfer-ownership="none"> <type name="GLib.List"> <type name="utf8"/> </type> @@ -36,12 +36,12 @@ <type name="GObject.Object"/> </field> <method name="method" c:identifier="annotation_object_method"> - <return-value> + <return-value transfer-ownership="none"> <type name="int"/> </return-value> </method> <method name="out" c:identifier="annotation_object_out"> - <return-value> + <return-value transfer-ownership="none"> <type name="int"/> </return-value> <parameters> @@ -51,12 +51,12 @@ </parameters> </method> <method name="create_object" c:identifier="annotation_object_create_object"> - <return-value> + <return-value transfer-ownership="full"> <type name="GObject.Object"/> </return-value> </method> <method name="allow_none" c:identifier="annotation_object_allow_none"> - <return-value> + <return-value transfer-ownership="full"> <type name="GObject.Object"/> </return-value> <parameters> @@ -66,12 +66,12 @@ </parameters> </method> <method name="notrans" c:identifier="annotation_object_notrans"> - <return-value> + <return-value transfer-ownership="none"> <type name="GObject.Object"/> </return-value> </method> <method name="inout" c:identifier="annotation_object_inout"> - <return-value> + <return-value transfer-ownership="none"> <type name="int"/> </return-value> <parameters> @@ -81,7 +81,7 @@ </parameters> </method> <method name="inout2" c:identifier="annotation_object_inout2"> - <return-value> + <return-value transfer-ownership="none"> <type name="int"/> </return-value> <parameters> @@ -91,7 +91,7 @@ </parameters> </method> <method name="inout3" c:identifier="annotation_object_inout3"> - <return-value> + <return-value transfer-ownership="none"> <type name="int"/> </return-value> <parameters> @@ -101,17 +101,17 @@ </parameters> </method> <method name="in" c:identifier="annotation_object_in"> - <return-value> + <return-value transfer-ownership="none"> <type name="int"/> </return-value> <parameters> - <parameter name="inarg"> + <parameter name="inarg" transfer-ownership="none"> <type name="int"/> </parameter> </parameters> </method> <method name="calleeowns" c:identifier="annotation_object_calleeowns"> - <return-value> + <return-value transfer-ownership="none"> <type name="int"/> </return-value> <parameters> @@ -121,14 +121,14 @@ </parameters> </method> <method name="calleesowns" c:identifier="annotation_object_calleesowns"> - <return-value> + <return-value transfer-ownership="none"> <type name="int"/> </return-value> <parameters> <parameter name="toown1" transfer-ownership="full" direction="out"> <type name="GObject.Object"/> </parameter> - <parameter name="toown2" direction="out"> + <parameter name="toown2" transfer-ownership="none" direction="out"> <type name="GObject.Object"/> </parameter> </parameters> @@ -148,11 +148,11 @@ </return-value> </method> <method name="use_buffer" c:identifier="annotation_object_use_buffer"> - <return-value> + <return-value transfer-ownership="none"> <type name="none"/> </return-value> <parameters> - <parameter name="bytes"> + <parameter name="bytes" transfer-ownership="none"> <array zero-terminated="1"> <type name="uint8"/> </array> @@ -160,11 +160,11 @@ </parameters> </method> <method name="compute_sum" c:identifier="annotation_object_compute_sum"> - <return-value> + <return-value transfer-ownership="none"> <type name="none"/> </return-value> <parameters> - <parameter name="nums"> + <parameter name="nums" transfer-ownership="none"> <array zero-terminated="1"> <type name="int"/> </array> @@ -172,22 +172,22 @@ </parameters> </method> <method name="compute_sum_n" c:identifier="annotation_object_compute_sum_n"> - <return-value> + <return-value transfer-ownership="none"> <type name="none"/> </return-value> <parameters> - <parameter name="nums"> + <parameter name="nums" transfer-ownership="none"> <array length="2" zero-terminated="1"> <type name="int"/> </array> </parameter> - <parameter name="n_nums"> + <parameter name="n_nums" transfer-ownership="none"> <type name="int"/> </parameter> </parameters> </method> <method name="do_not_use" c:identifier="annotation_object_do_not_use" deprecated="1"> - <return-value> + <return-value transfer-ownership="full"> <type name="GObject.Object"/> </return-value> </method> diff --git a/tests/scanner/drawable-1.0-expected.tgir b/tests/scanner/drawable-1.0-expected.tgir index 1eef9886..ab121784 100644 --- a/tests/scanner/drawable-1.0-expected.tgir +++ b/tests/scanner/drawable-1.0-expected.tgir @@ -12,17 +12,17 @@ <type name="GObject.Object"/> </field> <method name="do_foo" c:identifier="test_drawable_do_foo"> - <return-value> + <return-value transfer-ownership="none"> <type name="none"/> </return-value> <parameters> - <parameter name="x"> + <parameter name="x" transfer-ownership="none"> <type name="int"/> </parameter> </parameters> </method> <method name="get_origin" c:identifier="test_drawable_get_origin"> - <return-value> + <return-value transfer-ownership="none"> <type name="none"/> </return-value> <parameters> @@ -35,7 +35,7 @@ </parameters> </method> <method name="get_size" c:identifier="test_drawable_get_size"> - <return-value> + <return-value transfer-ownership="none"> <type name="none"/> </return-value> <parameters> @@ -48,11 +48,11 @@ </parameters> </method> <method name="do_foo_maybe_throw" c:identifier="test_drawable_do_foo_maybe_throw" throws="1"> - <return-value> + <return-value transfer-ownership="none"> <type name="none"/> </return-value> <parameters> - <parameter name="x"> + <parameter name="x" transfer-ownership="none"> <type name="int"/> </parameter> </parameters> diff --git a/tests/scanner/drawable-injected-1.0-expected.gir b/tests/scanner/drawable-injected-1.0-expected.gir index e4d46840..ad7dc298 100644 --- a/tests/scanner/drawable-injected-1.0-expected.gir +++ b/tests/scanner/drawable-injected-1.0-expected.gir @@ -62,7 +62,7 @@ </parameters> </method> <method name="get_width" c:identifier="girepo_test_drawable_get_width"> - <return-value> + <return-value transfer-ownership="none"> <type name="int" c:type="gint"/> </return-value> </method> diff --git a/tests/scanner/drawable-injected-1.0-expected.tgir b/tests/scanner/drawable-injected-1.0-expected.tgir index fba3d099..9a1ee2b4 100644 --- a/tests/scanner/drawable-injected-1.0-expected.tgir +++ b/tests/scanner/drawable-injected-1.0-expected.tgir @@ -12,17 +12,17 @@ <type name="GObject.Object"/> </field> <method name="do_foo" c:identifier="test_drawable_do_foo"> - <return-value> + <return-value transfer-ownership="none"> <type name="none"/> </return-value> <parameters> - <parameter name="x"> + <parameter name="x" transfer-ownership="none"> <type name="int"/> </parameter> </parameters> </method> <method name="get_origin" c:identifier="test_drawable_get_origin"> - <return-value> + <return-value transfer-ownership="none"> <type name="none"/> </return-value> <parameters> @@ -35,7 +35,7 @@ </parameters> </method> <method name="get_size" c:identifier="test_drawable_get_size"> - <return-value> + <return-value transfer-ownership="none"> <type name="none"/> </return-value> <parameters> @@ -48,17 +48,17 @@ </parameters> </method> <method name="do_foo_maybe_throw" c:identifier="test_drawable_do_foo_maybe_throw" throws="1"> - <return-value> + <return-value transfer-ownership="none"> <type name="none"/> </return-value> <parameters> - <parameter name="x"> + <parameter name="x" transfer-ownership="none"> <type name="int"/> </parameter> </parameters> </method> <method name="get_width" c:identifier="girepo_test_drawable_get_width"> - <return-value> + <return-value transfer-ownership="none"> <type name="int"/> </return-value> </method> diff --git a/tests/scanner/foo-1.0-expected.tgir b/tests/scanner/foo-1.0-expected.tgir index 2399efd1..efe696c3 100644 --- a/tests/scanner/foo-1.0-expected.tgir +++ b/tests/scanner/foo-1.0-expected.tgir @@ -19,34 +19,34 @@ <type name="GObject.Object"/> </field> <constructor name="new" c:identifier="foo_object_new"> - <return-value> + <return-value transfer-ownership="full"> <type name="GObject.Object"/> </return-value> </constructor> <method name="external_type" c:identifier="foo_object_external_type"> - <return-value> + <return-value transfer-ownership="full"> <type name="GObject.Object"/> </return-value> </method> <method name="various" c:identifier="foo_object_various"> - <return-value> + <return-value transfer-ownership="none"> <type name="none"/> </return-value> <parameters> - <parameter name="data"> + <parameter name="data" transfer-ownership="none"> <type name="any"/> </parameter> - <parameter name="some_type"> + <parameter name="some_type" transfer-ownership="none"> <type name="GType"/> </parameter> </parameters> </method> <method name="with_tdef" c:identifier="foo_object_with_tdef"> - <return-value> + <return-value transfer-ownership="none"> <type name="none"/> </return-value> <parameters> - <parameter name="blah"> + <parameter name="blah" transfer-ownership="none"> <type name="GLib.SList"> <type name="any"/> </type> @@ -58,23 +58,23 @@ <type name="any"/> </return-value> <parameters> - <parameter name="target"> + <parameter name="target" transfer-ownership="none"> <type name="utf8"/> </parameter> </parameters> </method> <method name="is_it_time_yet" c:identifier="foo_object_is_it_time_yet"> - <return-value> + <return-value transfer-ownership="none"> <type name="none"/> </return-value> <parameters> - <parameter name="time"> + <parameter name="time" transfer-ownership="none"> <type name="time_t"/> </parameter> </parameters> </method> <method name="get_name" c:identifier="foo_object_get_name"> - <return-value> + <return-value transfer-ownership="none"> <type name="utf8"/> </return-value> </method> @@ -84,11 +84,11 @@ </return-value> </method> <method name="handle_glyph" c:identifier="foo_object_handle_glyph"> - <return-value> + <return-value transfer-ownership="none"> <type name="none"/> </return-value> <parameters> - <parameter name="glyph"> + <parameter name="glyph" transfer-ownership="none"> <type name="uint32"/> </parameter> </parameters> @@ -104,7 +104,7 @@ <parameter name="object" transfer-ownership="full"> <type name="GObject.Object"/> </parameter> - <parameter name="p0"> + <parameter name="p0" transfer-ownership="none"> <type name="any"/> </parameter> </parameters> @@ -132,7 +132,7 @@ </field> </record> <function name="init" c:identifier="foo_init"> - <return-value> + <return-value transfer-ownership="none"> <type name="int"/> </return-value> </function> @@ -142,21 +142,21 @@ <member name="delta" value="2"/> </enumeration> <function name="enum_type_method" c:identifier="foo_enum_type_method"> - <return-value> + <return-value transfer-ownership="none"> <type name="int"/> </return-value> <parameters> - <parameter name="foo_enum"> + <parameter name="foo_enum" transfer-ownership="none"> <type name="EnumType"/> </parameter> </parameters> </function> <function name="enum_type_returnv" c:identifier="foo_enum_type_returnv"> - <return-value> + <return-value transfer-ownership="full"> <type name="EnumType"/> </return-value> <parameters> - <parameter name="x"> + <parameter name="x" transfer-ownership="none"> <type name="int"/> </parameter> </parameters> @@ -184,30 +184,30 @@ </return-value> </constructor> <method name="method" c:identifier="foo_boxed_method"> - <return-value> + <return-value transfer-ownership="none"> <type name="none"/> </return-value> </method> </record> <record name="DBusData" glib:type-name="FooDBusData" glib:get-type="foo_dbus_data_get_type"> <method name="method" c:identifier="foo_dbus_data_method"> - <return-value> + <return-value transfer-ownership="none"> <type name="none"/> </return-value> </method> </record> <callback name="Callback"> - <return-value> + <return-value transfer-ownership="none"> <type name="boolean"/> </return-value> <parameters> - <parameter name="foo"> + <parameter name="foo" transfer-ownership="none"> <type name="GObject.Object"/> </parameter> - <parameter name="b"> + <parameter name="b" transfer-ownership="none"> <type name="boolean"/> </parameter> - <parameter name="data"> + <parameter name="data" transfer-ownership="none"> <type name="any"/> </parameter> </parameters> @@ -236,33 +236,33 @@ </field> </record> <function name="method_external_references" c:identifier="foo_method_external_references"> - <return-value> + <return-value transfer-ownership="none"> <type name="none"/> </return-value> <parameters> - <parameter name="object"> + <parameter name="object" transfer-ownership="none"> <type name="GObject.Object"/> </parameter> - <parameter name="e"> + <parameter name="e" transfer-ownership="none"> <type name="EnumType"/> </parameter> - <parameter name="f"> + <parameter name="f" transfer-ownership="none"> <type name="utility.FlagType"/> </parameter> - <parameter name="s"> + <parameter name="s" transfer-ownership="none"> <type name="utility.Struct"/> </parameter> </parameters> </function> <function name="rectangle_add" c:identifier="foo_rectangle_add"> - <return-value> + <return-value transfer-ownership="none"> <type name="none"/> </return-value> <parameters> <parameter name="r1" transfer-ownership="full" direction="inout"> <type name="Rectangle"/> </parameter> - <parameter name="r2"> + <parameter name="r2" transfer-ownership="none"> <type name="Rectangle"/> </parameter> </parameters> @@ -272,16 +272,16 @@ <type name="Rectangle"/> </return-value> <parameters> - <parameter name="x"> + <parameter name="x" transfer-ownership="none"> <type name="int"/> </parameter> - <parameter name="y"> + <parameter name="y" transfer-ownership="none"> <type name="int"/> </parameter> - <parameter name="width"> + <parameter name="width" transfer-ownership="none"> <type name="int"/> </parameter> - <parameter name="height"> + <parameter name="height" transfer-ownership="none"> <type name="int"/> </parameter> </parameters> @@ -322,20 +322,20 @@ <type name="BRect"/> </return-value> <parameters> - <parameter name="x"> + <parameter name="x" transfer-ownership="none"> <type name="double"/> </parameter> - <parameter name="y"> + <parameter name="y" transfer-ownership="none"> <type name="double"/> </parameter> </parameters> </constructor> <method name="add" c:identifier="foo_brect_add"> - <return-value> + <return-value transfer-ownership="none"> <type name="none"/> </return-value> <parameters> - <parameter name="b2"> + <parameter name="b2" transfer-ownership="none"> <type name="BRect"/> </parameter> </parameters> @@ -357,7 +357,7 @@ </return-value> </constructor> <method name="get_contained_type" c:identifier="foo_bunion_get_contained_type"> - <return-value> + <return-value transfer-ownership="none"> <type name="int"/> </return-value> </method> @@ -368,31 +368,31 @@ </field> </union> <function name="test_unsigned_qualifier" c:identifier="foo_test_unsigned_qualifier"> - <return-value> + <return-value transfer-ownership="none"> <type name="none"/> </return-value> <parameters> - <parameter name="unsigned_param"> + <parameter name="unsigned_param" transfer-ownership="none"> <type name="uint"/> </parameter> </parameters> </function> <function name="test_unsigned_type" c:identifier="foo_test_unsigned_type"> - <return-value> + <return-value transfer-ownership="none"> <type name="none"/> </return-value> <parameters> - <parameter name="unsigned_param"> + <parameter name="unsigned_param" transfer-ownership="none"> <type name="uint"/> </parameter> </parameters> </function> <function name="test_string_array" c:identifier="foo_test_string_array"> - <return-value> + <return-value transfer-ownership="none"> <type name="none"/> </return-value> <parameters> - <parameter name="array"> + <parameter name="array" transfer-ownership="none"> <array zero-terminated="1"> <type name="utf8"/> </array> @@ -400,11 +400,11 @@ </parameters> </function> <function name="test_string_array_with_g" c:identifier="foo_test_string_array_with_g"> - <return-value> + <return-value transfer-ownership="none"> <type name="none"/> </return-value> <parameters> - <parameter name="array"> + <parameter name="array" transfer-ownership="none"> <array zero-terminated="1"> <type name="utf8"/> </array> diff --git a/tools/generate.c b/tools/generate.c index 8a3b1d86..fad680f5 100644 --- a/tools/generate.c +++ b/tools/generate.c @@ -382,21 +382,19 @@ write_callable_info (const gchar *namespace, xml_start_element (file, "return-value"); - if (g_type_info_is_pointer (type)) + switch (g_callable_info_get_caller_owns (info)) { - switch (g_callable_info_get_caller_owns (info)) - { - case GI_TRANSFER_NOTHING: - break; - case GI_TRANSFER_CONTAINER: - xml_printf (file, " transfer-ownership=\"container\""); - break; - case GI_TRANSFER_EVERYTHING: - xml_printf (file, " transfer-ownership=\"full\""); - break; - default: - g_assert_not_reached (); - } + case GI_TRANSFER_NOTHING: + xml_printf (file, " transfer-ownership=\"none\""); + break; + case GI_TRANSFER_CONTAINER: + xml_printf (file, " transfer-ownership=\"container\""); + break; + case GI_TRANSFER_EVERYTHING: + xml_printf (file, " transfer-ownership=\"full\""); + break; + default: + g_assert_not_reached (); } if (g_callable_info_may_return_null (info)) @@ -421,6 +419,7 @@ write_callable_info (const gchar *namespace, switch (g_arg_info_get_ownership_transfer (arg)) { case GI_TRANSFER_NOTHING: + xml_printf (file, " transfer-ownership=\"none\""); break; case GI_TRANSFER_CONTAINER: xml_printf (file, " transfer-ownership=\"container\""); |