| Index: mojo/public/tools/bindings/generators/cpp_templates/interface_definition.tmpl
|
| diff --git a/mojo/public/tools/bindings/generators/cpp_templates/interface_definition.tmpl b/mojo/public/tools/bindings/generators/cpp_templates/interface_definition.tmpl
|
| index ef091d6b29ded1c6d3c8af6ea006a417753b9ce1..373434b1d64ccaa9c75f49db117dd1676b029b62 100644
|
| --- a/mojo/public/tools/bindings/generators/cpp_templates/interface_definition.tmpl
|
| +++ b/mojo/public/tools/bindings/generators/cpp_templates/interface_definition.tmpl
|
| @@ -2,10 +2,22 @@
|
| {%- set class_name = interface.name %}
|
| {%- set proxy_name = interface.name ~ "Proxy" %}
|
|
|
| +{%- macro alloc_params(parameters) %}
|
| +{%- for param in parameters %}
|
| +{%- if param.kind|is_object_kind %}
|
| +{{param.kind|cpp_result_type}} p{{loop.index}};
|
| +if (params->{{param.name}}())
|
| + Deserialize_(params->{{param.name}}(), &p{{loop.index}});
|
| +{% endif -%}
|
| +{%- endfor %}
|
| +{%- endmacro %}
|
| +
|
| {%- macro pass_params(parameters) %}
|
| {%- for param in parameters %}
|
| -{%- if param.kind|is_object_kind -%}
|
| -mojo::internal::Wrap(params->{{param.name}}())
|
| +{%- if param.kind|is_string_kind -%}
|
| +p{{loop.index}}
|
| +{%- elif param.kind|is_object_kind -%}
|
| +p{{loop.index}}.Pass()
|
| {%- elif param.kind|is_interface_kind -%}
|
| mojo::MakeProxy<{{param.kind.name}}>(mojo::MakePassable(params->{{param.name}}()).Pass())
|
| {%- elif param.kind|is_handle_kind -%}
|
| @@ -25,8 +37,8 @@ params->{{param.name}}()
|
| {#--- Computes #}
|
| {%- for param in parameters %}
|
| {%- if param.kind|is_object_kind %}
|
| - if (!in_{{param.name}}.is_null())
|
| - payload_size += mojo::internal::Unwrap(in_{{param.name}})->ComputeSize();
|
| + if (in_{{param.name}})
|
| + payload_size += GetSerializedSize_(in_{{param.name}});
|
| {%- endif %}
|
| {%- endfor %}
|
| {%- endmacro %}
|
| @@ -37,9 +49,11 @@ params->{{param.name}}()
|
| {#--- Sets #}
|
| {% for param in parameters %}
|
| {%- if param.kind|is_object_kind %}
|
| - if (!in_{{param.name}}.is_null())
|
| - params->set_{{param.name}}(
|
| - mojo::internal::Unwrap(in_{{param.name}})->Clone(builder.buffer()));
|
| + if (in_{{param.name}}) {
|
| + {{param.kind|cpp_type}} tmp;
|
| + Serialize_(mojo::internal::Forward(in_{{param.name}}), builder.buffer(), &tmp);
|
| + params->set_{{param.name}}(tmp);
|
| + }
|
| {%- elif param.kind|is_interface_kind %}
|
| if (!in_{{param.name}}.get()) {
|
| params->set_{{param.name}}(mojo::MessagePipeHandle());
|
| @@ -95,6 +109,7 @@ bool {{class_name}}_{{method.name}}_ForwardToCallback::Accept(
|
|
|
| if (!params->DecodePointersAndHandles(message))
|
| return false;
|
| + {{alloc_params(method.response_parameters)|indent(2)}}
|
| callback_.Run({{pass_params(method.response_parameters)}});
|
| params->CloseHandles();
|
| return true;
|
| @@ -200,6 +215,7 @@ bool {{class_name}}Stub::Accept(mojo::Message* message) {
|
|
|
| if (!params->DecodePointersAndHandles(message))
|
| return false;
|
| + {{alloc_params(method.parameters)|indent(6)}}
|
| sink_->{{method.name}}({{pass_params(method.parameters)}});
|
| params->CloseHandles();
|
| return true;
|
| @@ -230,6 +246,7 @@ bool {{class_name}}Stub::AcceptWithResponder(
|
| new {{class_name}}_{{method.name}}_ProxyToResponder(
|
| message->request_id(), responder);
|
| {{interface_macros.declare_callback(method)}} callback(runnable);
|
| + {{alloc_params(method.parameters)|indent(6)}}
|
| sink_->{{method.name}}(
|
| {%- if method.parameters -%}{{pass_params(method.parameters)}}, {% endif -%}callback);
|
| params->CloseHandles();
|
|
|