summaryrefslogtreecommitdiff
path: root/giscanner/transformer.py
diff options
context:
space:
mode:
Diffstat (limited to 'giscanner/transformer.py')
-rw-r--r--giscanner/transformer.py13
1 files changed, 8 insertions, 5 deletions
diff --git a/giscanner/transformer.py b/giscanner/transformer.py
index 7562e157..5a6b021b 100644
--- a/giscanner/transformer.py
+++ b/giscanner/transformer.py
@@ -20,7 +20,7 @@
from giscanner.ast import (Callback, Enum, Function, Namespace, Member,
Parameter, Return, Sequence, Struct, Field,
- Type)
+ Type, type_name_from_ctype)
from giscanner.sourcescanner import (
SourceSymbol, ctype_name, symbol_type_name, CTYPE_POINTER,
CTYPE_BASIC_TYPE, CTYPE_UNION, CTYPE_ARRAY,
@@ -205,8 +205,9 @@ class Transformer(object):
return node
def _create_type(self, source_type):
- type_name = self._create_source_type(source_type)
- return Type(type_name)
+ ctype = self._create_source_type(source_type)
+ type_name = type_name_from_ctype(ctype)
+ return Type(type_name, ctype)
def _create_parameter(self, symbol, options):
ptype = self._create_type(symbol.base_type)
@@ -228,7 +229,7 @@ class Transformer(object):
def _create_return(self, source_type, options=None):
if not options:
options = []
- rtype = Type(self._create_source_type(source_type))
+ rtype = self._create_type(source_type)
rtype = self._resolve_param_type(rtype)
return_ = Return(rtype)
for option in options:
@@ -237,7 +238,9 @@ class Transformer(object):
elif option.startswith('seq '):
value, element_options = option[3:].split(None, 2)
element_type = self._parse_type_annotation(value)
- seq = Sequence(rtype.name, element_type)
+ seq = Sequence(rtype.name,
+ type_name_from_ctype(rtype.name),
+ element_type)
seq.transfer = True
return_.type = seq
else: