diff options
author | Alban Browaeys <prahal@yahoo.com> | 2012-06-29 04:38:04 +0200 |
---|---|---|
committer | Tomeu Vizoso <tomeu.vizoso@collabora.com> | 2012-08-03 13:57:19 +0200 |
commit | 8b4d1acc40c03ddb0255b6a9f10ee5d731b39016 (patch) | |
tree | e289efa198d3bf4d48b7f024c2edcae2a12add60 /giscanner/transformer.py | |
parent | beb5c820139693c85f4e5277a7c430dd6042fbcb (diff) | |
download | gobject-introspection-8b4d1acc40c03ddb0255b6a9f10ee5d731b39016.tar.gz |
scanner: handle unsigned properly for type of defined size
Diffstat (limited to 'giscanner/transformer.py')
-rw-r--r-- | giscanner/transformer.py | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/giscanner/transformer.py b/giscanner/transformer.py index 26c7793b..6afad889 100644 --- a/giscanner/transformer.py +++ b/giscanner/transformer.py @@ -723,7 +723,23 @@ raise ValueError.""" typeval = self._create_type_from_base(symbol.base_type) else: typeval = ast.TYPE_INT - value = '%d' % (symbol.const_int, ) + unaliased = typeval + self._resolve_type_from_ctype(unaliased) + if typeval.target_giname and typeval.ctype: + target = self.lookup_giname(typeval.target_giname) + target = self.resolve_aliases(target) + if isinstance(target, ast.Type): + unaliased = target + if unaliased == ast.TYPE_UINT64: + value = str(symbol.const_int % 2**64) + elif unaliased == ast.TYPE_UINT32: + value = str(symbol.const_int % 2**32) + elif unaliased == ast.TYPE_UINT16: + value = str(symbol.const_int % 2**16) + elif unaliased == ast.TYPE_UINT8: + value = str(symbol.const_int % 2**16) + else: + value = str(symbol.const_int) elif symbol.const_double is not None: typeval = ast.TYPE_DOUBLE value = '%f' % (symbol.const_double, ) |