Rename most c:identifier to c:type. Add new ones to
authorJohan Dahlin <jdahlin@async.com.br>
Mon, 28 Apr 2008 19:49:46 +0000 (19:49 +0000)
committerJohan Dahlin <johan@src.gnome.org>
Mon, 28 Apr 2008 19:49:46 +0000 (19:49 +0000)
2008-04-28  Johan Dahlin  <jdahlin@async.com.br>

    * giscanner/ast.py:
    * giscanner/girwriter.py:
    * giscanner/glibast.py:
    * giscanner/glibtransformer.py:
    * tests/parser/Foo-expected.gir:
    * tests/parser/utility-expected.gir:
    Rename most c:identifier to c:type. Add new ones to
    class/interface/enum/boxed.

svn path=/trunk/; revision=252

ChangeLog
giscanner/ast.py
giscanner/girwriter.py
giscanner/glibast.py
giscanner/glibtransformer.py
tests/parser/Foo-expected.gir
tests/parser/utility-expected.gir

index 9ade615..e3aa77d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2008-04-28  Johan Dahlin  <jdahlin@async.com.br>
+
+       * giscanner/ast.py:
+       * giscanner/girwriter.py:
+       * giscanner/glibast.py:
+       * giscanner/glibtransformer.py:
+       * tests/parser/Foo-expected.gir:
+       * tests/parser/utility-expected.gir:
+       Rename most c:identifier to c:type. Add new ones to
+       class/interface/enum/boxed.
+
 2008-04-28  Johan Dahlin  <jdahlin@async.com.br>
 
        * giscanner/ast.py:
index 38f0313..cc07660 100644 (file)
@@ -44,7 +44,7 @@ class VFunction(Function):
 class Type(Node):
     def __init__(self, name):
         Node.__init__(self, name)
-        self.cidentifier = name
+        self.ctype = name
 
     def __repr__(self):
         return 'Type(%r)' % (self.name,)
@@ -65,6 +65,7 @@ class Enum(Node):
     def __init__(self, name, members):
         Node.__init__(self, name)
         self.members = members
+        self.ctype = name
 
     def __repr__(self):
         return 'Enum(%r, %r)' % (self.name, self.members)
@@ -101,6 +102,7 @@ class Return(Node):
 class Class(Node):
     def __init__(self, name, parent):
         Node.__init__(self, name)
+        self.ctype = name
         self.parent = parent
         self.methods = []
         self.constructors = []
index 79367c8..1b640cd 100644 (file)
@@ -99,8 +99,12 @@ class GIRWriter(XMLWriter):
             self._write_type(parameter.type)
 
     def _write_type(self, type):
-        attrs = [('name', type.name),
-                 ('c:identifier', type.cidentifier)]
+        attrs = [('name', type.name)]
+        # FIXME: figure out if type references a basic type
+        #        or a boxed/class/interface etc. and skip
+        #        writing the ctype if the latter.
+        if 1:
+            attrs.append(('c:type', type.ctype))
         self.write_tag('type', attrs)
 
     def _write_sequence(self, sequence):
@@ -110,7 +114,8 @@ class GIRWriter(XMLWriter):
             self.write_tag('element-type', attrs)
 
     def _write_enum(self, enum):
