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

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

Issue 1682113003: Mojo C++ bindings: Generate InterfaceHandle<> instead of InterfacePtr<>. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: rebase ontop of master, address trung's comments Created 4 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 'struct_macros.tmpl' as struct_macros without context %} 1 {% import 'struct_macros.tmpl' as struct_macros without context %}
2 size_t GetSerializedSize_(const {{union.name}}Ptr& input, bool inlined) { 2 size_t GetSerializedSize_(const {{union.name}}Ptr& input, bool inlined) {
3 size_t size = 0U; 3 size_t size = 0U;
4 if (!inlined) { 4 if (!inlined) {
5 size += sizeof(internal::{{union.name}}_Data); 5 size += sizeof(internal::{{union.name}}_Data);
6 } 6 }
7 7
8 if (!input) 8 if (!input)
9 return size; 9 return size;
10 10
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
84 should_return_errors = true, 84 should_return_errors = true,
85 indent_size = 16)|indent(6)}} 85 indent_size = 16)|indent(6)}}
86 {%- endif %} 86 {%- endif %}
87 {% elif field.kind|is_any_handle_kind %} 87 {% elif field.kind|is_any_handle_kind %}
88 result->data.f_{{field.name}} = 88 result->data.f_{{field.name}} =
89 input_acc.data()->{{field.name}}->release().value(); 89 input_acc.data()->{{field.name}}->release().value();
90 {% elif field.kind|is_interface_kind %} 90 {% elif field.kind|is_interface_kind %}
91 mojo::internal::Interface_Data* {{field.name}} = 91 mojo::internal::Interface_Data* {{field.name}} =
92 reinterpret_cast<mojo::internal::Interface_Data*>( 92 reinterpret_cast<mojo::internal::Interface_Data*>(
93 &result->data.f_{{field.name}}); 93 &result->data.f_{{field.name}});
94 mojo::internal::InterfacePointerToData( 94 mojo::internal::InterfaceHandleToData(
95 input_acc.data()->{{field.name}}->Pass(), {{field.name}}); 95 input_acc.data()->{{field.name}}->Pass(), {{field.name}});
96 {% elif field.kind|is_enum_kind %} 96 {% elif field.kind|is_enum_kind %}
97 result->data.f_{{field.name}} = 97 result->data.f_{{field.name}} =
98 static_cast<int32_t>(input_acc.data()->{{field.name}}); 98 static_cast<int32_t>(input_acc.data()->{{field.name}});
99 {% else %} 99 {% else %}
100 result->data.f_{{field.name}} = input_acc.data()->{{field.name}}; 100 result->data.f_{{field.name}} = input_acc.data()->{{field.name}};
101 {%- endif %} 101 {%- endif %}
102 break; 102 break;
103 } 103 }
104 {%- endfor %} 104 {%- endfor %}
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 {% endif %} 137 {% endif %}
138 {% elif field.kind|is_any_handle_kind %} 138 {% elif field.kind|is_any_handle_kind %}
139 {{field.kind|cpp_wrapper_type}}* {{field.name}} = 139 {{field.kind|cpp_wrapper_type}}* {{field.name}} =
140 reinterpret_cast<{{field.kind|cpp_wrapper_type}}*>(&input->data.f_{{ field.name}}); 140 reinterpret_cast<{{field.kind|cpp_wrapper_type}}*>(&input->data.f_{{ field.name}});
141 output->set_{{field.name}}({{field.name}}->Pass()); 141 output->set_{{field.name}}({{field.name}}->Pass());
142 {% elif field.kind|is_interface_kind %} 142 {% elif field.kind|is_interface_kind %}
143 {{field.kind|cpp_wrapper_type}} {{field.name}}_out; 143 {{field.kind|cpp_wrapper_type}} {{field.name}}_out;
144 mojo::internal::Interface_Data* {{field.name}}_in = 144 mojo::internal::Interface_Data* {{field.name}}_in =
145 reinterpret_cast<mojo::internal::Interface_Data*>( 145 reinterpret_cast<mojo::internal::Interface_Data*>(
146 &input->data.f_{{field.name}}); 146 &input->data.f_{{field.name}});
147 mojo::internal::InterfaceDataToPointer( 147 mojo::internal::InterfaceDataToHandle(
148 {{field.name}}_in, &{{field.name}}_out); 148 {{field.name}}_in, &{{field.name}}_out);
149 output->set_{{field.name}}({{field.name}}_out.Pass()); 149 output->set_{{field.name}}({{field.name}}_out.Pass());
150 {% elif field.kind|is_enum_kind %} 150 {% elif field.kind|is_enum_kind %}
151 output->set_{{field.name}}(static_cast<{{field.kind|cpp_wrapper_type}}>( input->data.f_{{field.name}})); 151 output->set_{{field.name}}(static_cast<{{field.kind|cpp_wrapper_type}}>( input->data.f_{{field.name}}));
152 {% else %} 152 {% else %}
153 output->set_{{field.name}}(input->data.f_{{field.name}}); 153 output->set_{{field.name}}(input->data.f_{{field.name}});
154 {%- endif %} 154 {%- endif %}
155 break; 155 break;
156 } 156 }
157 {%- endfor %} 157 {%- endfor %}
158 default: 158 default:
159 MOJO_LOG(WARNING) << "Deserializing {{union.name}} with unknown tag!"; 159 MOJO_LOG(WARNING) << "Deserializing {{union.name}} with unknown tag!";
160 // No way to deserialize the data when we encounter an unknown tag. 160 // No way to deserialize the data when we encounter an unknown tag.
161 break; 161 break;
162 } 162 }
163 } 163 }
164 } 164 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698