[gobject-introspection/wip/transformer] Fix array and transfer parsing



commit 015cd0012213dee5fc0678a2bab0b61052cea0eb
Author: Colin Walters <walters verbum org>
Date:   Thu Jul 29 18:03:45 2010 -0400

    Fix array and transfer parsing

 giscanner/primarytransformer.py |   15 ++++++++++++---
 1 files changed, 12 insertions(+), 3 deletions(-)
---
diff --git a/giscanner/primarytransformer.py b/giscanner/primarytransformer.py
index b3d2453..2ce0610 100644
--- a/giscanner/primarytransformer.py
+++ b/giscanner/primarytransformer.py
@@ -241,7 +241,11 @@ class PrimaryTransformer(object):
             # Explicitly erase ctype since it's no longer valid
             element_type_node.ctype = None
 
-        container_type = Array(None, element_type_node,
+        if isinstance(node.type, Array):
+            name = node.type.array_type
+        else:
+            name = None
+        container_type = Array(name, element_type_node,
                                ctype=node.type.ctype,
                                is_const=node.type.is_const)
         if OPT_ARRAY_ZERO_TERMINATED in array_values:
@@ -270,7 +274,7 @@ class PrimaryTransformer(object):
         element_type = element_type_opt.flat()
         if isinstance(node.type, List):
             assert len(element_type) == 1
-            node.element_type = self._resolve(element_type[0])
+            node.type.element_type = self._resolve(element_type[0])
         elif isinstance(node.type, Map):
             assert len(element_type) == 2
             node.type.key_type = self._resolve(element_type[0])
@@ -325,7 +329,12 @@ class PrimaryTransformer(object):
         options = getattr(tag, 'options', {})
         (node.direction, node.caller_allocates) = \
             self._extract_direction(node, options)
-        node.transfer = self._get_transfer_default(parent, node, options)
+        transfer_tag = options.get(TAG_TRANSFER)
+        if transfer_tag:
+            node.transfer = transfer_tag.one()
+        else:
+            node.transfer = self._get_transfer_default(parent, node, options)
+            
         self._adjust_container_type(parent, node, options)
         param_type = options.get(OPT_TYPE)
         if param_type:



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