-        attrs = [('name', enum.name)]
+        attrs = [('name', enum.name),
+                 ('c:type', enum.ctype)]
         tag_name = 'enumeration'
         if isinstance(enum, GLibEnum):
             attrs.extend([('glib:type-name', enum.type_name),
@@ -130,7 +135,8 @@ class GIRWriter(XMLWriter):
         self.write_tag('member', attrs)
 
     def _write_class(self, node):
-        attrs = [('name', node.name)]
+        attrs = [('name', node.name),
+                 ('c:type', node.ctype)]
         if isinstance(node, Class):
             tag_name = 'class'
             if node.parent is not None:
@@ -150,7 +156,8 @@ class GIRWriter(XMLWriter):
                 self._write_property(prop)
 
     def _write_boxed(self, boxed):
-        attrs = [('glib:name', boxed.name),
+        attrs = [('c:type', boxed.ctype),
+                 ('glib:name', boxed.name),
                  ('glib:type-name', boxed.type_name),
                  ('glib:get-type', boxed.get_type)]
 
index 87c3bd4..116f88d 100644 (file)
@@ -24,6 +24,7 @@ from .ast import Class, Enum, Interface, Member, Node, Property, Struct
 class GLibEnum(Enum):
     def __init__(self, name, members, type_name, get_type):
         Enum.__init__(self, name, members)
+        self.ctype = type_name
         self.type_name = type_name
         self.get_type = get_type
 
@@ -48,6 +49,7 @@ class GLibEnumMember(Member):
 class GLibObject(Class):
     def __init__(self, name, parent, type_name, get_type):
         Class.__init__(self, name, parent)
+        self.ctype = type_name
         self.type_name = type_name
         self.get_type = get_type
         self.signals = []
@@ -55,6 +57,7 @@ class GLibObject(Class):
 class GLibBoxed(Struct):
     def __init__(self, name, type_name, get_type):
         Struct.__init__(self, name)
+        self.ctype = name
         self.constructors = []
         self.methods = []
         self.type_name = type_name
@@ -64,6 +67,7 @@ class GLibBoxed(Struct):
 class GLibInterface(Interface):
     def __init__(self, name, type_name, get_type):
         Interface.__init__(self, name)
+        self.ctype = type_name
         self.type_name = type_name
         self.get_type = get_type
         self.signals = []
index 305899f..92c88a3 100644 (file)
@@ -139,8 +139,7 @@ class GLibTransformer(object):
 
     def _resolve_param_type(self, ptype):
         type_name = ptype.name.replace('*', '')
-        ptype.name = ptype.name.replace(type_name,
-                                        self._resolve_type_name(type_name))
+        ptype.name = self._resolve_type_name(type_name)
         return ptype
 
     def _parse_node(self, node):
index 0f7f8df..38bbe16 100644 (file)
             xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
   <namespace name="Foo">
     <interface name="Interface"
+               c:type="FooInterface"
                glib:type-name="FooInterface"
                glib:get-type="foo_interface_get_type">
     </interface>
     <function name="init" c:identifier="foo_init">
       <return-value>
-        <type name="gint" c:identifier="gint"/>
+        <type name="gint" c:type="gint"/>
       </return-value>
     </function>
     <class name="Object"
+           c:type="FooObject"
            parent="GLib.Object"
            glib:type-name="FooObject"
            glib:get-type="foo_object_get_type">
       <constructor name="new" c:identifier="foo_object_new">
         <return-value>
-          <type name="Object*" c:identifier="FooObject*"/>
+          <type name="Object" c:type="FooObject*"/>
         </return-value>
       </constructor>
       <method name="method" c:identifier="foo_object_method">
         <return-value>
-          <type name="gint" c:identifier="gint"/>
+          <type name="gint" c:type="gint"/>
         </return-value>
         <parameters>
           <parameter name="object">
-            <type name="Object*" c:identifier="FooObject*"/>
+            <type name="Object" c:type="FooObject*"/>
           </parameter>
         </parameters>
       </method>
       <method name="external_type" c:identifier="foo_object_external_type">
         <return-value>
-          <type name="utility.Object*" c:identifier="UtilityObject*"/>
+          <type name="utility.Object" c:type="UtilityObject*"/>
         </return-value>
         <parameters>
           <parameter name="object">
-            <type name="Object*" c:identifier="FooObject*"/>
+            <type name="Object" c:type="FooObject*"/>
           </parameter>
         </parameters>
       </method>
       <method name="out" c:identifier="foo_object_out">
         <return-value>
-          <type name="gint" c:identifier="gint"/>
+          <type name="gint" c:type="gint"/>
         </return-value>
         <parameters>
           <parameter name="object">
-            <type name="Object*" c:identifier="FooObject*"/>
+            <type name="Object" c:type="FooObject*"/>
           </parameter>
           <parameter name="outarg" direction="out">
-            <type name="int*" c:identifier="int*"/>
+            <type name="int" c:type="int*"/>
           </parameter>
         </parameters>
       </method>
       <method name="create_object" c:identifier="foo_object_create_object">
         <return-value>
-          <type name="GLib.Object*" c:identifier="GObject*"/>
+          <type name="GLib.Object" c:type="GObject*"/>
         </return-value>
         <parameters>
           <parameter name="object">
-            <type name="Object*" c:identifier="FooObject*"/>
+            <type name="Object" c:type="FooObject*"/>
           </parameter>
         </parameters>
       </method>
       <method name="inout" c:identifier="foo_object_inout">
         <return-value>
-          <type name="gint" c:identifier="gint"/>
+          <type name="gint" c:type="gint"/>
         </return-value>
         <parameters>
           <parameter name="object">
-            <type name="Object*" c:identifier="FooObject*"/>
+            <type name="Object" c:type="FooObject*"/>
           </parameter>
           <parameter name="inoutarg" direction="inout">
-            <type name="int*" c:identifier="int*"/>
+            <type name="int" c:type="int*"/>
           </parameter>
         </parameters>
       </method>
       <method name="inout2" c:identifier="foo_object_inout2">
         <return-value>
-          <type name="gint" c:identifier="gint"/>
+          <type name="gint" c:type="gint"/>
         </return-value>
         <parameters>
           <parameter name="object">
-            <type name="Object*" c:identifier="FooObject*"/>
+            <type name="Object" c:type="FooObject*"/>
           </parameter>
           <parameter name="inoutarg">
-            <type name="int*" c:identifier="int*"/>
+            <type name="int" c:type="int*"/>
           </parameter>
         </parameters>
       </method>
       <method name="inout3" c:identifier="foo_object_inout3">
         <return-value>
-          <type name="gint" c:identifier="gint"/>
+          <type name="gint" c:type="gint"/>
         </return-value>
         <parameters>
           <parameter name="object">
-            <type name="Object*" c:identifier="FooObject*"/>
+            <type name="Object" c:type="FooObject*"/>
           </parameter>
           <parameter name="inoutarg" direction="inout">
-            <type name="int*" c:identifier="int*"/>
+            <type name="int" c:type="int*"/>
           </parameter>
         </parameters>
       </method>
       <method name="in" c:identifier="foo_object_in">
         <return-value>
-          <type name="gint" c:identifier="gint"/>
+          <type name="gint" c:type="gint"/>
         </return-value>
         <parameters>
           <parameter name="object">
-            <type name="Object*" c:identifier="FooObject*"/>
+            <type name="Object" c:type="FooObject*"/>
           </parameter>
           <parameter name="inarg">
-            <type name="int*" c:identifier="int*"/>
+            <type name="int" c:type="int*"/>
           </parameter>
         </parameters>
       </method>
       <method name="calleeowns" c:identifier="foo_object_calleeowns">
         <return-value>
-          <type name="gint" c:identifier="gint"/>
+          <type name="gint" c:type="gint"/>
         </return-value>
         <parameters>
           <parameter name="object">
-            <type name="Object*" c:identifier="FooObject*"/>
+            <type name="Object" c:type="FooObject*"/>
           </parameter>
           <parameter name="toown" transfer="full">
-            <type name="GLib.Object*" c:identifier="GObject*"/>
+            <type name="GLib.Object" c:type="GObject*"/>
           </parameter>
         </parameters>
       </method>
       <method name="calleesowns" c:identifier="foo_object_calleesowns">
         <return-value>
-          <type name="gint" c:identifier="gint"/>
+          <type name="gint" c:type="gint"/>
         </return-value>
         <parameters>
           <parameter name="object">
-            <type name="Object*" c:identifier="FooObject*"/>
+            <type name="Object" c:type="FooObject*"/>
           </parameter>
           <parameter name="toown1" transfer="full">
-            <type name="GLib.Object*" c:identifier="GObject*"/>
+            <type name="GLib.Object" c:type="GObject*"/>
           </parameter>
           <parameter name="toown2" transfer="full">
-            <type name="GLib.Object*" c:identifier="GObject*"/>
+            <type name="GLib.Object" c:type="GObject*"/>
           </parameter>
         </parameters>
       </method>
         </return-value>
         <parameters>
           <parameter name="object">
-            <type name="Object*" c:identifier="FooObject*"/>
+            <type name="Object" c:type="FooObject*"/>
           </parameter>
         </parameters>
       </method>
         </return-value>
         <parameters>
           <parameter name="object">
-            <type name="Object*" c:identifier="FooObject*"/>
+            <type name="Object" c:type="FooObject*"/>
           </parameter>
         </parameters>
       </method>
       <property name="string">
-        <type name="gchararray" c:identifier="gchararray"/>
+        <type name="gchararray" c:type="gchararray"/>
       </property>
     </class>
     <class name="Subobject"
+           c:type="FooSubobject"
            parent="Object"
            glib:type-name="FooSubobject"
            glib:get-type="foo_subobject_get_type">
       <constructor name="new" c:identifier="foo_subobject_new">
         <return-value>
-          <type name="Subobject*" c:identifier="FooSubobject*"/>
+          <type name="Subobject" c:type="FooSubobject*"/>
         </return-value>
       </constructor>
     </class>
     <enumeration name="EnumType"
+                 c:type="FooEnumType"
                  glib:type-name="FooEnumType"
                  glib:get-type="foo_enum_type_get_type">
       <member name="FOO_ENUM_ALPHA" value="0" glib:nick="alpha"/>
     </enumeration>
     <function name="enum_type_method" c:identifier="foo_enum_type_method">
       <return-value>
-        <type name="int" c:identifier="int"/>
+        <type name="int" c:type="int"/>
       </return-value>
       <parameters>
         <parameter name="foo_enum">
-          <type name="EnumType" c:identifier="FooEnumType"/>
+          <type name="EnumType" c:type="FooEnumType"/>
         </parameter>
       </parameters>
     </function>
     <bitfield name="FlagsType"
+              c:type="FooFlagsType"
               glib:type-name="FooFlagsType"
               glib:get-type="foo_flags_type_get_type">
       <member name="FOO_FLAGS_FIRST" value="1" glib:nick="first"/>
       <member name="FOO_FLAGS_SECOND" value="2" glib:nick="second"/>
       <member name="FOO_FLAGS_THIRD" value="4" glib:nick="third"/>
     </bitfield>
-    <enumeration name="EnumNoType">
+    <enumeration name="EnumNoType" c:type="FooEnumNoType">
       <member name="FOO_ENUM_UN" value="1"/>
       <member name="FOO_ENUM_DEUX" value="2"/>
       <member name="FOO_ENUM_TROIS" value="3"/>
     </enumeration>
-    <glib:boxed glib:name="Boxed"
+    <glib:boxed c:type="Boxed"
+                glib:name="Boxed"
                 glib:type-name="FooBoxed"
                 glib:get-type="foo_boxed_get_type">
       <constructor name="new" c:identifier="foo_boxed_new">
         <return-value>
-          <type name="Boxed*" c:identifier="FooBoxed*"/>
+          <type name="Boxed" c:type="FooBoxed*"/>
         </return-value>
       </constructor>
       <method name="method" c:identifier="foo_boxed_method">
         <return-value>
-          <type name="void" c:identifier="void"/>
+          <type name="void" c:type="void"/>
         </return-value>
         <parameters>
           <parameter name="boxed">
-            <type name="Boxed*" c:identifier="FooBoxed*"/>
+            <type name="Boxed" c:type="FooBoxed*"/>
           </parameter>
         </parameters>
       </method>
     </glib:boxed>
     <callback name="FooCallback">
       <return-value>
-        <type name="gboolean" c:identifier="gboolean"/>
+        <type name="gboolean" c:type="gboolean"/>
       </return-value>
       <parameters>
         <parameter name="foo">
-          <type name="FooObject*" c:identifier="FooObject*"/>
+          <type name="FooObject*" c:type="FooObject*"/>
         </parameter>
         <parameter name="b">
-          <type name="gboolean" c:identifier="gboolean"/>
+          <type name="gboolean" c:type="gboolean"/>
         </parameter>
         <parameter name="data">
-          <type name="gpointer" c:identifier="gpointer"/>
+          <type name="gpointer" c:type="gpointer"/>
         </parameter>
       </parameters>
     </callback>
index 6240c9e..25e9050 100644 (file)
@@ -4,6 +4,7 @@
             xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
   <namespace name="utility">
     <class name="Object"
+           c:type="UtilityObject"
            parent="GLib.Object"
            glib:type-name="UtilityObject"
            glib:get-type="utility_object_get_type">