| OLD | NEW |
| 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 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 87 } | 87 } |
| 88 } else if (inlined) { | 88 } else if (inlined) { |
| 89 result->set_null(); | 89 result->set_null(); |
| 90 } else { | 90 } else { |
| 91 result = nullptr; | 91 result = nullptr; |
| 92 } | 92 } |
| 93 *output = result; | 93 *output = result; |
| 94 } | 94 } |
| 95 | 95 |
| 96 void Deserialize_(internal::{{union.name}}_Data* input, | 96 void Deserialize_(internal::{{union.name}}_Data* input, |
| 97 {{union.name}}Ptr* output) { | 97 {{union.name}}Ptr* output, |
| 98 mojo::internal::SerializationContext* context) { |
| 98 if (input && !input->is_null()) { | 99 if (input && !input->is_null()) { |
| 99 {{union.name}}Ptr result({{union.name}}::New()); | 100 {{union.name}}Ptr result({{union.name}}::New()); |
| 100 mojo::internal::UnionAccessor<{{union.name}}> result_acc(result.get()); | 101 mojo::internal::UnionAccessor<{{union.name}}> result_acc(result.get()); |
| 101 switch (input->tag) { | 102 switch (input->tag) { |
| 102 {% for field in union.fields %} | 103 {% for field in union.fields %} |
| 103 case {{union.name}}::Tag::{{field.name|upper}}: { | 104 case {{union.name}}::Tag::{{field.name|upper}}: { |
| 104 {% if field.kind|is_object_kind %} | 105 {% if field.kind|is_object_kind %} |
| 105 result_acc.SwitchActive({{union.name}}::Tag::{{field.name|upper}}); | 106 result_acc.SwitchActive({{union.name}}::Tag::{{field.name|upper}}); |
| 106 Deserialize_(input->data.f_{{field.name}}.ptr, result_acc.data()->{{fiel
d.name}}); | 107 Deserialize_(input->data.f_{{field.name}}.ptr, result_acc.data()->{{fiel
d.name}}, context); |
| 107 {% elif field.kind|is_any_handle_kind %} | 108 {% elif field.kind|is_any_handle_kind %} |
| 108 {{field.kind|cpp_wrapper_type}}* {{field.name}} = | 109 {{field.kind|cpp_wrapper_type}}* {{field.name}} = |
| 109 reinterpret_cast<{{field.kind|cpp_wrapper_type}}*>(&input->data.f_{{
field.name}}); | 110 reinterpret_cast<{{field.kind|cpp_wrapper_type}}*>(&input->data.f_{{
field.name}}); |
| 110 result->set_{{field.name}}({{field.name}}->Pass()); | 111 result->set_{{field.name}}({{field.name}}->Pass()); |
| 111 {% elif field.kind|is_interface_kind %} | 112 {% elif field.kind|is_interface_kind %} |
| 112 {{field.kind|cpp_wrapper_type}} {{field.name}}_out; | 113 {{field.kind|cpp_wrapper_type}} {{field.name}}_out; |
| 113 mojo::internal::Interface_Data* {{field.name}}_in = | 114 mojo::internal::Interface_Data* {{field.name}}_in = |
| 114 reinterpret_cast<mojo::internal::Interface_Data*>( | 115 reinterpret_cast<mojo::internal::Interface_Data*>( |
| 115 &input->data.f_{{field.name}}); | 116 &input->data.f_{{field.name}}); |
| 116 mojo::internal::InterfaceDataToPointer( | 117 mojo::internal::InterfaceDataToPointer( |
| 117 {{field.name}}_in, &{{field.name}}_out); | 118 {{field.name}}_in, &{{field.name}}_out); |
| 118 result->set_{{field.name}}({{field.name}}_out.Pass()); | 119 result->set_{{field.name}}({{field.name}}_out.Pass()); |
| 119 {%- elif field.kind|is_associated_kind %} | 120 {%- elif field.kind|is_associated_kind %} |
| 120 // TODO(yzshen): add deserialization logic for associated kinds. | 121 // TODO(yzshen): add deserialization logic for associated kinds. |
| 121 {% elif field.kind|is_enum_kind %} | 122 {% elif field.kind|is_enum_kind %} |
| 122 result->set_{{field.name}}(static_cast<{{field.kind|cpp_wrapper_type}}>(
input->data.f_{{field.name}})); | 123 result->set_{{field.name}}(static_cast<{{field.kind|cpp_wrapper_type}}>(
input->data.f_{{field.name}})); |
| 123 {% else %} | 124 {% else %} |
| 124 result->set_{{field.name}}(input->data.f_{{field.name}}); | 125 result->set_{{field.name}}(input->data.f_{{field.name}}); |
| 125 {%- endif %} | 126 {%- endif %} |
| 126 break; | 127 break; |
| 127 } | 128 } |
| 128 {%- endfor %} | 129 {%- endfor %} |
| 129 } | 130 } |
| 130 *output = result.Pass(); | 131 *output = result.Pass(); |
| 131 } else { | 132 } else { |
| 132 output->reset(); | 133 output->reset(); |
| 133 } | 134 } |
| 134 } | 135 } |
| OLD | NEW |