Teach scanner's girparser about fundamentals
authorPavel Holejsovsky <pholejs@src.gnome.org>
Sat, 13 Aug 2011 11:10:34 +0000 (13:10 +0200)
committerPavel Holejsovsky <pholejs@src.gnome.org>
Tue, 16 Aug 2011 08:43:27 +0000 (10:43 +0200)
Make sure that fundamental attribute and associated
functions (ref-func, unref-func, set-value-func and get-value-func)
are parsed, otherwise we fail reparse-validating girs containing
fundamentals.

giscanner/girparser.py

index d7a59b8..51ef934 100644 (file)
@@ -239,6 +239,14 @@ class GIRParser(object):
         type_struct = node.attrib.get(_glibns('type-struct'))
         if type_struct:
             obj.glib_type_struct = self._namespace.type_from_name(type_struct)
+        if klass == ast.Class:
+            is_fundamental = node.attrib.get(_glibns('fundamental'))
+            if is_fundamental and is_fundamental != '0':
+                obj.fundamental = True
+            for func_id in ['ref-func', 'unref-func',
+                            'set-value-func', 'get-value-func']:
+                func_name = node.attrib.get(_glibns(func_id))
+                obj.__dict__[func_id.replace('-', '_')] = func_name
         self._namespace.append(obj)
 
         if self._types_only: