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

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

Issue 397453004: Mojo: Correctly handle large unsigned integer literals. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: ULL Created 6 years, 5 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_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,

Powered by Google App Engine
This is Rietveld 408576698