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 e67596de3e8b4a10d662491cbbc3dbb0ea355056..75992a3842cada0491294bb7d13b610e073035d0 100644 |
--- a/mojo/public/tools/bindings/generators/mojom_python_generator.py |
+++ b/mojo/public/tools/bindings/generators/mojom_python_generator.py |
@@ -12,60 +12,44 @@ |
from mojom.generate.template_expander import UseJinja |
_kind_to_type = { |
- mojom.BOOL: '_descriptor.TYPE_BOOL', |
- mojom.INT8: '_descriptor.TYPE_INT8', |
- mojom.UINT8: '_descriptor.TYPE_UINT8', |
- mojom.INT16: '_descriptor.TYPE_INT16', |
- mojom.UINT16: '_descriptor.TYPE_UINT16', |
- mojom.INT32: '_descriptor.TYPE_INT32', |
- mojom.UINT32: '_descriptor.TYPE_UINT32', |
- mojom.INT64: '_descriptor.TYPE_INT64', |
- mojom.UINT64: '_descriptor.TYPE_UINT64', |
- mojom.FLOAT: '_descriptor.TYPE_FLOAT', |
- mojom.DOUBLE: '_descriptor.TYPE_DOUBLE', |
- mojom.STRING: '_descriptor.TYPE_STRING', |
- mojom.NULLABLE_STRING: '_descriptor.TYPE_NULLABLE_STRING', |
- mojom.HANDLE: '_descriptor.TYPE_HANDLE', |
- mojom.DCPIPE: '_descriptor.TYPE_HANDLE', |
- mojom.DPPIPE: '_descriptor.TYPE_HANDLE', |
- mojom.MSGPIPE: '_descriptor.TYPE_HANDLE', |
- mojom.SHAREDBUFFER: '_descriptor.TYPE_HANDLE', |
- mojom.NULLABLE_HANDLE: '_descriptor.TYPE_NULLABLE_HANDLE', |
- mojom.NULLABLE_DCPIPE: '_descriptor.TYPE_NULLABLE_HANDLE', |
- mojom.NULLABLE_DPPIPE: '_descriptor.TYPE_NULLABLE_HANDLE', |
- mojom.NULLABLE_MSGPIPE: '_descriptor.TYPE_NULLABLE_HANDLE', |
- mojom.NULLABLE_SHAREDBUFFER: '_descriptor.TYPE_NULLABLE_HANDLE', |
+ mojom.BOOL: "_descriptor.TYPE_BOOL", |
+ mojom.INT8: "_descriptor.TYPE_INT8", |
+ mojom.UINT8: "_descriptor.TYPE_UINT8", |
+ mojom.INT16: "_descriptor.TYPE_INT16", |
+ mojom.UINT16: "_descriptor.TYPE_UINT16", |
+ mojom.INT32: "_descriptor.TYPE_INT32", |
+ mojom.UINT32: "_descriptor.TYPE_UINT32", |
+ mojom.INT64: "_descriptor.TYPE_INT64", |
+ mojom.UINT64: "_descriptor.TYPE_UINT64", |
+ mojom.FLOAT: "_descriptor.TYPE_FLOAT", |
+ mojom.DOUBLE: "_descriptor.TYPE_DOUBLE", |
+ mojom.STRING: "_descriptor.TYPE_STRING", |
+ mojom.NULLABLE_STRING: "_descriptor.TYPE_NULLABLE_STRING", |
+ mojom.HANDLE: "_descriptor.TYPE_HANDLE", |
+ mojom.DCPIPE: "_descriptor.TYPE_HANDLE", |
+ mojom.DPPIPE: "_descriptor.TYPE_HANDLE", |
+ mojom.MSGPIPE: "_descriptor.TYPE_HANDLE", |
+ mojom.SHAREDBUFFER: "_descriptor.TYPE_HANDLE", |
+ mojom.NULLABLE_HANDLE: "_descriptor.TYPE_NULLABLE_HANDLE", |
+ mojom.NULLABLE_DCPIPE: "_descriptor.TYPE_NULLABLE_HANDLE", |
+ mojom.NULLABLE_DPPIPE: "_descriptor.TYPE_NULLABLE_HANDLE", |
+ mojom.NULLABLE_MSGPIPE: "_descriptor.TYPE_NULLABLE_HANDLE", |
+ 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_for_native_array = { |
- mojom.INT8: 'b', |
- mojom.UINT8: 'B', |
- mojom.INT16: 'h', |
- mojom.UINT16: 'H', |
- mojom.INT32: 'i', |
- mojom.UINT32: 'I', |
- mojom.FLOAT: 'f', |
- mojom.DOUBLE: 'd', |
+_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'", |
} |
- |
-_kind_to_typecode = dict(_kind_to_typecode_for_native_array) |
-_kind_to_typecode.update({ |
- mojom.INT64: 'q', |
- mojom.UINT64: 'Q', |
- mojom.HANDLE: 'i', |
- mojom.DCPIPE: 'i', |
- mojom.DPPIPE: 'i', |
- mojom.MSGPIPE: 'i', |
- mojom.SHAREDBUFFER: 'i', |
- mojom.NULLABLE_HANDLE: 'i', |
- mojom.NULLABLE_DCPIPE: 'i', |
- mojom.NULLABLE_DPPIPE: 'i', |
- mojom.NULLABLE_MSGPIPE: 'i', |
- mojom.NULLABLE_SHAREDBUFFER: 'i', |
-}) |
def NameToComponent(name): |
@@ -115,8 +99,8 @@ |
if token.value == 'double.NAN' or token.value == 'float.NAN': |
return 'float(\'nan\')'; |
- if token in ['true', 'false']: |
- return str(token == 'true') |
+ if token in ["true", "false"]: |
+ return str(token == "true") |
return token |
@@ -129,54 +113,43 @@ |
def GetFieldType(kind, field=None): |
if mojom.IsAnyArrayKind(kind): |
- arguments = [] |
- if kind.kind in _kind_to_typecode_for_native_array: |
- arguments.append('%r' %_kind_to_typecode_for_native_array[kind.kind]) |
- elif kind.kind != mojom.BOOL: |
- arguments.append(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') |
+ arguments.append("nullable=True") |
if mojom.IsFixedArrayKind(kind): |
- arguments.append('length=%d' % kind.length) |
- array_type = 'GenericArrayType' |
- if kind.kind == mojom.BOOL: |
- array_type = 'BooleanArrayType' |
- elif kind.kind in _kind_to_typecode_for_native_array: |
- array_type = 'NativeArrayType' |
- return '_descriptor.%s(%s)' % (array_type, ', '.join(arguments)) |
+ arguments.append("length=%d" % kind.length) |
+ 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) ] |
if mojom.IsNullableKind(kind): |
- arguments.append('nullable=True') |
- return '_descriptor.StructType(%s)' % ', '.join(arguments) |
+ arguments.append("nullable=True") |
+ return "_descriptor.StructType(%s)" % ", ".join(arguments) |
if mojom.IsEnumKind(kind): |
return GetFieldType(mojom.INT32) |
- return _kind_to_type.get(kind, '_descriptor.TYPE_NONE') |
+ return _kind_to_type.get(kind, "_descriptor.TYPE_NONE") |
def GetFieldDescriptor(packed_field): |
field = packed_field.field |
- class_name = 'SingleFieldGroup' |
+ arguments = [ '\'%s\'' % field.name ] |
+ arguments.append(GetFieldType(field.kind, field)) |
+ arguments.append(str(packed_field.offset)) |
if field.kind == mojom.BOOL: |
- class_name = 'FieldDescriptor' |
- arguments = [ '%r' % field.name ] |
- arguments.append(GetFieldType(field.kind, field)) |
- arguments.append(str(packed_field.field.ordinal)) |
+ arguments.append('bit_offset=%d' % packed_field.bit) |
if field.default: |
if mojom.IsStructKind(field.kind): |
arguments.append('default_value=True') |
else: |
arguments.append('default_value=%s' % ExpressionToText(field.default)) |
- return '_descriptor.%s(%s)' % (class_name, ', '.join(arguments)) |
- |
-def GetFieldGroup(byte): |
- if len(byte.packed_fields) > 1: |
- descriptors = map(GetFieldDescriptor, byte.packed_fields) |
- return '_descriptor.BooleanGroup([%s])' % ', '.join(descriptors) |
- assert len(byte.packed_fields) == 1 |
- return GetFieldDescriptor(byte.packed_fields[0]) |
+ return '_descriptor.FieldDescriptor(%s)' % ', '.join(arguments) |
def ComputeStaticValues(module): |
in_progress = set() |
@@ -256,12 +229,11 @@ |
return module |
- |
class Generator(generator.Generator): |
python_filters = { |
'expression_to_text': ExpressionToText, |
- 'field_group': GetFieldGroup, |
+ 'field_descriptor': GetFieldDescriptor, |
'name': GetNameForElement, |
} |