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 c75013badf88a19cab5a678a1b77174e20c877fc..a780e880cbf67c52d44d8d42efd643358e445360 100644 |
--- a/mojo/public/tools/bindings/generators/mojom_cpp_generator.py |
+++ b/mojo/public/tools/bindings/generators/mojom_cpp_generator.py |
@@ -482,6 +482,17 @@ def ShouldInlineUnion(union): |
mojom.IsReferenceKind(field.kind) and not mojom.IsStringKind(field.kind) |
for field in union.fields) |
+ |
+def GetNumConstructorParams(kind): |
+ for i, field in enumerate(kind.fields): |
+ # Types that are neither copyable nor movable can't be passed to a struct |
+ # constructor so any constructors containing such a kind are skipped. |
+ if (mojom.IsStructKind(field.kind) and IsTypemappedKind(field.kind) and |
yzshen1
2017/02/14 17:21:53
I think there is no need to check IsStructKind(),
Sam McNally
2017/02/15 06:35:49
Done.
|
+ _current_typemap[GetFullMojomNameForKind(field.kind)]["emplace_only"]): |
+ return i |
+ return len(kind.fields) + 1 |
+ |
+ |
def GetContainerValidateParamsCtorArgs(kind): |
if mojom.IsStringKind(kind): |
expected_num_elements = 0 |
@@ -571,6 +582,7 @@ class Generator(generator.Generator): |
"is_struct_kind": mojom.IsStructKind, |
"is_typemapped_kind": IsTypemappedKind, |
"is_union_kind": mojom.IsUnionKind, |
+ "num_constructor_params": GetNumConstructorParams, |
"passes_associated_kinds": mojom.PassesAssociatedKinds, |
"stylize_method": generator.StudlyCapsToCamel, |
"under_to_camel": generator.UnderToCamel, |