summaryrefslogtreecommitdiff
path: root/giscanner/transformer.py
diff options
context:
space:
mode:
authorAlban Browaeys <prahal@yahoo.com>2012-06-29 04:38:04 +0200
committerTomeu Vizoso <tomeu.vizoso@collabora.com>2012-08-03 13:57:19 +0200
commit8b4d1acc40c03ddb0255b6a9f10ee5d731b39016 (patch)
treee289efa198d3bf4d48b7f024c2edcae2a12add60 /giscanner/transformer.py
parentbeb5c820139693c85f4e5277a7c430dd6042fbcb (diff)
downloadgobject-introspection-8b4d1acc40c03ddb0255b6a9f10ee5d731b39016.tar.gz
scanner: handle unsigned properly for type of defined size
Diffstat (limited to 'giscanner/transformer.py')
-rw-r--r--giscanner/transformer.py18
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, )