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

Unified Diff: third_party/mojo/src/mojo/public/tools/bindings/generators/cpp_templates/struct_serialization_definition.tmpl

Issue 954643002: Update mojo sdk to rev 3d23dae011859a2aae49f1d1adde705c8e85d819 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: use run_renderer_in_process() Created 5 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 side-by-side diff with in-line comments
Download patch
Index: third_party/mojo/src/mojo/public/tools/bindings/generators/cpp_templates/struct_serialization_definition.tmpl
diff --git a/third_party/mojo/src/mojo/public/tools/bindings/generators/cpp_templates/struct_serialization_definition.tmpl b/third_party/mojo/src/mojo/public/tools/bindings/generators/cpp_templates/struct_serialization_definition.tmpl
index 1612bbec9e571e4680dee6e0c06f7a1599915de8..fe25553846ccb00911dd711936e4a04398194d05 100644
--- a/third_party/mojo/src/mojo/public/tools/bindings/generators/cpp_templates/struct_serialization_definition.tmpl
+++ b/third_party/mojo/src/mojo/public/tools/bindings/generators/cpp_templates/struct_serialization_definition.tmpl
@@ -1,51 +1,15 @@
+{%- import "struct_macros.tmpl" as struct_macros %}
size_t GetSerializedSize_(const {{struct.name}}Ptr& input) {
if (!input)
return 0;
- size_t size = sizeof(internal::{{struct.name}}_Data);
-{%- for pf in struct.packed.packed_fields if pf.field.kind|is_object_kind %}
- size += GetSerializedSize_(input->{{pf.field.name}});
-{%- endfor %}
+ {{struct_macros.get_serialized_size(struct, "input->%s")}}
return size;
}
void Serialize_({{struct.name}}Ptr input, mojo::internal::Buffer* buf,
internal::{{struct.name}}_Data** output) {
if (input) {
- internal::{{struct.name}}_Data* result =
- internal::{{struct.name}}_Data::New(buf);
-{%- for pf in struct.packed.packed_fields %}
-{%- if pf.field.kind|is_object_kind %}
-{%- if pf.field.kind|is_array_kind %}
- mojo::SerializeArray_<{{pf.field.kind|get_array_validate_params|indent(26)}}>(
- mojo::internal::Forward(input->{{pf.field.name}}), buf, &result->{{pf.field.name}}.ptr);
-{%- elif pf.field.kind|is_map_kind %}
- mojo::SerializeMap_<{{pf.field.kind.value_kind|get_map_validate_params|indent(26)}}>(
- mojo::internal::Forward(input->{{pf.field.name}}), buf, &result->{{pf.field.name}}.ptr);
-{%- else %}
- Serialize_(mojo::internal::Forward(input->{{pf.field.name}}), buf, &result->{{pf.field.name}}.ptr);
-{%- endif %}
-{%- if not pf.field.kind|is_nullable_kind %}
- MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING(
- !result->{{pf.field.name}}.ptr,
- mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
- "null {{pf.field.name}} field in {{struct.name}} struct");
-{%- endif %}
-{%- elif pf.field.kind|is_any_handle_kind %}
-{%- if pf.field.kind|is_interface_kind %}
- result->{{pf.field.name}} = input->{{pf.field.name}}.PassMessagePipe().release();
-{%- else %}
- result->{{pf.field.name}} = input->{{pf.field.name}}.release();
-{%- endif %}
-{%- if not pf.field.kind|is_nullable_kind %}
- MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING(
- !result->{{pf.field.name}}.is_valid(),
- mojo::internal::VALIDATION_ERROR_UNEXPECTED_INVALID_HANDLE,
- "invalid {{pf.field.name}} field in {{struct.name}} struct");
-{%- endif %}
-{%- else %}
- result->{{pf.field.name}} = input->{{pf.field.name}};
-{%- endif %}
-{%- endfor %}
+ {{struct_macros.serialize(struct, struct.name ~ " struct", "input->%s", "result", "buf")|indent(2)}}
*output = result;
} else {
*output = nullptr;
@@ -56,21 +20,7 @@ void Deserialize_(internal::{{struct.name}}_Data* input,
{{struct.name}}Ptr* output) {
if (input) {
{{struct.name}}Ptr result({{struct.name}}::New());
-{%- for pf in struct.packed.packed_fields %}
-{%- if pf.field.kind|is_object_kind %}
- Deserialize_(input->{{pf.field.name}}.ptr, &result->{{pf.field.name}});
-{%- elif pf.field.kind|is_interface_kind %}
- if (input->{{pf.field.name}}.is_valid())
- result->{{pf.field.name}}.Bind(mojo::MakeScopedHandle(mojo::internal::FetchAndReset(&input->{{pf.field.name}})));
-{%- elif pf.field.kind|is_any_handle_kind %}
- result->{{pf.field.name}}.reset(mojo::internal::FetchAndReset(&input->{{pf.field.name}}));
-{%- elif pf.field.kind|is_enum_kind %}
- result->{{pf.field.name}} = static_cast<{{pf.field.kind|cpp_wrapper_type}}>(
- input->{{pf.field.name}});
-{%- else %}
- result->{{pf.field.name}} = input->{{pf.field.name}};
-{%- endif %}
-{%- endfor %}
+ {{struct_macros.deserialize(struct, "input", "result->%s")|indent(2)}}
*output = result.Pass();
} else {
output->reset();

Powered by Google App Engine
This is Rietveld 408576698