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

Side by Side Diff: mojo/public/tools/bindings/generators/cpp_templates/interface_definition.tmpl

Issue 272323003: Mojo: Implement support for |Foo&| mojom syntax (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 6 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 {%- import "interface_macros.tmpl" as interface_macros %} 1 {%- import "interface_macros.tmpl" as interface_macros %}
2 {%- set class_name = interface.name %} 2 {%- set class_name = interface.name %}
3 {%- set proxy_name = interface.name ~ "Proxy" %} 3 {%- set proxy_name = interface.name ~ "Proxy" %}
4 4
5 {%- macro alloc_params(parameters) %} 5 {%- macro alloc_params(parameters) %}
6 {%- for param in parameters %} 6 {%- for param in parameters %}
7 {%- if param.kind|is_object_kind %} 7 {%- if param.kind|is_object_kind %}
8 {{param.kind|cpp_result_type}} p{{loop.index}}; 8 {{param.kind|cpp_result_type}} p{{loop.index}};
9 Deserialize_(params->{{param.name}}.ptr, &p{{loop.index}}); 9 Deserialize_(params->{{param.name}}.ptr, &p{{loop.index}});
10 {% endif -%} 10 {% endif -%}
11 {%- endfor %} 11 {%- endfor %}
12 {%- endmacro %} 12 {%- endmacro %}
13 13
14 {%- macro pass_params(parameters) %} 14 {%- macro pass_params(parameters) %}
15 {%- for param in parameters %} 15 {%- for param in parameters %}
16 {%- if param.kind|is_string_kind -%} 16 {%- if param.kind|is_string_kind -%}
17 p{{loop.index}} 17 p{{loop.index}}
18 {%- elif param.kind|is_object_kind -%} 18 {%- elif param.kind|is_object_kind -%}
19 p{{loop.index}}.Pass() 19 p{{loop.index}}.Pass()
20 {%- elif param.kind|is_interface_kind -%} 20 {%- elif param.kind|is_interface_kind -%}
21 mojo::MakeProxy<{{param.kind.name}}>(mojo::MakeScopedHandle(mojo::internal::Fetc hAndReset(&params->{{param.name}}))) 21 mojo::MakeProxy<{{param.kind.name}}>(mojo::MakeScopedHandle(mojo::internal::Fetc hAndReset(&params->{{param.name}})))
22 {%- elif param.kind|is_interface_request_kind -%}
23 mojo::MakeRequest<{{param.kind.kind.name}}>(mojo::MakeScopedHandle(mojo::interna l::FetchAndReset(&params->{{param.name}})))
22 {%- elif param.kind|is_handle_kind -%} 24 {%- elif param.kind|is_handle_kind -%}
23 mojo::MakeScopedHandle(mojo::internal::FetchAndReset(&params->{{param.name}})) 25 mojo::MakeScopedHandle(mojo::internal::FetchAndReset(&params->{{param.name}}))
24 {%- elif param.kind|is_enum_kind -%} 26 {%- elif param.kind|is_enum_kind -%}
25 static_cast<{{param.kind|cpp_wrapper_type}}>(params->{{param.name}}) 27 static_cast<{{param.kind|cpp_wrapper_type}}>(params->{{param.name}})
26 {%- else -%} 28 {%- else -%}
27 params->{{param.name}} 29 params->{{param.name}}
28 {%- endif -%} 30 {%- endif -%}
29 {%- if not loop.last %}, {% endif %} 31 {%- if not loop.last %}, {% endif %}
30 {%- endfor %} 32 {%- endfor %}
31 {%- endmacro %} 33 {%- endmacro %}
(...skipping 14 matching lines...) Expand all
46 {{params_name}}::New(builder.buffer()); 48 {{params_name}}::New(builder.buffer());
47 {#--- Sets #} 49 {#--- Sets #}
48 {% for param in parameters %} 50 {% for param in parameters %}
49 {%- if param.kind|is_object_kind %} 51 {%- if param.kind|is_object_kind %}
50 Serialize_(mojo::internal::Forward(in_{{param.name}}), builder.buffer(), &para ms->{{param.name}}.ptr); 52 Serialize_(mojo::internal::Forward(in_{{param.name}}), builder.buffer(), &para ms->{{param.name}}.ptr);
51 {%- elif param.kind|is_interface_kind %} 53 {%- elif param.kind|is_interface_kind %}
52 if (!in_{{param.name}}.get()) { 54 if (!in_{{param.name}}.get()) {
53 params->{{param.name}} = mojo::MessagePipeHandle(); 55 params->{{param.name}} = mojo::MessagePipeHandle();
54 } else { 56 } else {
55 // Delegate handle. 57 // Delegate handle.
56 params->{{param.name}} = 58 params->{{param.name}} = in_{{param.name}}.PassMessagePipe().release();
57 in_{{param.name}}.ResetAndReturnMessagePipe().release();
58 } 59 }
60 {%- elif param.kind|is_interface_request_kind %}
61 // Delegate handle.
62 params->{{param.name}} = in_{{param.name}}.PassMessagePipe().release();
59 {%- elif param.kind|is_handle_kind %} 63 {%- elif param.kind|is_handle_kind %}
60 params->{{param.name}} = in_{{param.name}}.release(); 64 params->{{param.name}} = in_{{param.name}}.release();
61 {%- else %} 65 {%- else %}
62 params->{{param.name}} = in_{{param.name}}; 66 params->{{param.name}} = in_{{param.name}};
63 {%- endif %} 67 {%- endif %}
64 {%- endfor %} 68 {%- endfor %}
65 mojo::Message message; 69 mojo::Message message;
66 params->EncodePointersAndHandles(message.mutable_handles()); 70 params->EncodePointersAndHandles(message.mutable_handles());
67 builder.Finish(&message); 71 builder.Finish(&message);
68 {%- endmacro %} 72 {%- endmacro %}
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
261 {% if interface|has_callbacks %} 265 {% if interface|has_callbacks %}
262 {{class_name}}ResponseValidator::{{class_name}}ResponseValidator( 266 {{class_name}}ResponseValidator::{{class_name}}ResponseValidator(
263 mojo::MessageReceiver* sink) : MessageFilter(sink) { 267 mojo::MessageReceiver* sink) : MessageFilter(sink) {
264 } 268 }
265 269
266 bool {{class_name}}ResponseValidator::Accept(mojo::Message* message) { 270 bool {{class_name}}ResponseValidator::Accept(mojo::Message* message) {
267 // TODO(yzshen): implement validation logic. 271 // TODO(yzshen): implement validation logic.
268 return sink_->Accept(message); 272 return sink_->Accept(message);
269 } 273 }
270 {%- endif -%} 274 {%- endif -%}
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698