[gobject-introspection/wip/transformer] [major] more fixes
- From: Colin Walters <walters src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gobject-introspection/wip/transformer] [major] more fixes
- Date: Mon, 16 Aug 2010 22:35:43 +0000 (UTC)
commit d0a22f902bebb44be2c262ae2cc37d4ab701820f
Author: Colin Walters <walters verbum org>
Date: Mon Aug 16 16:35:48 2010 -0400
[major] more fixes
giscanner/glibast.py | 4 +++
giscanner/glibtransformer.py | 2 +-
giscanner/primarytransformer.py | 7 ++++-
giscanner/transformer.py | 5 +--
tests/scanner/Foo-1.0-expected.gir | 49 +++++++++++++++++++++--------------
5 files changed, 42 insertions(+), 25 deletions(-)
---
diff --git a/giscanner/glibast.py b/giscanner/glibast.py
index a948682..1fd5bd5 100644
--- a/giscanner/glibast.py
+++ b/giscanner/glibast.py
@@ -147,6 +147,10 @@ class GLibInterface(Interface):
self.signals = []
self.ctype = ctype or type_name
+ def _walk(self, callback, chain):
+ super(GLibInterface, self)._walk(callback, chain)
+ for sig in self.signals:
+ sig.walk(callback, chain)
class GLibProperty(Property):
pass
diff --git a/giscanner/glibtransformer.py b/giscanner/glibtransformer.py
index bbc2c5d..0fe104b 100644
--- a/giscanner/glibtransformer.py
+++ b/giscanner/glibtransformer.py
@@ -357,7 +357,7 @@ blob containing data gleaned from GObject's primitive introspection."""
for signal_info in xmlnode.findall('signal'):
rctype = signal_info.attrib['return']
rtype = self._transformer.create_type_from_user_string(rctype)
- return_ = Return(rtype, PARAM_TRANSFER_NONE)
+ return_ = Return(rtype)
parameters = []
for i, parameter in enumerate(signal_info.findall('param')):
if i == 0:
diff --git a/giscanner/primarytransformer.py b/giscanner/primarytransformer.py
index e262a18..8f99ad4 100644
--- a/giscanner/primarytransformer.py
+++ b/giscanner/primarytransformer.py
@@ -321,8 +321,13 @@ class PrimaryTransformer(object):
return PARAM_TRANSFER_NONE
def _get_transfer_default_return(self, parent, node):
- if node.type.is_equiv(BASIC_GIR_TYPES) or node.type.is_const:
+ if (node.type.is_equiv(BASIC_GIR_TYPES)
+ or node.type.is_const
+ or node.type.is_equiv(TYPE_NONE)):
return PARAM_TRANSFER_NONE
+ elif node.type.is_equiv(TYPE_STRING):
+ # Non-const strings default to FULL
+ return PARAM_TRANSFER_FULL
elif node.type.target_fundamental:
# This looks like just GType right now
return None
diff --git a/giscanner/transformer.py b/giscanner/transformer.py
index bde2c0a..1ee9398 100644
--- a/giscanner/transformer.py
+++ b/giscanner/transformer.py
@@ -406,8 +406,6 @@ or raise ValueError."""
return node
def _create_function(self, symbol):
- if symbol.ident == 'test_strv_out_container':
- import pdb; pdb.set_trace()
parameters = list(self._create_parameters(symbol.base_type))
return_ = self._create_return(symbol.base_type.base_type)
name = self._strip_symbol_or_warn(symbol)
@@ -601,7 +599,8 @@ or raise ValueError."""
return Parameter(symbol.ident, ptype)
def _create_return(self, source_type):
- return Return(self._create_type_from_base(source_type, is_return=True))
+ typeval = self._create_type_from_base(source_type, is_return=True)
+ return Return(typeval)
def _create_const(self, symbol):
# Don't create constants for non-public things
diff --git a/tests/scanner/Foo-1.0-expected.gir b/tests/scanner/Foo-1.0-expected.gir
index 388f0be..ba2a5db 100644
--- a/tests/scanner/Foo-1.0-expected.gir
+++ b/tests/scanner/Foo-1.0-expected.gir
@@ -467,11 +467,18 @@ uses a C sugar return type.</doc>
</parameter>
</parameters>
</method>
+ <property name="hidden"
+ introspectable="0"
+ writable="1"
+ construct-only="1"
+ transfer-ownership="none">
+ <type/>
+ </property>
<property name="string"
writable="1"
construct="1"
transfer-ownership="none">
- <type name="utf8" c:type="gchararray"/>
+ <type name="utf8"/>
</property>
<field name="parent_instance">
<type name="GObject.Object" c:type="GObject"/>
@@ -481,14 +488,14 @@ uses a C sugar return type.</doc>
</field>
<glib:signal name="signal">
<return-value transfer-ownership="full">
- <type name="utf8" c:type="gchararray"/>
+ <type name="utf8"/>
</return-value>
<parameters>
<parameter name="object" transfer-ownership="none">
- <type name="GObject.Object" c:type="GObject"/>
+ <type name="GObject.Object"/>
</parameter>
<parameter name="p0" transfer-ownership="none">
- <type name="gpointer" c:type="gpointer"/>
+ <type name="gpointer"/>
</parameter>
</parameters>
</glib:signal>
@@ -500,7 +507,7 @@ uses a C sugar return type.</doc>
<type name="GObject.ObjectClass" c:type="GObjectClass"/>
</field>
<field name="virtual_method">
- <callback name="virtual_method" c:type="virtual_method">
+ <callback name="virtual_method">
<return-value transfer-ownership="none">
<type name="gboolean" c:type="gboolean"/>
</return-value>
@@ -515,7 +522,7 @@ uses a C sugar return type.</doc>
</callback>
</field>
<field name="read_fn">
- <callback name="read_fn" c:type="read_fn">
+ <callback name="read_fn">
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
@@ -536,12 +543,12 @@ uses a C sugar return type.</doc>
</field>
<field name="_reserved">
<array zero-terminated="0" c:type="GCallback" fixed-size="4">
- <type name="GObject.Callback"/>
+ <type name="GObject.Callback" c:type="GCallback"/>
</array>
</field>
</record>
- <constant name="PIE_IS_TASTY" value="3.14159">
- <type name="gdouble"/>
+ <constant name="PIE_IS_TASTY" value="3.141590">
+ <type name="gdouble" c:type="gdouble"/>
</constant>
<record name="Rectangle" c:type="FooRectangle">
<field name="x" writable="1">
@@ -588,7 +595,7 @@ uses a C sugar return type.</doc>
</method>
</record>
<constant name="SUCCESS_INT" value="4408">
- <type name="gint"/>
+ <type name="gint" c:type="gint"/>
</constant>
<enumeration name="Skippable" introspectable="0" c:type="FooSkippable">
<doc xml:whitespace="preserve">Some type that is only interesting from C and should not be
@@ -619,9 +626,10 @@ exposed to language bindings.</doc>
<type name="gint" c:type="int"/>
</field>
</record>
- <record name="StructPrivate" c:type="FooStructPrivate">
+ <record name="StructPrivate" c:type="FooStructPrivate" disguised="1">
</record>
<interface name="SubInterface"
+ c:symbol-prefix="sub_interface"
c:type="FooSubInterface"
glib:type-name="FooSubInterface"
glib:get-type="foo_sub_interface_get_type"
@@ -638,8 +646,8 @@ exposed to language bindings.</doc>
</return-value>
</method>
<glib:signal name="destroy-event">
- <return-value transfer-ownership="full">
- <type name="none" c:type="void"/>
+ <return-value transfer-ownership="none">
+ <type name="none"/>
</return-value>
</glib:signal>
</interface>
@@ -650,7 +658,7 @@ exposed to language bindings.</doc>
<type name="GObject.TypeInterface" c:type="GTypeInterface"/>
</field>
<field name="destroy_event">
- <callback name="destroy_event" c:type="destroy_event">
+ <callback name="destroy_event">
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
@@ -662,7 +670,7 @@ exposed to language bindings.</doc>
</callback>
</field>
<field name="do_bar">
- <callback name="do_bar" c:type="do_bar">
+ <callback name="do_bar">
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
@@ -675,6 +683,7 @@ exposed to language bindings.</doc>
</field>
</record>
<class name="Subobject"
+ c:symbol-prefix="subobject"
c:type="FooSubobject"
parent="Object"
abstract="1"
@@ -706,12 +715,12 @@ exposed to language bindings.</doc>
<type name="gint" c:type="int"/>
</field>
<field name="lines" writable="1">
- <array zero-terminated="0" c:type="char" fixed-size="80">
- <type name="gchar"/>
+ <array zero-terminated="0" c:type="gchar" fixed-size="80">
+ <type name="gchar" c:type="char"/>
</array>
</field>
<field name="data" writable="1">
- <type name="gpointer" c:type="guchar*"/>
+ <type name="guint8" c:type="guchar*"/>
</field>
</record>
<union name="Union" c:type="_FooUnion">
@@ -776,7 +785,7 @@ exposed to language bindings.</doc>
<parameter name="data" transfer-ownership="none">
<type name="gpointer" c:type="gpointer"/>
</parameter>
- <parameter name="destroy" transfer-ownership="none" scope="call">
+ <parameter name="destroy" transfer-ownership="none">
<type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
</parameter>
</parameters>
@@ -792,7 +801,7 @@ exposed to language bindings.</doc>
</parameters>
</function>
<function name="enum_type_returnv" c:identifier="foo_enum_type_returnv">
- <return-value transfer-ownership="full">
+ <return-value transfer-ownership="none">
<type name="EnumType" c:type="FooEnumType"/>
</return-value>
<parameters>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]