Chromium Code Reviews| Index: mojo/public/tools/bindings/generators/mojom_cpp_generator.py |
| diff --git a/mojo/public/tools/bindings/generators/mojom_cpp_generator.py b/mojo/public/tools/bindings/generators/mojom_cpp_generator.py |
| index 9a6bbb79148e25fbe39d83d441c9eda9ead553e8..ec06d94db1af4b9635da3d5b11a0835424b0f4a7 100644 |
| --- a/mojo/public/tools/bindings/generators/mojom_cpp_generator.py |
| +++ b/mojo/public/tools/bindings/generators/mojom_cpp_generator.py |
| @@ -29,12 +29,23 @@ _kind_to_cpp_type = { |
| mojom.DOUBLE: "double", |
| } |
| +_kind_to_cpp_literal_suffix = { |
| + mojom.UINT8: "U", |
| + mojom.UINT16: "U", |
| + mojom.UINT32: "U", |
| + mojom.FLOAT: "f", |
| + mojom.UINT64: "U", |
|
viettrungluu
2014/07/15 16:08:26
Maybe this should be "ULL"?
Sam McNally
2014/07/16 01:20:18
Done.
|
| +} |
| + |
| +def ConstantValue(constant): |
| + return ExpressionToText(constant.value, kind=constant.kind) |
| + |
| def DefaultValue(field): |
| if field.default: |
| if isinstance(field.kind, mojom.Struct): |
| assert field.default == "default" |
| return "%s::New()" % GetNameForKind(field.kind) |
| - return ExpressionToText(field.default) |
| + return ExpressionToText(field.default, kind=field.kind) |
| return "" |
| def NamespaceToArray(namespace): |
| @@ -193,7 +204,7 @@ def IsStructWithHandles(struct): |
| return True |
| return False |
| -def TranslateConstants(token): |
| +def TranslateConstants(token, kind): |
| if isinstance(token, (mojom.NamedValue, mojom.EnumValue)): |
| # Both variable and enum constants are constructed like: |
| # Namespace::Struct::CONSTANT_NAME |
| @@ -204,10 +215,10 @@ def TranslateConstants(token): |
| name.append(token.parent_kind.name) |
| name.append(token.name) |
| return "::".join(name) |
| - return token |
| + return '%s%s' % (token, _kind_to_cpp_literal_suffix.get(kind, '')) |
| -def ExpressionToText(value): |
| - return TranslateConstants(value) |
| +def ExpressionToText(value, kind=None): |
| + return TranslateConstants(value, kind) |
| def HasCallbacks(interface): |
| for method in interface.methods: |
| @@ -229,6 +240,7 @@ _HEADER_SIZE = 8 |
| class Generator(generator.Generator): |
| cpp_filters = { |
| + "constant_value": ConstantValue, |
| "cpp_const_wrapper_type": GetCppConstWrapperType, |
| "cpp_field_type": GetCppFieldType, |
| "cpp_pod_type": GetCppPodType, |