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

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

Issue 1635613002: [mojo-bindings] Support reuse of native enum classes (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix more missing public_deps 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 {# 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
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
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
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 %}
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698