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

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

Issue 611633002: mojom: Add associative arrays to the mojom language. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix gn build. Created 6 years, 2 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 e5f5e9de9dff0059181dedfbf5699552aa2461e0..9e62ec5a867910252e7e9b605677a5486558c722 100644
--- a/mojo/public/tools/bindings/generators/mojom_cpp_generator.py
+++ b/mojo/public/tools/bindings/generators/mojom_cpp_generator.py
@@ -92,6 +92,9 @@ def GetCppArrayArgWrapperType(kind):
return "%sPtr" % GetNameForKind(kind)
if mojom.IsAnyArrayKind(kind):
return "mojo::Array<%s> " % GetCppArrayArgWrapperType(kind.kind)
+ if mojom.IsMapKind(kind):
+ return "mojo::Map<%s, %s> " % (GetCppArrayArgWrapperType(kind.key_kind),
+ GetCppArrayArgWrapperType(kind.value_kind))
if mojom.IsInterfaceKind(kind):
raise Exception("Arrays of interfaces not yet supported!")
if mojom.IsInterfaceRequestKind(kind):
@@ -117,6 +120,9 @@ def GetCppResultWrapperType(kind):
return "%sPtr" % GetNameForKind(kind)
if mojom.IsAnyArrayKind(kind):
return "mojo::Array<%s>" % GetCppArrayArgWrapperType(kind.kind)
+ if mojom.IsMapKind(kind):
+ return "mojo::Map<%s, %s>" % (GetCppArrayArgWrapperType(kind.key_kind),
+ GetCppArrayArgWrapperType(kind.value_kind))
if mojom.IsInterfaceKind(kind):
return "%sPtr" % GetNameForKind(kind)
if mojom.IsInterfaceRequestKind(kind):
@@ -142,6 +148,9 @@ def GetCppWrapperType(kind):
return "%sPtr" % GetNameForKind(kind)
if mojom.IsAnyArrayKind(kind):
return "mojo::Array<%s>" % GetCppArrayArgWrapperType(kind.kind)
+ if mojom.IsMapKind(kind):
+ return "mojo::Map<%s, %s>" % (GetCppArrayArgWrapperType(kind.key_kind),
+ GetCppArrayArgWrapperType(kind.value_kind))
if mojom.IsInterfaceKind(kind):
return "%sPtr" % GetNameForKind(kind)
if mojom.IsInterfaceRequestKind(kind):
@@ -165,6 +174,9 @@ def GetCppConstWrapperType(kind):
return "%sPtr" % GetNameForKind(kind)
if mojom.IsAnyArrayKind(kind):
return "mojo::Array<%s>" % GetCppArrayArgWrapperType(kind.kind)
+ if mojom.IsMapKind(kind):
+ return "mojo::Map<%s, %s>" % (GetCppArrayArgWrapperType(kind.key_kind),
+ GetCppArrayArgWrapperType(kind.value_kind))
if mojom.IsInterfaceKind(kind):
return "%sPtr" % GetNameForKind(kind)
if mojom.IsInterfaceRequestKind(kind):
@@ -268,6 +280,14 @@ def GetArrayValidateParams(kind):
'true' if element_is_nullable else 'false',
element_validate_params)
+def GetMapValidateParams(kind):
+ # Unlike GetArrayValidateParams, we are given the wrapped kind, instead of
+ # the raw array kind. So we wrap the return value of GetArrayValidateParams.
+ element_is_nullable = mojom.IsNullableKind(kind)
+ return "mojo::internal::ArrayValidateParams<0, %s,\n%s> " % (
+ 'true' if element_is_nullable else 'false',
+ GetArrayValidateParams(kind))
+
_HEADER_SIZE = 8
class Generator(generator.Generator):
@@ -284,6 +304,7 @@ class Generator(generator.Generator):
"expected_array_size": generator.ExpectedArraySize,
"expression_to_text": ExpressionToText,
"get_array_validate_params": GetArrayValidateParams,
+ "get_map_validate_params": GetMapValidateParams,
"get_name_for_kind": GetNameForKind,
"get_pad": pack.GetPad,
"has_callbacks": mojom.HasCallbacks,
@@ -294,6 +315,7 @@ class Generator(generator.Generator):
"is_any_handle_kind": mojom.IsAnyHandleKind,
"is_interface_kind": mojom.IsInterfaceKind,
"is_interface_request_kind": mojom.IsInterfaceRequestKind,
+ "is_map_kind": mojom.IsMapKind,
"is_nullable_kind": mojom.IsNullableKind,
"is_object_kind": mojom.IsObjectKind,
"is_string_kind": mojom.IsStringKind,

Powered by Google App Engine
This is Rietveld 408576698