| OLD | NEW |
| 1 {# TODO(yzshen): Make these templates more readable. #} | 1 {# TODO(yzshen): Make these templates more readable. #} |
| 2 | 2 |
| 3 {# Computes the serialized size for the specified struct. | 3 {# Computes the serialized size for the specified struct. |
| 4 |struct| is the struct definition. | 4 |struct| is the struct definition. |
| 5 |input_field_pattern| should be a pattern that contains one string | 5 |input_field_pattern| should be a pattern that contains one string |
| 6 placeholder, for example, "input->%s", "p_%s". The placeholder will be | 6 placeholder, for example, "input->%s", "p_%s". The placeholder will be |
| 7 substituted with struct field names to refer to the input fields. | 7 substituted with struct field names to refer to the input fields. |
| 8 This macro is expanded to compute seriailized size for both: | 8 This macro is expanded to compute seriailized size for both: |
| 9 - user-defined structs: the input is an instance of the corresponding struct | 9 - user-defined structs: the input is an instance of the corresponding struct |
| 10 wrapper class. | 10 wrapper class. |
| 11 - method parameters/response parameters: the input is a list of | 11 - method parameters/response parameters: the input is a list of |
| 12 arguments. | 12 arguments. |
| 13 It declares |size| of type size_t to store the resulting size. #} | 13 It declares |size| of type size_t to store the resulting size. #} |
| 14 {%- macro get_serialized_size(struct, input_field_pattern) -%} | 14 {%- macro get_serialized_size(struct, input_field_pattern) -%} |
| 15 size_t size = sizeof(internal::{{struct.name}}_Data); | 15 size_t size = sizeof(internal::{{struct.name}}_Data); |
| 16 {%- for pf in struct.packed.packed_fields_in_ordinal_order if pf.field.kind|is
_object_kind %} | 16 {%- for pf in struct.packed.packed_fields_in_ordinal_order if pf.field.kind|is
_object_kind %} |
| 17 {%- set name = pf.field.name -%} | 17 {%- set name = pf.field.name -%} |
| 18 {%- set kind = pf.field.kind -%} | 18 {%- set kind = pf.field.kind -%} |
| 19 {%- if kind|is_native_only_kind and kind|is_typemapped_kind %} | 19 {%- if kind|is_native_struct_kind and kind|is_typemapped_kind %} |
| 20 size += mojo::internal::GetSerializedSizeNative_( | 20 size += mojo::internal::GetSerializedSizeNative_( |
| 21 {{input_field_pattern|format(name)}}); | 21 {{input_field_pattern|format(name)}}); |
| 22 {%- elif kind|is_typemapped_kind %} | 22 {%- elif kind|is_typemapped_kind %} |
| 23 size += | 23 size += |
| 24 {{kind|get_name_for_kind}}_SerializerTraits_<{{kind|cpp_wrapper_type}}> | 24 {{kind|get_name_for_kind}}_SerializerTraits_<{{kind|cpp_wrapper_type}}> |
| 25 ::GetSize({{input_field_pattern|format(name)}}); | 25 ::GetSize({{input_field_pattern|format(name)}}); |
| 26 {%- elif kind|is_union_kind %} | 26 {%- elif kind|is_union_kind %} |
| 27 size += GetSerializedSize_({{input_field_pattern|format(name)}}, true); | 27 size += GetSerializedSize_({{input_field_pattern|format(name)}}, true); |
| 28 {%- else %} | 28 {%- else %} |
| 29 size += GetSerializedSize_({{input_field_pattern|format(name)}}); | 29 size += GetSerializedSize_({{input_field_pattern|format(name)}}); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 47 arguments. #} | 47 arguments. #} |
| 48 {%- macro serialize(struct, struct_display_name, input_field_pattern, output, bu
ffer) -%} | 48 {%- macro serialize(struct, struct_display_name, input_field_pattern, output, bu
ffer) -%} |
| 49 internal::{{struct.name}}_Data* {{output}} = | 49 internal::{{struct.name}}_Data* {{output}} = |
| 50 internal::{{struct.name}}_Data::New({{buffer}}); | 50 internal::{{struct.name}}_Data::New({{buffer}}); |
| 51 {%- for pf in struct.packed.packed_fields_in_ordinal_order %} | 51 {%- for pf in struct.packed.packed_fields_in_ordinal_order %} |
| 52 {%- set input_field = input_field_pattern|format(pf.field.name) %} | 52 {%- set input_field = input_field_pattern|format(pf.field.name) %} |
| 53 {%- set name = pf.field.name %} | 53 {%- set name = pf.field.name %} |
| 54 {%- set kind = pf.field.kind %} | 54 {%- set kind = pf.field.kind %} |
| 55 {%- if kind|is_object_kind %} | 55 {%- if kind|is_object_kind %} |
| 56 {%- if kind|is_array_kind or | 56 {%- if kind|is_array_kind or |
| 57 (kind|is_native_only_kind and not kind|is_typemapped_kind) %} | 57 (kind|is_native_struct_kind and not kind|is_typemapped_kind) %} |
| 58 const mojo::internal::ArrayValidateParams {{name}}_validate_params( | 58 const mojo::internal::ArrayValidateParams {{name}}_validate_params( |
| 59 {{kind|get_array_validate_params_ctor_args|indent(10)}}); | 59 {{kind|get_array_validate_params_ctor_args|indent(10)}}); |
| 60 mojo::SerializeArray_(std::move({{input_field}}), {{buffer}}, | 60 mojo::SerializeArray_(std::move({{input_field}}), {{buffer}}, |
| 61 &{{output}}->{{name}}.ptr, &{{name}}_validate_params); | 61 &{{output}}->{{name}}.ptr, &{{name}}_validate_params); |
| 62 {%- elif kind|is_map_kind %} | 62 {%- elif kind|is_map_kind %} |
| 63 const mojo::internal::ArrayValidateParams {{name}}_validate_params( | 63 const mojo::internal::ArrayValidateParams {{name}}_validate_params( |
| 64 {{kind.value_kind|get_map_validate_params_ctor_args|indent(10)}}); | 64 {{kind.value_kind|get_map_validate_params_ctor_args|indent(10)}}); |
| 65 mojo::SerializeMap_(std::move({{input_field}}), {{buffer}}, | 65 mojo::SerializeMap_(std::move({{input_field}}), {{buffer}}, |
| 66 &{{output}}->{{name}}.ptr, &{{name}}_validate_params); | 66 &{{output}}->{{name}}.ptr, &{{name}}_validate_params); |
| 67 {%- elif kind|is_native_only_kind and kind|is_typemapped_kind %} | 67 {%- elif kind|is_native_struct_kind and kind|is_typemapped_kind %} |
| 68 mojo::internal::SerializeNative_( | 68 mojo::internal::SerializeNative_( |
| 69 {{input_field}}, {{buffer}}, &{{output}}->{{name}}.ptr); | 69 {{input_field}}, {{buffer}}, &{{output}}->{{name}}.ptr); |
| 70 {%- elif kind|is_typemapped_kind %} | 70 {%- elif kind|is_typemapped_kind %} |
| 71 {{kind|get_name_for_kind}}_SerializerTraits_<{{kind|cpp_wrapper_type}}> | 71 {{kind|get_name_for_kind}}_SerializerTraits_<{{kind|cpp_wrapper_type}}> |
| 72 ::Serialize({{input_field}}, {{buffer}}, &{{output}}->{{name}}.ptr); | 72 ::Serialize({{input_field}}, {{buffer}}, &{{output}}->{{name}}.ptr); |
| 73 {%- elif kind|is_union_kind %} | 73 {%- elif kind|is_union_kind %} |
| 74 internal::{{kind.name}}_Data* {{name}}_ptr = &{{output}}->{{name}}; | 74 internal::{{kind.name}}_Data* {{name}}_ptr = &{{output}}->{{name}}; |
| 75 SerializeUnion_(std::move({{input_field}}), {{buffer}}, &{{name}}_ptr, true); | 75 SerializeUnion_(std::move({{input_field}}), {{buffer}}, &{{name}}_ptr, true); |
| 76 {%- else %} | 76 {%- else %} |
| 77 Serialize_(std::move({{input_field}}), {{buffer}}, &{{output}}->{{name}}.ptr); | 77 Serialize_(std::move({{input_field}}), {{buffer}}, &{{output}}->{{name}}.ptr); |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 143 {%- set last_checked_version = 0 %} | 143 {%- set last_checked_version = 0 %} |
| 144 {%- for pf in struct.packed.packed_fields_in_ordinal_order %} | 144 {%- for pf in struct.packed.packed_fields_in_ordinal_order %} |
| 145 {%- set output_field = output_field_pattern|format(pf.field.name) %} | 145 {%- set output_field = output_field_pattern|format(pf.field.name) %} |
| 146 {%- set name = pf.field.name %} | 146 {%- set name = pf.field.name %} |
| 147 {%- set kind = pf.field.kind %} | 147 {%- set kind = pf.field.kind %} |
| 148 {%- if pf.min_version > last_checked_version %} | 148 {%- if pf.min_version > last_checked_version %} |
| 149 {%- set last_checked_version = pf.min_version %} | 149 {%- set last_checked_version = pf.min_version %} |
| 150 if ({{input}}->header_.version < {{pf.min_version}}) | 150 if ({{input}}->header_.version < {{pf.min_version}}) |
| 151 break; | 151 break; |
| 152 {%- endif %} | 152 {%- endif %} |
| 153 {%- if kind|is_native_only_kind and kind|is_typemapped_kind %} | 153 {%- if kind|is_native_struct_kind and kind|is_typemapped_kind %} |
| 154 if (!DeserializeNative_( | 154 if (!DeserializeNative_( |
| 155 {{input}}->{{name}}.ptr, &{{output_field}}, {{context}})) { | 155 {{input}}->{{name}}.ptr, &{{output_field}}, {{context}})) { |
| 156 {{success}} = false; | 156 {{success}} = false; |
| 157 } | 157 } |
| 158 {%- elif kind|is_native_enum_kind and kind|is_typemapped_kind %} |
| 159 {{output_field}} = static_cast<{{kind|cpp_wrapper_type}}>( |
| 160 {{input}}->{{name}}.value); |
| 158 {%- elif kind|is_typemapped_kind %} | 161 {%- elif kind|is_typemapped_kind %} |
| 159 if (!{{kind|get_name_for_kind}}_SerializerTraits_<{{kind|cpp_wrapper_type}}> | 162 if (!{{kind|get_name_for_kind}}_SerializerTraits_<{{kind|cpp_wrapper_type}}> |
| 160 ::Deserialize( | 163 ::Deserialize( |
| 161 {{input}}->{{name}}.ptr, &{{output_field}}, {{context}})) { | 164 {{input}}->{{name}}.ptr, &{{output_field}}, {{context}})) { |
| 162 {{success}} = false; | 165 {{success}} = false; |
| 163 } | 166 } |
| 164 {%- elif kind|is_object_kind %} | 167 {%- elif kind|is_object_kind %} |
| 165 {%- if kind|is_union_kind %} | 168 {%- if kind|is_union_kind %} |
| 166 if (!Deserialize_(&{{input}}->{{name}}, &{{output_field}}, {{context}})) | 169 if (!Deserialize_(&{{input}}->{{name}}, &{{output_field}}, {{context}})) |
| 167 {{success}} = false; | 170 {{success}} = false; |
| (...skipping 14 matching lines...) Expand all Loading... |
| 182 &{{output_field}}, | 185 &{{output_field}}, |
| 183 ({{context}})->router->CreateLocalEndpointHandle(mojo::internal::FetchAn
dReset(&{{input}}->{{name}}))); | 186 ({{context}})->router->CreateLocalEndpointHandle(mojo::internal::FetchAn
dReset(&{{input}}->{{name}}))); |
| 184 {%- elif kind|is_enum_kind %} | 187 {%- elif kind|is_enum_kind %} |
| 185 {{output_field}} = static_cast<{{kind|cpp_wrapper_type}}>({{input}}->{{name}
}.value); | 188 {{output_field}} = static_cast<{{kind|cpp_wrapper_type}}>({{input}}->{{name}
}.value); |
| 186 {%- else %} | 189 {%- else %} |
| 187 {{output_field}} = {{input}}->{{name}}; | 190 {{output_field}} = {{input}}->{{name}}; |
| 188 {%- endif %} | 191 {%- endif %} |
| 189 {%- endfor %} | 192 {%- endfor %} |
| 190 } while (false); | 193 } while (false); |
| 191 {%- endmacro %} | 194 {%- endmacro %} |
| OLD | NEW |