[gobject-introspection/wip/transformer] A few fixes to passthrough GLib-2.0.gir



commit df7b6318c15eeae420338ce2e3f4587228b07ee2
Author: Colin Walters <walters verbum org>
Date:   Wed Jul 21 22:29:00 2010 -0400

    A few fixes to passthrough GLib-2.0.gir

 giscanner/girparser.py |   11 ++++++++---
 1 files changed, 8 insertions(+), 3 deletions(-)
---
diff --git a/giscanner/girparser.py b/giscanner/girparser.py
index 113ca49..d969c5b 100644
--- a/giscanner/girparser.py
+++ b/giscanner/girparser.py
@@ -22,7 +22,7 @@ import os
 
 from xml.etree.cElementTree import parse
 
-from .ast import (Alias, Array, Callback, Constant, Enum, Function, Field,
+from .ast import (Alias, Array, Callback, Constant, Enum, Bitfield, Function, Field,
                   Namespace, Parameter, Property, Return, Union, Type, List,
                   VFunction, Record, Varargs, Include, PARAM_DIRECTION_IN,
                   Annotated)
@@ -328,6 +328,8 @@ class GIRParser(object):
             struct = Record(node.attrib['name'],
                             node.attrib.get(_cns('type')),
                             disguised=node.attrib.get('disguised') == '1')
+        if node.attrib.get('foreign') == '1':
+            struct.foreign = True
         self._parse_generic_attribs(node, struct)
         self._namespace.append(struct)
 
@@ -486,10 +488,13 @@ class GIRParser(object):
             else:
                 klass = GLibEnum
         else:
-            klass = Enum
+            if node.tag == _corens('bitfield'):
+                klass = Bitfield
+            else:
+                klass = Enum
             type_name = ctype
         members = []
-        if klass is Enum:
+        if klass in (Enum, Bitfield):
             obj = klass(name, type_name, members)
         else:
             obj = klass(name, type_name, members, get_type)



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