summaryrefslogtreecommitdiff
path: root/giscanner/transformer.py
diff options
context:
space:
mode:
authorJohan Dahlin <jdahlin@async.com.br>2009-01-12 23:24:01 +0000
committerJohan Dahlin <johan@src.gnome.org>2009-01-12 23:24:01 +0000
commit9256e916164ec557ed66f92a0d6d95bb286cdf8b (patch)
treee481541d55ca9eafb63684f2ee41d48096b8eac5 /giscanner/transformer.py
parente81c4681cc88a00fcd841c5a68d860d3714b55d7 (diff)
downloadgobject-introspection-9256e916164ec557ed66f92a0d6d95bb286cdf8b.tar.gz
Bug 563591 – Flags not recognized when there is no introspection data
2009-01-12 Johan Dahlin <jdahlin@async.com.br> Bug 563591 – Flags not recognized when there is no introspection data * giscanner/ast.py: * giscanner/girwriter.py: * giscanner/giscannermodule.c (type_get_is_bitfield): * giscanner/glibast.py: * giscanner/glibtransformer.py: * giscanner/scannerparser.y: * giscanner/sourcescanner.c (gi_source_type_copy): * giscanner/sourcescanner.h: * giscanner/sourcescanner.py: * giscanner/transformer.py: * tests/scanner/foo-1.0-expected.gir: * tests/scanner/foo-1.0-expected.tgir: * tests/scanner/foo.h: Large parts of this patch was done by Jürg Billeter. svn path=/trunk/; revision=1025
Diffstat (limited to 'giscanner/transformer.py')
-rw-r--r--giscanner/transformer.py12
1 files changed, 8 insertions, 4 deletions
diff --git a/giscanner/transformer.py b/giscanner/transformer.py
index 8e335ff6..b7e8c5df 100644
--- a/giscanner/transformer.py
+++ b/giscanner/transformer.py
@@ -20,7 +20,7 @@
import os
-from .ast import (Callback, Enum, Function, Namespace, Member,
+from .ast import (Bitfield, Callback, Enum, Function, Namespace, Member,
Parameter, Return, Struct, Field,
Type, Array, Alias, Interface, Class, Node, Union,
Varargs, Constant, type_name_from_ctype,
@@ -210,9 +210,13 @@ class Transformer(object):
child.ident))
enum_name = self.remove_prefix(symbol.ident)
- enum = Enum(enum_name, symbol.ident, members)
- self._names.type_names[symbol.ident] = (None, enum)
- return enum
+ if symbol.base_type.is_bitfield:
+ klass = Bitfield
+ else:
+ klass = Enum
+ node = klass(enum_name, symbol.ident, members)
+ self._names.type_names[symbol.ident] = (None, node)
+ return node
def _create_object(self, symbol):
return Member(symbol.ident, symbol.base_type.name,