gobject-introspection r352 - in trunk: . giscanner tests/scanner



Author: walters
Date: Tue Aug 12 19:06:34 2008
New Revision: 352
URL: http://svn.gnome.org/viewvc/gobject-introspection?rev=352&view=rev

Log:
2008-08-12  Colin Walters  <walters verbum org>

	* giscanner/glibtransformer.py: Also transform callbacks
	and structure field types.
	* tests/scanner/Fooe-expected.gir: Update to expect correct
	names for callbacks and structs.




Modified:
   trunk/ChangeLog
   trunk/giscanner/glibtransformer.py
   trunk/tests/scanner/Foo-expected.gir

Modified: trunk/giscanner/glibtransformer.py
==============================================================================
--- trunk/giscanner/glibtransformer.py	(original)
+++ trunk/giscanner/glibtransformer.py	Tue Aug 12 19:06:34 2008
@@ -25,7 +25,7 @@
 from . import cgobject
 from .odict import odict
 from .ast import (Callback, Enum, Function, Member, Namespace, Parameter,
-                  Property, Return, Sequence, Struct, Type,
+                  Property, Return, Sequence, Struct, Field, Type,
                   type_name_from_ctype)
 from .glibast import (GLibBoxed, GLibEnum, GLibEnumMember, GLibFlags,
                       GLibInterface, GLibObject, GLibSignal)
@@ -114,13 +114,18 @@
             print 'GOBJECT BUILDER: Unhandled node:', node
 
     def _resolve_node(self, node):
-        if isinstance(node, Function):
+        ntype = type(node)
+        if ntype in (Callback, Function):
             self._resolve_function(node)
-        elif type(node) in (GLibObject, GLibBoxed):
+        elif ntype in (GLibObject, GLibBoxed):
             for meth in node.methods:
                 self._resolve_function(meth)
             for ctor in node.constructors:
                 self._resolve_function(ctor)
+        elif ntype in (Struct,):
+            for field in node.fields:
+                if isinstance(field, Field):
+                    self._resolve_field(field)
 
     def _parse_enum(self, enum):
         self._add_attribute(enum)
@@ -143,6 +148,9 @@
         for parameter in parameters:
             parameter.type = self._resolve_param_type(parameter.type)
 
+    def _resolve_field(self, field):
+        field.type = self._resolve_param_type(field.type)
+
     def _parse_get_type_function(self, func):
         if self._library is None:
             return False

Modified: trunk/tests/scanner/Foo-expected.gir
==============================================================================
--- trunk/tests/scanner/Foo-expected.gir	(original)
+++ trunk/tests/scanner/Foo-expected.gir	Tue Aug 12 19:06:34 2008
@@ -323,7 +323,7 @@
       </return-value>
       <parameters>
         <parameter name="foo">
-          <type name="FooObject*" c:type="FooObject*"/>
+          <type name="Object" c:type="FooObject*"/>
         </parameter>
         <parameter name="b">
           <type name="boolean" c:type="gboolean"/>
@@ -335,7 +335,7 @@
     </callback>
     <record name="FooStruct" c:type="FooStruct">
       <field name="priv">
-        <type name="FooStructPrivate*" c:type="FooStructPrivate*"/>
+        <type name="FooStructPrivate" c:type="FooStructPrivate*"/>
       </field>
       <field name="member">
         <type name="int32" c:type="int"/>



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