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

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

Issue 2339413004: Allow Mojo structs as map keys (Closed)
Patch Set: Address sammc's comments and improve Blink tests Created 4 years, 3 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 {%- set mojom_type = struct|get_qualified_name_for_kind %} 1 {%- set mojom_type = struct|get_qualified_name_for_kind %}
2 2
3 template <> 3 template <>
4 struct {{export_attribute}} StructTraits<{{mojom_type}}::DataView, 4 struct {{export_attribute}} StructTraits<{{mojom_type}}::DataView,
5 {{mojom_type}}Ptr> { 5 {{mojom_type}}Ptr> {
6 static bool IsNull(const {{mojom_type}}Ptr& input) { return !input; } 6 static bool IsNull(const {{mojom_type}}Ptr& input) { return !input; }
7 static void SetToNull({{mojom_type}}Ptr* output) { output->reset(); } 7 static void SetToNull({{mojom_type}}Ptr* output) { output->reset(); }
8 8
9 {%- for field in struct.fields %} 9 {%- for field in struct.fields %}
10 {%- set return_ref = field.kind|is_object_kind or 10 {%- set return_ref = field.kind|is_object_kind or
11 field.kind|is_any_handle_or_interface_kind %} 11 field.kind|is_any_handle_or_interface_kind %}
12 {# We want the field accessor to be const whenever possible to allow #}
yzshen1 2016/09/22 23:48:56 style nit: I think the other places use {# blah
tibell 2016/09/23 00:07:07 Done.
13 {# structs to be used as map keys. #}
14 {# TODO(tibell): Make this check more precise to deal with e.g. #}
15 {# custom types which don't contain handles but require non-const #}
16 {# reference for serialization. #}
17 {%- set maybe_const = "" if field.kind|contains_handles else "const" %}
12 {%- if return_ref %} 18 {%- if return_ref %}
13 static decltype({{mojom_type}}::{{field.name}})& {{field.name}}( 19 static {{maybe_const}} decltype({{mojom_type}}::{{field.name}})& {{field.name} }(
14 {{mojom_type}}Ptr& input) { 20 {{maybe_const}} {{mojom_type}}Ptr& input) {
15 return input->{{field.name}}; 21 return input->{{field.name}};
16 } 22 }
17 {%- else %} 23 {%- else %}
18 static decltype({{mojom_type}}::{{field.name}}) {{field.name}}( 24 static decltype({{mojom_type}}::{{field.name}}) {{field.name}}(
19 const {{mojom_type}}Ptr& input) { 25 const {{mojom_type}}Ptr& input) {
20 return input->{{field.name}}; 26 return input->{{field.name}};
21 } 27 }
22 {%- endif %} 28 {%- endif %}
23 {%- endfor %} 29 {%- endfor %}
24 30
25 static bool Read({{mojom_type}}::DataView input, {{mojom_type}}Ptr* output); 31 static bool Read({{mojom_type}}::DataView input, {{mojom_type}}Ptr* output);
26 }; 32 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698