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

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

Issue 884043003: Cpp bindings: add typedef for callbacks. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 5 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 unified diff | Download patch
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 {%- set namespace_as_string = "%s"|format(namespace|replace(".","::")) %} 4 {%- set namespace_as_string = "%s"|format(namespace|replace(".","::")) %}
5 5
6 {%- macro alloc_params(parameters) %} 6 {%- macro alloc_params(parameters) %}
7 {%- for param in parameters %} 7 {%- for param in parameters %}
8 {%- if param.kind|is_object_kind %} 8 {%- if param.kind|is_object_kind %}
9 {{param.kind|cpp_result_type}} p{{loop.index}}; 9 {{param.kind|cpp_result_type}} p{{loop.index}};
10 Deserialize_(params->{{param.name}}.ptr, &p{{loop.index}}); 10 Deserialize_(params->{{param.name}}.ptr, &p{{loop.index}});
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
97 const {{constant.kind|cpp_pod_type}} {{interface.name}}::{{constant.name}} = {{c onstant|constant_value}}; 97 const {{constant.kind|cpp_pod_type}} {{interface.name}}::{{constant.name}} = {{c onstant|constant_value}};
98 {%- endfor %} 98 {%- endfor %}
99 99
100 {#--- ForwardToCallback definition #} 100 {#--- ForwardToCallback definition #}
101 {%- for method in interface.methods -%} 101 {%- for method in interface.methods -%}
102 {%- if method.response_parameters != None %} 102 {%- if method.response_parameters != None %}
103 class {{class_name}}_{{method.name}}_ForwardToCallback 103 class {{class_name}}_{{method.name}}_ForwardToCallback
104 : public mojo::MessageReceiver { 104 : public mojo::MessageReceiver {
105 public: 105 public:
106 {{class_name}}_{{method.name}}_ForwardToCallback( 106 {{class_name}}_{{method.name}}_ForwardToCallback(
107 const {{interface_macros.declare_callback(method)}}& callback) 107 const {{class_name}}::{{method.name}}Callback& callback)
108 : callback_(callback) { 108 : callback_(callback) {
109 } 109 }
110 virtual bool Accept(mojo::Message* message) override; 110 virtual bool Accept(mojo::Message* message) override;
111 private: 111 private:
112 {{interface_macros.declare_callback(method)}} callback_; 112 {{class_name}}::{{method.name}}Callback callback_;
113 MOJO_DISALLOW_COPY_AND_ASSIGN({{class_name}}_{{method.name}}_ForwardToCallback ); 113 MOJO_DISALLOW_COPY_AND_ASSIGN({{class_name}}_{{method.name}}_ForwardToCallback );
114 }; 114 };
115 bool {{class_name}}_{{method.name}}_ForwardToCallback::Accept( 115 bool {{class_name}}_{{method.name}}_ForwardToCallback::Accept(
116 mojo::Message* message) { 116 mojo::Message* message) {
117 internal::{{class_name}}_{{method.name}}_ResponseParams_Data* params = 117 internal::{{class_name}}_{{method.name}}_ResponseParams_Data* params =
118 reinterpret_cast<internal::{{class_name}}_{{method.name}}_ResponseParams_D ata*>( 118 reinterpret_cast<internal::{{class_name}}_{{method.name}}_ResponseParams_D ata*>(
119 message->mutable_payload()); 119 message->mutable_payload());
120 120
121 params->DecodePointersAndHandles(message->mutable_handles()); 121 params->DecodePointersAndHandles(message->mutable_handles());
122 {{alloc_params(method.response_parameters)|indent(2)}} 122 {{alloc_params(method.response_parameters)|indent(2)}}
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
168 {#--- ProxyToResponder definition #} 168 {#--- ProxyToResponder definition #}
169 {%- for method in interface.methods -%} 169 {%- for method in interface.methods -%}
170 {%- if method.response_parameters != None %} 170 {%- if method.response_parameters != None %}
171 {%- set message_name = 171 {%- set message_name =
172 "internal::k%s_%s_Name"|format(interface.name, method.name) %} 172 "internal::k%s_%s_Name"|format(interface.name, method.name) %}
173 {%- set params_name = 173 {%- set params_name =
174 "internal::%s_%s_ResponseParams_Data"|format(interface.name, method. name) %} 174 "internal::%s_%s_ResponseParams_Data"|format(interface.name, method. name) %}
175 {%- set params_description = 175 {%- set params_description =
176 "%s.%s response"|format(interface.name, method.name) %} 176 "%s.%s response"|format(interface.name, method.name) %}
177 class {{class_name}}_{{method.name}}_ProxyToResponder 177 class {{class_name}}_{{method.name}}_ProxyToResponder
178 : public {{interface_macros.declare_callback(method)}}::Runnable { 178 : public {{class_name}}::{{method.name}}Callback::Runnable {
179 public: 179 public:
180 virtual ~{{class_name}}_{{method.name}}_ProxyToResponder() { 180 virtual ~{{class_name}}_{{method.name}}_ProxyToResponder() {
181 delete responder_; 181 delete responder_;
182 } 182 }
183 183
184 {{class_name}}_{{method.name}}_ProxyToResponder( 184 {{class_name}}_{{method.name}}_ProxyToResponder(
185 uint64_t request_id, 185 uint64_t request_id,
186 mojo::MessageReceiver* responder) 186 mojo::MessageReceiver* responder)
187 : request_id_(request_id), 187 : request_id_(request_id),
188 responder_(responder) { 188 responder_(responder) {
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
250 {%- if interface.methods %} 250 {%- if interface.methods %}
251 switch (message->header()->name) { 251 switch (message->header()->name) {
252 {%- for method in interface.methods %} 252 {%- for method in interface.methods %}
253 case internal::k{{class_name}}_{{method.name}}_Name: { 253 case internal::k{{class_name}}_{{method.name}}_Name: {
254 {%- if method.response_parameters != None %} 254 {%- if method.response_parameters != None %}
255 internal::{{class_name}}_{{method.name}}_Params_Data* params = 255 internal::{{class_name}}_{{method.name}}_Params_Data* params =
256 reinterpret_cast<internal::{{class_name}}_{{method.name}}_Params_Data* >( 256 reinterpret_cast<internal::{{class_name}}_{{method.name}}_Params_Data* >(
257 message->mutable_payload()); 257 message->mutable_payload());
258 258
259 params->DecodePointersAndHandles(message->mutable_handles()); 259 params->DecodePointersAndHandles(message->mutable_handles());
260 {{interface_macros.declare_callback(method)}}::Runnable* runnable = 260 {{class_name}}::{{method.name}}Callback::Runnable* runnable =
261 new {{class_name}}_{{method.name}}_ProxyToResponder( 261 new {{class_name}}_{{method.name}}_ProxyToResponder(
262 message->request_id(), responder); 262 message->request_id(), responder);
263 {{interface_macros.declare_callback(method)}} callback(runnable); 263 {{class_name}}::{{method.name}}Callback callback(runnable);
264 {{alloc_params(method.parameters)|indent(6)}} 264 {{alloc_params(method.parameters)|indent(6)}}
265 // A null |sink_| typically means there is a missing call to 265 // A null |sink_| typically means there is a missing call to
266 // InterfacePtr::set_client(). 266 // InterfacePtr::set_client().
267 assert(sink_); 267 assert(sink_);
268 sink_->{{method.name}}( 268 sink_->{{method.name}}(
269 {%- if method.parameters -%}{{pass_params(method.parameters)}}, {% endif -%}call back); 269 {%- if method.parameters -%}{{pass_params(method.parameters)}}, {% endif -%}call back);
270 return true; 270 return true;
271 {%- else %} 271 {%- else %}
272 break; 272 break;
273 {%- endif %} 273 {%- endif %}
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
342 {%- endfor %} 342 {%- endfor %}
343 } 343 }
344 {%- endif %} 344 {%- endif %}
345 345
346 // A null |sink_| typically means there is a missing call to 346 // A null |sink_| typically means there is a missing call to
347 // InterfacePtr::set_client(). 347 // InterfacePtr::set_client().
348 assert(sink_); 348 assert(sink_);
349 return sink_->Accept(message); 349 return sink_->Accept(message);
350 } 350 }
351 {%- endif -%} 351 {%- endif -%}
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698