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..940704afdfddd9a686491111867e481da3d7da64 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: "ULL", |
+} |
+ |
+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, |