gobject-introspection r202 - in trunk: . giscanner



Author: johan
Date: Mon Apr 21 19:53:51 2008
New Revision: 202
URL: http://svn.gnome.org/viewvc/gobject-introspection?rev=202&view=rev

Log:
2008-04-21  Johan Dahlin  <johan gnome org>

    * giscanner/gobjecttreebuilder.py:
    After stripping namespaces, remove the original
    item to avoid duplication (GtkButton struct and Button object)



Modified:
   trunk/ChangeLog
   trunk/giscanner/gobjecttreebuilder.py

Modified: trunk/giscanner/gobjecttreebuilder.py
==============================================================================
--- trunk/giscanner/gobjecttreebuilder.py	(original)
+++ trunk/giscanner/gobjecttreebuilder.py	Mon Apr 21 19:53:51 2008
@@ -21,13 +21,13 @@
     name = _upperstr_pat3.sub(r'\1_\2', name, count=1)
     return name
 
+_libtool_pat = re.compile("dlname='([A-z0-9\.]+)'\n")
+
 def resolve_libtool(libname):
     data = open(libname).read()
-    pos = data.find('dlname=')
-    pos2 = data[pos:].find('\n')
-    real = data[pos:pos+pos2][8:-1]
+    filename = _libtool_pat.search(data).groups()[0]
     libname = os.path.join(os.path.dirname(libname),
-                           '.libs', real)
+                           '.libs', filename)
     return libname
 
 
@@ -102,6 +102,9 @@
             return
         self._output_ns[node_name] = node
 
+    def _remove_attribute(self, name):
+        del self._output_ns[name]
+
     def _get_attribute(self, name):
         return self._output_ns.get(name)
 
@@ -244,7 +247,8 @@
                                           enum_value.value_nick))
 
         klass = (GLibFlags if ftype_id == cgobject.TYPE_FLAGS else GLibEnum)
-        cenum = klass(cgobject.type_name(type_id), members, symbol)
+        type_name = cgobject.type_name(type_id)
+        cenum = klass(type_name, members, symbol)
         self._strip_namespace(cenum)
         self._add_attribute(cenum, replace=True)
 
@@ -253,16 +257,19 @@
         parent_name = cgobject.type_name(cgobject.type_parent(type_id))
         node = GLibObject(type_name, parent_name, [], symbol)
         self._strip_namespace(node)
-        self._add_attribute(node, replace=True)
+        self._add_attribute(node)
+        self._remove_attribute(type_name)
 
     def _introspect_interface(self, type_id, symbol):
         type_name = cgobject.type_name(type_id)
         node = GLibInterface(type_name, [], symbol)
         self._strip_namespace(node)
-        self._add_attribute(node, replace=True)
+        self._add_attribute(node)
+        self._remove_attribute(type_name)
 
     def _introspect_boxed(self, type_id, symbol):
         type_name = cgobject.type_name(type_id)
         node = GLibBoxed(type_name, [], symbol)
         self._strip_namespace(node)
-        self._add_attribute(node, replace=True)
+        self._add_attribute(node)
+        self._remove_attribute(type_name)



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