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

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

Issue 1065653006: Array and map members for unions. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 5 years, 8 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 size_t GetSerializedSize_(const {{union.name}}Ptr& input, bool inlined) { 1 size_t GetSerializedSize_(const {{union.name}}Ptr& input, bool inlined) {
2 size_t size = 0U; 2 size_t size = 0U;
3 if (!inlined) { 3 if (!inlined) {
4 size += sizeof(internal::{{union.name}}_Data); 4 size += sizeof(internal::{{union.name}}_Data);
5 } 5 }
6 6
7 if (!input) 7 if (!input)
8 return size; 8 return size;
9 9
10 mojo::internal::UnionAccessor<{{union.name}}> input_acc(input.get()); 10 mojo::internal::UnionAccessor<{{union.name}}> input_acc(input.get());
(...skipping 25 matching lines...) Expand all
36 result->tag = input->which(); 36 result->tag = input->which();
37 switch (input->which()) { 37 switch (input->which()) {
38 {% for field in union.fields %} 38 {% for field in union.fields %}
39 case {{union.name}}::Tag::{{field.name|upper}}: { 39 case {{union.name}}::Tag::{{field.name|upper}}: {
40 {% if field.kind|is_object_kind %} 40 {% if field.kind|is_object_kind %}
41 {{field.kind|cpp_field_type}}* {{field.name}}_ptr = reinterpret_cast<{{f ield.kind|cpp_field_type}}*>(&result->data.f_{{field.name}}); 41 {{field.kind|cpp_field_type}}* {{field.name}}_ptr = reinterpret_cast<{{f ield.kind|cpp_field_type}}*>(&result->data.f_{{field.name}});
42 {% if field.kind|is_string_kind %} 42 {% if field.kind|is_string_kind %}
43 Serialize_(*(input_acc.data()->{{field.name}}), buf, &{{field.name}}_ptr ->ptr); 43 Serialize_(*(input_acc.data()->{{field.name}}), buf, &{{field.name}}_ptr ->ptr);
44 {% elif field.kind|is_struct_kind %} 44 {% elif field.kind|is_struct_kind %}
45 Serialize_(mojo::internal::Forward(*(input_acc.data()->{{field.name}})), buf, &{{field.name}}_ptr->ptr); 45 Serialize_(mojo::internal::Forward(*(input_acc.data()->{{field.name}})), buf, &{{field.name}}_ptr->ptr);
46 {% elif field.kind|is_array_kind %}
47 const mojo::internal::ArrayValidateParams {{field.name}}_validate_params =
48 {{field.kind|get_array_validate_params|indent(16)}};
49 SerializeArray_(
50 mojo::internal::Forward(*(input_acc.data()->{{field.name}})),
51 buf, &{{field.name}}_ptr->ptr, &{{field.name}}_validate_params);
52 {% elif field.kind|is_map_kind %}
53 const mojo::internal::ArrayValidateParams {{field.name}}_validate_params =
54 {{field.kind.value_kind|get_map_validate_params|indent(16)}};
55 SerializeMap_(
56 mojo::internal::Forward(*(input_acc.data()->{{field.name}})),
57 buf, &{{field.name}}_ptr->ptr, &{{field.name}}_validate_params);
46 {%- endif %} 58 {%- endif %}
47 {% else %} 59 {% else %}
48 result->data.f_{{field.name}} = input_acc.data()->{{field.name}}; 60 result->data.f_{{field.name}} = input_acc.data()->{{field.name}};
49 {%- endif %} 61 {%- endif %}
50 break; 62 break;
51 } 63 }
52 {%- endfor %} 64 {%- endfor %}
53 } 65 }
54 } else if (inlined) { 66 } else if (inlined) {
55 result->set_null(); 67 result->set_null();
(...skipping 20 matching lines...) Expand all
76 {%- endif %} 88 {%- endif %}
77 break; 89 break;
78 } 90 }
79 {%- endfor %} 91 {%- endfor %}
80 } 92 }
81 *output = result.Pass(); 93 *output = result.Pass();
82 } else { 94 } else {
83 output->reset(); 95 output->reset();
84 } 96 }
85 } 97 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698