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

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

Issue 1751563002: Mojo C++ bindings: support mapping mojo string to WTF::String. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 10 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 22e089ccae7483bb608b9b423f446690752a49f7..32ec5be40e5d7a58a8b385dbe0b91aec944643e5 100644
--- a/mojo/public/tools/bindings/generators/mojom_cpp_generator.py
+++ b/mojo/public/tools/bindings/generators/mojom_cpp_generator.py
@@ -42,9 +42,10 @@ _kind_to_cpp_literal_suffix = {
mojom.UINT64: "ULL",
}
-# TODO(rockot): Get rid of this global. This requires some refactoring of the
+# TODO(rockot): Get rid of these globals. This requires some refactoring of the
# generator library code so that filters can use the generator as context.
_current_typemap = {}
+_use_wtf_types = False
def ConstantValue(constant):
@@ -56,9 +57,10 @@ def DefaultValue(field):
assert field.default == "default"
return "%s::New()" % GetNameForKind(field.kind)
return ExpressionToText(field.default, kind=field.kind)
- if (mojom.IsStringKind(field.kind) or mojom.IsArrayKind(field.kind) or
- mojom.IsMapKind(field.kind)):
+ if mojom.IsArrayKind(field.kind) or mojom.IsMapKind(field.kind):
return "nullptr";
+ if mojom.IsStringKind(field.kind):
+ return "" if _use_wtf_types else "nullptr"
return ""
def NamespaceToArray(namespace):
@@ -184,7 +186,7 @@ def GetCppArrayArgWrapperType(kind):
raise Exception("Arrays of associated interface requests not yet "
"supported!")
if mojom.IsStringKind(kind):
- return "mojo::String"
+ return "WTF::String" if _use_wtf_types else "mojo::String"
if mojom.IsGenericHandleKind(kind):
return "mojo::ScopedHandle"
if mojom.IsDataPipeConsumerKind(kind):
@@ -220,7 +222,7 @@ def GetCppResultWrapperType(kind):
if mojom.IsAssociatedInterfaceRequestKind(kind):
return "%sAssociatedRequest" % GetNameForKind(kind.kind)
if mojom.IsStringKind(kind):
- return "mojo::String"
+ return "WTF::String" if _use_wtf_types else "mojo::String"
if mojom.IsGenericHandleKind(kind):
return "mojo::ScopedHandle"
if mojom.IsDataPipeConsumerKind(kind):
@@ -262,7 +264,7 @@ def GetCppWrapperType(kind):
if mojom.IsAssociatedInterfaceRequestKind(kind):
return "%sAssociatedRequest" % GetNameForKind(kind.kind)
if mojom.IsStringKind(kind):
- return "mojo::String"
+ return "WTF::String" if _use_wtf_types else "mojo::String"
if mojom.IsGenericHandleKind(kind):
return "mojo::ScopedHandle"
if mojom.IsDataPipeConsumerKind(kind):
@@ -298,7 +300,7 @@ def GetCppConstWrapperType(kind):
if mojom.IsEnumKind(kind):
return GetNameForKind(kind)
if mojom.IsStringKind(kind):
- return "const mojo::String&"
+ return "const WTF::String&" if _use_wtf_types else "const mojo::String&"
if mojom.IsGenericHandleKind(kind):
return "mojo::ScopedHandle"
if mojom.IsDataPipeConsumerKind(kind):
@@ -522,6 +524,7 @@ class Generator(generator.Generator):
"interfaces": self.GetInterfaces(),
"variant": self.variant,
"extra_headers": self.GetExtraHeaders(),
+ "use_wtf_types": self.use_wtf_types,
}
@staticmethod
@@ -547,6 +550,8 @@ class Generator(generator.Generator):
def GenerateFiles(self, args):
global _current_typemap
_current_typemap = self.typemap
+ global _use_wtf_types
+ _use_wtf_types = self.use_wtf_types
suffix = "-%s" % self.variant if self.variant else ""
self.Write(self.GenerateModuleHeader(),
self.MatchMojomFilePath("%s%s.h" % (self.module.name, suffix)))

Powered by Google App Engine
This is Rietveld 408576698