OLD | NEW |
1 size_t GetSerializedSize_(const {{struct.name}}Ptr& input) { | 1 size_t GetSerializedSize_(const {{struct.name}}Ptr& input) { |
2 if (!input) | 2 if (!input) |
3 return 0; | 3 return 0; |
4 size_t size = sizeof(internal::{{struct.name}}_Data); | 4 size_t size = sizeof(internal::{{struct.name}}_Data); |
5 {%- for pf in struct.packed.packed_fields if pf.field.kind|is_object_kind %} | 5 {%- for pf in struct.packed.packed_fields if pf.field.kind|is_object_kind %} |
6 size += GetSerializedSize_(input->{{pf.field.name}}); | 6 size += GetSerializedSize_(input->{{pf.field.name}}); |
7 {%- endfor %} | 7 {%- endfor %} |
8 return size; | 8 return size; |
9 } | 9 } |
10 | 10 |
11 void Serialize_({{struct.name}}Ptr input, mojo::internal::Buffer* buf, | 11 void Serialize_({{struct.name}}Ptr input, mojo::internal::Buffer* buf, |
12 internal::{{struct.name}}_Data** output) { | 12 internal::{{struct.name}}_Data** output) { |
13 if (input) { | 13 if (input) { |
14 internal::{{struct.name}}_Data* result = | 14 internal::{{struct.name}}_Data* result = |
15 internal::{{struct.name}}_Data::New(buf); | 15 internal::{{struct.name}}_Data::New(buf); |
16 {%- for pf in struct.packed.packed_fields %} | 16 {%- for pf in struct.packed.packed_fields %} |
17 {%- if pf.field.kind|is_object_kind %} | 17 {%- if pf.field.kind|is_object_kind %} |
18 {%- if pf.field.kind|is_any_array_kind %} | 18 {%- if pf.field.kind|is_any_array_kind %} |
19 mojo::SerializeArray_<{{pf.field.kind|get_array_validate_params|indent(26)}}
>( | 19 mojo::SerializeArray_<{{pf.field.kind|get_array_validate_params|indent(26)}}
>( |
20 mojo::internal::Forward(input->{{pf.field.name}}), buf, &result->{{pf.fi
eld.name}}.ptr); | 20 mojo::internal::Forward(input->{{pf.field.name}}), buf, &result->{{pf.fi
eld.name}}.ptr); |
| 21 {%- elif pf.field.kind|is_map_kind %} |
| 22 mojo::Array<{{pf.field.kind.key_kind|cpp_result_type}}> {{pf.field.name}}_ke
ys; |
| 23 mojo::Array<{{pf.field.kind.value_kind|cpp_result_type}}> {{pf.field.name}}_
values; |
| 24 input->{{pf.field.name}}.DecomposeMapTo(&{{pf.field.name}}_keys, |
| 25 &{{pf.field.name}}_values); |
| 26 |
| 27 mojo::SerializeArray_<{{pf.field.kind.key_kind|get_map_validate_params|inden
t(26)}}>( |
| 28 mojo::internal::Forward({{pf.field.name}}_keys), buf, &result->{{pf.fiel
d.name}}_keys.ptr); |
| 29 mojo::SerializeArray_<{{pf.field.kind.value_kind|get_map_validate_params|ind
ent(26)}}>( |
| 30 mojo::internal::Forward({{pf.field.name}}_values), buf, &result->{{pf.fi
eld.name}}_values.ptr); |
21 {%- else %} | 31 {%- else %} |
22 Serialize_(mojo::internal::Forward(input->{{pf.field.name}}), buf, &result->
{{pf.field.name}}.ptr); | 32 Serialize_(mojo::internal::Forward(input->{{pf.field.name}}), buf, &result->
{{pf.field.name}}.ptr); |
23 {%- endif %} | 33 {%- endif %} |
24 {%- if not pf.field.kind|is_nullable_kind %} | 34 {%- if not pf.field.kind|is_nullable_kind %} |
| 35 {%- if pf.field.kind|is_map_kind %} |
| 36 MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING( |
| 37 !result->{{pf.field.name}}_keys.ptr, |
| 38 mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER, |
| 39 "null key array for {{pf.field.name}} field in {{struct.name}} struct"); |
| 40 MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING( |
| 41 !result->{{pf.field.name}}_values.ptr, |
| 42 mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER, |
| 43 "null value array for {{pf.field.name}} field in {{struct.name}} struct"
); |
| 44 {%- else %} |
25 MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING( | 45 MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING( |
26 !result->{{pf.field.name}}.ptr, | 46 !result->{{pf.field.name}}.ptr, |
27 mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER, | 47 mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER, |
28 "null {{pf.field.name}} field in {{struct.name}} struct"); | 48 "null {{pf.field.name}} field in {{struct.name}} struct"); |
| 49 {%- endif %} |
29 {%- endif %} | 50 {%- endif %} |
30 {%- elif pf.field.kind|is_any_handle_kind %} | 51 {%- elif pf.field.kind|is_any_handle_kind %} |
31 {%- if pf.field.kind|is_interface_kind %} | 52 {%- if pf.field.kind|is_interface_kind %} |
32 result->{{pf.field.name}} = input->{{pf.field.name}}.PassMessagePipe().relea
se(); | 53 result->{{pf.field.name}} = input->{{pf.field.name}}.PassMessagePipe().relea
se(); |
33 {%- else %} | 54 {%- else %} |
34 result->{{pf.field.name}} = input->{{pf.field.name}}.release(); | 55 result->{{pf.field.name}} = input->{{pf.field.name}}.release(); |
35 {%- endif %} | 56 {%- endif %} |
36 {%- if not pf.field.kind|is_nullable_kind %} | 57 {%- if not pf.field.kind|is_nullable_kind %} |
37 MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING( | 58 MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING( |
38 !result->{{pf.field.name}}.is_valid(), | 59 !result->{{pf.field.name}}.is_valid(), |
39 mojo::internal::VALIDATION_ERROR_UNEXPECTED_INVALID_HANDLE, | 60 mojo::internal::VALIDATION_ERROR_UNEXPECTED_INVALID_HANDLE, |
40 "invalid {{pf.field.name}} field in {{struct.name}} struct"); | 61 "invalid {{pf.field.name}} field in {{struct.name}} struct"); |
41 {%- endif %} | 62 {%- endif %} |
42 {%- else %} | 63 {%- else %} |
43 result->{{pf.field.name}} = input->{{pf.field.name}}; | 64 result->{{pf.field.name}} = input->{{pf.field.name}}; |
44 {%- endif %} | 65 {%- endif %} |
45 {%- endfor %} | 66 {%- endfor %} |
46 *output = result; | 67 *output = result; |
47 } else { | 68 } else { |
48 *output = nullptr; | 69 *output = nullptr; |
49 } | 70 } |
50 } | 71 } |
51 | 72 |
52 void Deserialize_(internal::{{struct.name}}_Data* input, | 73 void Deserialize_(internal::{{struct.name}}_Data* input, |
53 {{struct.name}}Ptr* output) { | 74 {{struct.name}}Ptr* output) { |
54 if (input) { | 75 if (input) { |
55 {{struct.name}}Ptr result({{struct.name}}::New()); | 76 {{struct.name}}Ptr result({{struct.name}}::New()); |
56 {%- for pf in struct.packed.packed_fields %} | 77 {%- for pf in struct.packed.packed_fields %} |
57 {%- if pf.field.kind|is_object_kind %} | 78 {%- if pf.field.kind|is_map_kind %} |
| 79 mojo::Array<{{pf.field.kind.key_kind|cpp_result_type}}> {{pf.field.name}}_ke
ys; |
| 80 Deserialize_(input->{{pf.field.name}}_keys.ptr, &{{pf.field.name}}_keys); |
| 81 mojo::Array<{{pf.field.kind.value_kind|cpp_result_type}}> {{pf.field.name}}_
values; |
| 82 Deserialize_(input->{{pf.field.name}}_values.ptr, &{{pf.field.name}}_values)
; |
| 83 result->{{pf.field.name}} = |
| 84 mojo::Map<{{pf.field.kind.key_kind|cpp_result_type}}, |
| 85 {{pf.field.kind.value_kind|cpp_result_type}}>( |
| 86 {{pf.field.name}}_keys.Pass(), |
| 87 {{pf.field.name}}_values.Pass()).Pass(); |
| 88 {%- elif pf.field.kind|is_object_kind %} |
58 Deserialize_(input->{{pf.field.name}}.ptr, &result->{{pf.field.name}}); | 89 Deserialize_(input->{{pf.field.name}}.ptr, &result->{{pf.field.name}}); |
59 {%- elif pf.field.kind|is_interface_kind %} | 90 {%- elif pf.field.kind|is_interface_kind %} |
60 if (input->{{pf.field.name}}.is_valid()) | 91 if (input->{{pf.field.name}}.is_valid()) |
61 result->{{pf.field.name}}.Bind(mojo::MakeScopedHandle(mojo::internal::Fetc
hAndReset(&input->{{pf.field.name}}))); | 92 result->{{pf.field.name}}.Bind(mojo::MakeScopedHandle(mojo::internal::Fetc
hAndReset(&input->{{pf.field.name}}))); |
62 {%- elif pf.field.kind|is_any_handle_kind %} | 93 {%- elif pf.field.kind|is_any_handle_kind %} |
63 result->{{pf.field.name}}.reset(mojo::internal::FetchAndReset(&input->{{pf.f
ield.name}})); | 94 result->{{pf.field.name}}.reset(mojo::internal::FetchAndReset(&input->{{pf.f
ield.name}})); |
64 {%- elif pf.field.kind|is_enum_kind %} | 95 {%- elif pf.field.kind|is_enum_kind %} |
65 result->{{pf.field.name}} = static_cast<{{pf.field.kind|cpp_wrapper_type}}>( | 96 result->{{pf.field.name}} = static_cast<{{pf.field.kind|cpp_wrapper_type}}>( |
66 input->{{pf.field.name}}); | 97 input->{{pf.field.name}}); |
67 {%- else %} | 98 {%- else %} |
68 result->{{pf.field.name}} = input->{{pf.field.name}}; | 99 result->{{pf.field.name}} = input->{{pf.field.name}}; |
69 {%- endif %} | 100 {%- endif %} |
70 {%- endfor %} | 101 {%- endfor %} |
71 *output = result.Pass(); | 102 *output = result.Pass(); |
72 } else { | 103 } else { |
73 output->reset(); | 104 output->reset(); |
74 } | 105 } |
75 } | 106 } |
OLD | NEW |