gobject-introspection r797 - in trunk: . girepository giscanner tests tests/invoke tests/scanner tools



Author: tko
Date: Thu Oct 23 17:42:25 2008
New Revision: 797
URL: http://svn.gnome.org/viewvc/gobject-introspection?rev=797&view=rev

Log:
Bug 556739 â transfer-ownership attribute should be mandatory in .gir

2008-10-23  Tommi Komulainen  <tommi komulainen iki fi>

	* 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

Modified:
   trunk/ChangeLog
   trunk/girepository/girparser.c
   trunk/giscanner/girwriter.py
   trunk/giscanner/transformer.py
   trunk/tests/boxed.gir
   trunk/tests/invoke/testfns-1.0.gir
   trunk/tests/object.gir
   trunk/tests/scanner/DrawableAdditions.xml
   trunk/tests/scanner/GtkFrob-1.0-expected.tgir
   trunk/tests/scanner/annotation-1.0-expected.tgir
   trunk/tests/scanner/drawable-1.0-expected.tgir
   trunk/tests/scanner/drawable-injected-1.0-expected.gir
   trunk/tests/scanner/drawable-injected-1.0-expected.tgir
   trunk/tests/scanner/foo-1.0-expected.tgir
   trunk/tools/generate.c

Modified: trunk/girepository/girparser.c
==============================================================================
--- trunk/girepository/girparser.c	(original)
+++ trunk/girepository/girparser.c	Thu Oct 23 17:42:25 2008
@@ -660,31 +660,29 @@
 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

Modified: trunk/giscanner/girwriter.py
==============================================================================
--- trunk/giscanner/girwriter.py	(original)
+++ trunk/giscanner/girwriter.py	Thu Oct 23 17:42:25 2008
@@ -124,10 +124,10 @@
         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 @@
                 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):

Modified: trunk/giscanner/transformer.py
==============================================================================
--- trunk/giscanner/transformer.py	(original)
+++ trunk/giscanner/transformer.py	Thu Oct 23 17:42:25 2008
@@ -509,6 +509,8 @@
                 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 @@
             else:
                 print 'Unhandled return type annotation option: %r' % (
                     option, )
+
+        assert return_.transfer is not None, return_
         return return_
 
     def _create_const(self, symbol):

Modified: trunk/tests/boxed.gir
==============================================================================
--- trunk/tests/boxed.gir	(original)
+++ trunk/tests/boxed.gir	Thu Oct 23 17:42:25 2008
@@ -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>

Modified: trunk/tests/invoke/testfns-1.0.gir
==============================================================================
--- trunk/tests/invoke/testfns-1.0.gir	(original)
+++ trunk/tests/invoke/testfns-1.0.gir	Thu Oct 23 17:42:25 2008
@@ -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>

Modified: trunk/tests/object.gir
==============================================================================
--- trunk/tests/object.gir	(original)
+++ trunk/tests/object.gir	Thu Oct 23 17:42:25 2008
@@ -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>

Modified: trunk/tests/scanner/DrawableAdditions.xml
==============================================================================
--- trunk/tests/scanner/DrawableAdditions.xml	(original)
+++ trunk/tests/scanner/DrawableAdditions.xml	Thu Oct 23 17:42:25 2008
@@ -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>

Modified: trunk/tests/scanner/GtkFrob-1.0-expected.tgir
==============================================================================
--- trunk/tests/scanner/GtkFrob-1.0-expected.tgir	(original)
+++ trunk/tests/scanner/GtkFrob-1.0-expected.tgir	Thu Oct 23 17:42:25 2008
@@ -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>

Modified: trunk/tests/scanner/annotation-1.0-expected.tgir
==============================================================================
--- trunk/tests/scanner/annotation-1.0-expected.tgir	(original)
+++ trunk/tests/scanner/annotation-1.0-expected.tgir	Thu Oct 23 17:42:25 2008
@@ -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>

Modified: trunk/tests/scanner/drawable-1.0-expected.tgir
==============================================================================
--- trunk/tests/scanner/drawable-1.0-expected.tgir	(original)
+++ trunk/tests/scanner/drawable-1.0-expected.tgir	Thu Oct 23 17:42:25 2008
@@ -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>

Modified: trunk/tests/scanner/drawable-injected-1.0-expected.gir
==============================================================================
--- trunk/tests/scanner/drawable-injected-1.0-expected.gir	(original)
+++ trunk/tests/scanner/drawable-injected-1.0-expected.gir	Thu Oct 23 17:42:25 2008
@@ -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>

Modified: trunk/tests/scanner/drawable-injected-1.0-expected.tgir
==============================================================================
--- trunk/tests/scanner/drawable-injected-1.0-expected.tgir	(original)
+++ trunk/tests/scanner/drawable-injected-1.0-expected.tgir	Thu Oct 23 17:42:25 2008
@@ -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>

Modified: trunk/tests/scanner/foo-1.0-expected.tgir
==============================================================================
--- trunk/tests/scanner/foo-1.0-expected.tgir	(original)
+++ trunk/tests/scanner/foo-1.0-expected.tgir	Thu Oct 23 17:42:25 2008
@@ -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>

Modified: trunk/tools/generate.c
==============================================================================
--- trunk/tools/generate.c	(original)
+++ trunk/tools/generate.c	Thu Oct 23 17:42:25 2008
@@ -382,21 +382,19 @@
 
   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 @@
       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\"");



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]