Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(175)

Unified Diff: mojo/public/tools/bindings/generators/mojom_python_generator.py

Issue 576603002: Revert of mojo: Starting serialization for python bindings. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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,
}

Powered by Google App Engine
This is Rietveld 408576698