OLD | NEW |
---|---|
(Empty) | |
1 size_t GetSerializedSize_(const {{struct.name}}Ptr& input) { | |
2 size_t size = mojo::internal::Align(sizeof(internal::{{struct.name}}_Data)); | |
yzshen1
2014/05/27 22:16:59
nit: I think the size of *_Data is always 8-byte m
| |
3 {%- for pf in struct.packed.packed_fields if pf.field.kind|is_object_kind %} | |
4 if (input->{{pf.field.name}}) | |
5 size += GetSerializedSize_(input->{{pf.field.name}}); | |
6 {%- endfor %} | |
7 return size; | |
8 } | |
9 | |
10 void Serialize_({{struct.name}}Ptr input, mojo::internal::Buffer* buf, | |
11 internal::{{struct.name}}_Data** output) { | |
12 internal::{{struct.name}}_Data* result = | |
13 internal::{{struct.name}}_Data::New(buf); | |
14 {%- for pf in struct.packed.packed_fields %} | |
15 {%- if pf.field.kind|is_object_kind %} | |
16 if (input->{{pf.field.name}}) | |
17 Serialize_(mojo::internal::Forward(input->{{pf.field.name}}), buf, &result-> {{pf.field.name}}.ptr); | |
18 {%- elif pf.field.kind|is_handle_kind %} | |
19 result->{{pf.field.name}} = input->{{pf.field.name}}.release(); | |
20 {%- else %} | |
21 result->{{pf.field.name}} = input->{{pf.field.name}}; | |
22 {%- endif %} | |
23 {%- endfor %} | |
24 *output = result; | |
25 } | |
26 | |
27 void Deserialize_(internal::{{struct.name}}_Data* input, | |
28 {{struct.name}}Ptr* output) { | |
29 {{struct.name}}Ptr result({{struct.name}}::New()); | |
30 {%- for pf in struct.packed.packed_fields %} | |
31 {%- if pf.field.kind|is_object_kind %} | |
32 if (input->{{pf.field.name}}.ptr) | |
33 Deserialize_(input->{{pf.field.name}}.ptr, &result->{{pf.field.name}}); | |
34 {%- elif pf.field.kind|is_handle_kind %} | |
35 result->{{pf.field.name}}.reset(mojo::internal::FetchAndReset(&input->{{pf.fie ld.name}})); | |
36 {%- elif pf.field.kind|is_enum_kind %} | |
37 result->{{pf.field.name}} = static_cast<{{pf.field.kind|cpp_wrapper_type}}>( | |
38 input->{{pf.field.name}}); | |
39 {%- else %} | |
40 result->{{pf.field.name}} = input->{{pf.field.name}}; | |
41 {%- endif %} | |
42 {%- endfor %} | |
43 *output = result.Pass(); | |
44 } | |
OLD | NEW |