Index: mojo/public/tools/bindings/generators/mojom_python_generator.py |
diff --git a/mojo/public/tools/bindings/generators/mojom_python_generator.py b/mojo/public/tools/bindings/generators/mojom_python_generator.py |
index 9417298d4b3cf5d01f8b098658b4379ebe3090de..75992a3842cada0491294bb7d13b610e073035d0 100644 |
--- a/mojo/public/tools/bindings/generators/mojom_python_generator.py |
+++ b/mojo/public/tools/bindings/generators/mojom_python_generator.py |
@@ -37,6 +37,20 @@ _kind_to_type = { |
mojom.NULLABLE_SHAREDBUFFER: "_descriptor.TYPE_NULLABLE_HANDLE", |
} |
+# int64 integers are not handled by array.array. int64/uint64 array are |
+# supported but storage is not optimized (ie. they are plain python list, not |
+# array.array) |
+_kind_to_typecode = { |
+ mojom.INT8: "'b'", |
+ mojom.UINT8: "'B'", |
+ mojom.INT16: "'h'", |
+ mojom.UINT16: "'H'", |
+ mojom.INT32: "'i'", |
+ mojom.UINT32: "'I'", |
+ mojom.FLOAT: "'f'", |
+ mojom.DOUBLE: "'d'", |
+} |
+ |
def NameToComponent(name): |
# insert '_' between anything and a Title name (e.g, HTTPEntry2FooBar -> |
@@ -99,12 +113,18 @@ def GetStructClass(kind): |
def GetFieldType(kind, field=None): |
if mojom.IsAnyArrayKind(kind): |
- arguments = [ GetFieldType(kind.kind) ] |
+ if kind.kind in _kind_to_typecode: |
+ arguments = [ _kind_to_typecode[kind.kind] ] |
+ else: |
+ arguments = [ GetFieldType(kind.kind) ] |
if mojom.IsNullableKind(kind): |
arguments.append("nullable=True") |
if mojom.IsFixedArrayKind(kind): |
arguments.append("length=%d" % kind.length) |
- return "_descriptor.ArrayType(%s)" % ", ".join(arguments) |
+ if kind.kind in _kind_to_typecode: |
+ return "_descriptor.NativeArrayType(%s)" % ", ".join(arguments) |
+ else: |
+ return "_descriptor.PointerArrayType(%s)" % ", ".join(arguments) |
if mojom.IsStructKind(kind): |
arguments = [ GetStructClass(kind) ] |