gobject-introspection r260 - in trunk: . giscanner tests/parser
- From: johan svn gnome org
- To: svn-commits-list gnome org
- Subject: gobject-introspection r260 - in trunk: . giscanner tests/parser
- Date: Wed, 30 Apr 2008 02:48:36 +0100 (BST)
Author: johan
Date: Wed Apr 30 01:48:36 2008
New Revision: 260
URL: http://svn.gnome.org/viewvc/gobject-introspection?rev=260&view=rev
Log:
2008-04-29 Johan Dahlin <johan gnome org>
* giscanner/ast.py:
* giscanner/girwriter.py:
* giscanner/transformer.py:
* tests/parser/Foo-expected.gir:
* TODO:
Use transfer-ownership everywhere, to mark ownership/calle/caller etc.
Modified:
trunk/ChangeLog
trunk/TODO
trunk/giscanner/ast.py
trunk/giscanner/girwriter.py
trunk/giscanner/transformer.py
trunk/tests/parser/Foo-expected.gir
Modified: trunk/TODO
==============================================================================
--- trunk/TODO (original)
+++ trunk/TODO Wed Apr 30 01:48:36 2008
@@ -8,7 +8,6 @@
- For argument/return values etc, store only c:identifier in the
<class/> definition. Requires a link to the references type in the
Type node.
-- c:owner -> ownership-transfer=yes/no
- replace gidl/gdk-pixbuf.gidl with something generated from headers,
verify all information is available, possible to write
Modified: trunk/giscanner/ast.py
==============================================================================
--- trunk/giscanner/ast.py (original)
+++ trunk/giscanner/ast.py Wed Apr 30 01:48:36 2008
@@ -55,7 +55,7 @@
Node.__init__(self, name)
self.type = Type(type_name)
self.direction = 'in'
- self.transfer = 'none'
+ self.transfer = False
def __repr__(self):
return 'Parameter(%r, %r)' % (self.name, self.type)
@@ -94,7 +94,7 @@
def __init__(self, type_name):
Node.__init__(self)
self.type = Type(type_name)
- self.transfer = 'none'
+ self.transfer = False
def __repr__(self):
return 'Return(%r)' % (self.type,)
@@ -167,3 +167,4 @@
def __init__(self, name, element_type):
Type.__init__(self, name)
self.element_type = element_type
+ self.transfer = False
Modified: trunk/giscanner/girwriter.py
==============================================================================
--- trunk/giscanner/girwriter.py (original)
+++ trunk/giscanner/girwriter.py Wed Apr 30 01:48:36 2008
@@ -79,7 +79,12 @@
def _write_return_type(self, return_):
if not return_:
return
- with self.tagcontext('return-value'):
+
+ attrs = []
+ if return_.transfer:
+ attrs.append(('transfer-ownership',
+ str(int(return_.transfer))))
+ with self.tagcontext('return-value', attrs):
if isinstance(return_.type, Sequence):
self._write_sequence(return_.type)
else:
@@ -96,8 +101,9 @@
attrs = [('name', parameter.name)]
if parameter.direction != 'in':
attrs.append(('direction', parameter.direction))
- if parameter.transfer != 'none':
- attrs.append(('transfer', parameter.transfer))
+ if parameter.transfer:
+ attrs.append(('transfer-ownership',
+ str(int(parameter.transfer))))
with self.tagcontext('parameter', attrs):
self._write_type(parameter.type)
@@ -111,7 +117,10 @@
self.write_tag('type', attrs)
def _write_sequence(self, sequence):
- attrs = [('c:owner', sequence.cowner)]
+ attrs = []
+ if sequence.transfer:
+ attrs.append(('transfer-ownership',
+ str(int(sequence.transfer))))
with self.tagcontext('sequence', attrs):
attrs = [('c:identifier', sequence.element_type)]
self.write_tag('element-type', attrs)
Modified: trunk/giscanner/transformer.py
==============================================================================
--- trunk/giscanner/transformer.py (original)
+++ trunk/giscanner/transformer.py Wed Apr 30 01:48:36 2008
@@ -137,7 +137,7 @@
elif option == 'out':
param.direction = 'out'
elif option == 'callee-owns':
- param.transfer = 'full'
+ param.transfer = True
else:
print 'Unhandled parameter annotation option: %s' % (
option,)
@@ -150,12 +150,12 @@
return_ = Return(return_type)
for option in options:
if option == 'caller-owns':
- return_.transfer = 'full'
+ return_.transfer = True
elif option.startswith('seq '):
value, element_options = option[3:].split(None, 2)
element_type = self._parse_type_annotation(value)
seq = Sequence(return_type, element_type)
- seq.cowner = 'caller'
+ seq.transfer = True
return_.type = seq
else:
print 'Unhandled parameter annotation option: %s' % (
Modified: trunk/tests/parser/Foo-expected.gir
==============================================================================
--- trunk/tests/parser/Foo-expected.gir (original)
+++ trunk/tests/parser/Foo-expected.gir Wed Apr 30 01:48:36 2008
@@ -57,7 +57,7 @@
</parameters>
</method>
<method name="create_object" c:identifier="foo_object_create_object">
- <return-value>
+ <return-value transfer-ownership="1">
<type name="GLib.Object" c:type="GObject*"/>
</return-value>
<parameters>
@@ -126,7 +126,7 @@
<parameter name="object">
<type name="Object" c:type="FooObject*"/>
</parameter>
- <parameter name="toown" transfer="full">
+ <parameter name="toown" transfer-ownership="1">
<type name="GLib.Object" c:type="GObject*"/>
</parameter>
</parameters>
@@ -139,17 +139,17 @@
<parameter name="object">
<type name="Object" c:type="FooObject*"/>
</parameter>
- <parameter name="toown1" transfer="full">
+ <parameter name="toown1" transfer-ownership="1">
<type name="GLib.Object" c:type="GObject*"/>
</parameter>
- <parameter name="toown2" transfer="full">
+ <parameter name="toown2" transfer-ownership="1">
<type name="GLib.Object" c:type="GObject*"/>
</parameter>
</parameters>
</method>
<method name="get_strings" c:identifier="foo_object_get_strings">
<return-value>
- <sequence c:owner="caller">
+ <sequence transfer-ownership="1">
<element-type c:identifier="char*"/>
</sequence>
</return-value>
@@ -161,7 +161,7 @@
</method>
<method name="get_objects" c:identifier="foo_object_get_objects">
<return-value>
- <sequence c:owner="caller">
+ <sequence transfer-ownership="1">
<element-type c:identifier="FooObject*"/>
</sequence>
</return-value>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]