summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--giscanner/ast.py4
-rw-r--r--giscanner/maintransformer.py13
-rw-r--r--giscanner/transformer.py9
3 files changed, 14 insertions, 12 deletions
diff --git a/giscanner/ast.py b/giscanner/ast.py
index 2dff8bd0..44ce523c 100644
--- a/giscanner/ast.py
+++ b/giscanner/ast.py
@@ -109,7 +109,9 @@ in contrast to the other create_type() functions."""
ctype=fundamental.ctype)
if gtype_name == 'GHashTable':
return Map(TYPE_ANY, TYPE_ANY, gtype_name=gtype_name)
- elif gtype_name in ('GArray', 'GPtrArray', 'GByteArray'):
+ elif gtype_name == 'GByteArray':
+ return Array('GLib.ByteArray', TYPE_UINT8, gtype_name=gtype_name)
+ elif gtype_name in ('GArray', 'GPtrArray'):
return Array('GLib.' + gtype_name[1:], TYPE_ANY,
gtype_name=gtype_name)
elif gtype_name == 'GStrv':
diff --git a/giscanner/maintransformer.py b/giscanner/maintransformer.py
index e5e77338..4f6db545 100644
--- a/giscanner/maintransformer.py
+++ b/giscanner/maintransformer.py
@@ -361,14 +361,11 @@ class MainTransformer(object):
message.warn("invalid (element-type) for a GPtrArray, "
"must be a pointer", annotations.position)
- # GByteArrays have (element-type) guint8 by default
- if array_type == ast.Array.GLIB_BYTEARRAY:
- if element_type == ast.TYPE_ANY:
- array.element_type = ast.TYPE_UINT8
- elif element_type not in [ast.TYPE_UINT8, ast.TYPE_INT8, ast.TYPE_CHAR]:
- message.warn("invalid (element-type) for a GByteArray, "
- "must be one of guint8, gint8 or gchar",
- annotations.position)
+ if (array_type == ast.Array.GLIB_BYTEARRAY
+ and element_type not in [ast.TYPE_UINT8, ast.TYPE_INT8, ast.TYPE_CHAR]):
+ message.warn("invalid (element-type) for a GByteArray, "
+ "must be one of guint8, gint8 or gchar",
+ annotations.position)
def _apply_annotations_array(self, parent, node, annotations):
element_type_options = annotations.get(ANN_ELEMENT_TYPE)
diff --git a/giscanner/transformer.py b/giscanner/transformer.py
index 50018cd2..000a4a44 100644
--- a/giscanner/transformer.py
+++ b/giscanner/transformer.py
@@ -669,9 +669,12 @@ raise ValueError."""
name = base
return ast.List(name, ast.TYPE_ANY, ctype=ctype,
is_const=is_const, complete_ctype=complete_ctype)
- elif base in ('GArray', 'GPtrArray', 'GByteArray',
- 'GLib.Array', 'GLib.PtrArray', 'GLib.ByteArray',
- 'GObject.Array', 'GObject.PtrArray', 'GObject.ByteArray'):
+ elif base in ('GByteArray', 'GLib.ByteArray', 'GObject.ByteArray'):
+ return ast.Array('GLib.ByteArray', ast.TYPE_UINT8, ctype=ctype,
+ is_const=is_const, complete_ctype=complete_ctype)
+ elif base in ('GArray', 'GPtrArray',
+ 'GLib.Array', 'GLib.PtrArray',
+ 'GObject.Array', 'GObject.PtrArray'):
if '.' in base:
name = 'GLib.' + base.split('.', 1)[1]
else: