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

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

Issue 1526533002: [mojo] Add pickling support for native-only structs (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@bindings-4-bool-deserialize
Patch Set: Created 5 years 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 {%- from "enum_macros.tmpl" import is_valid_enum_def %} 1 {%- from "enum_macros.tmpl" import is_valid_enum_def %}
2 2
3 {#--- Enums #} 3 {#--- Enums #}
4 {%- for enum in struct.enums -%} 4 {%- for enum in struct.enums -%}
5 {{is_valid_enum_def(enum, class_name=struct.name)}} 5 {{is_valid_enum_def(enum, class_name=struct.name)}}
6 {%- endfor %} 6 {%- endfor %}
7 7
8 // static 8 // static
9 {{struct.name}}Ptr {{struct.name}}::New() { 9 {{struct.name}}Ptr {{struct.name}}::New() {
10 {{struct.name}}Ptr rv; 10 {{struct.name}}Ptr rv;
11 mojo::internal::StructHelper<{{struct.name}}>::Initialize(&rv); 11 mojo::internal::StructHelper<{{struct.name}}>::Initialize(&rv);
12 return rv.Pass(); 12 return rv.Pass();
13 } 13 }
14 14
15 {{struct.name}}::{{struct.name}}() 15 {{struct.name}}::{{struct.name}}()
16 {%- for field in struct.fields %} 16 {%- for field in struct.fields %}
17 {% if loop.first %}:{% else %} {% endif %} {{field.name}}({{field|default_va lue}}){% if not loop.last %},{% endif %} 17 {% if loop.first %}:{% else %} {% endif %} {{field.name}}({{field|default_va lue}}){% if not loop.last %},{% endif %}
18 {%- endfor %} { 18 {%- endfor %} {
19 } 19 }
20 20
21 {{struct.name}}::~{{struct.name}}() { 21 {{struct.name}}::~{{struct.name}}() {
22 } 22 }
23 23
24 {% if struct|is_cloneable_kind %} 24 {% if struct|is_cloneable_kind %}
25 {{struct.name}}Ptr {{struct.name}}::Clone() const { 25 {{struct.name}}Ptr {{struct.name}}::Clone() const {
26 {{struct.name}}Ptr rv(New()); 26 {{struct.name}}Ptr rv(New());
27 {%- for field in struct.fields %} 27 {%- for field in struct.fields %}
28 {%- if field.kind|is_object_kind and not field.kind|is_string_kind %} 28 {%- if field.kind|is_typemapped_kind %}
29 NOTREACHED() << "Object cloning not supported with typemapped fields.";
yzshen1 2015/12/15 21:20:27 It seems reasonable to add support if the typemapp
Ken Rockot(use gerrit already) 2015/12/15 23:31:08 I agree we might want to, but I'd rather wait unti
30 {%- elif field.kind|is_object_kind and not field.kind|is_string_kind %}
29 rv->{{field.name}} = {{field.name}}.Clone(); 31 rv->{{field.name}} = {{field.name}}.Clone();
30 {%- else %} 32 {%- else %}
31 rv->{{field.name}} = {{field.name}}; 33 rv->{{field.name}} = {{field.name}};
32 {%- endif %} 34 {%- endif %}
33 {%- endfor %} 35 {%- endfor %}
34 return rv.Pass(); 36 return rv.Pass();
35 } 37 }
36 {% endif %} 38 {% endif %}
37 39
38 bool {{struct.name}}::Equals(const {{struct.name}}& other) const { 40 bool {{struct.name}}::Equals(const {{struct.name}}& other) const {
39 {%- for field in struct.fields %} 41 {%- for field in struct.fields %}
42 {%- if field.kind|is_typemapped_kind %}
43 NOTREACHED() << "Equality testing not supported with typemapped fields.";
yzshen1 2015/12/15 21:20:27 Similarly, seems reasonable to add support if the
Ken Rockot(use gerrit already) 2015/12/15 23:31:08 Agreed
44 {%- else %}
40 if (!mojo::internal::ValueTraits<{{field.kind|cpp_wrapper_type}}>::Equals(this ->{{field.name}}, other.{{field.name}})) 45 if (!mojo::internal::ValueTraits<{{field.kind|cpp_wrapper_type}}>::Equals(this ->{{field.name}}, other.{{field.name}}))
41 return false; 46 return false;
47 {%- endif %}
42 {%- endfor %} 48 {%- endfor %}
43 return true; 49 return true;
44 } 50 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698