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

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

Issue 1618963006: Mojo C++ bindings: support enum validation. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 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 {%- import "validation_macros.tmpl" as validation_macros %} 1 {%- import "validation_macros.tmpl" as validation_macros %}
2 {%- set class_name = union.name ~ "_Data" %} 2 {%- set class_name = union.name ~ "_Data" %}
3 {%- set enum_name = union.name ~ "_Tag" -%} 3 {%- set enum_name = union.name ~ "_Tag" -%}
4 4
5 // static 5 // static
6 {{class_name}}* {{class_name}}::New(mojo::internal::Buffer* buf) { 6 {{class_name}}* {{class_name}}::New(mojo::internal::Buffer* buf) {
7 return new (buf->Allocate(sizeof({{class_name}}))) {{class_name}}(); 7 return new (buf->Allocate(sizeof({{class_name}}))) {{class_name}}();
8 } 8 }
9 9
10 // static 10 // static
(...skipping 16 matching lines...) Expand all
27 ReportValidationError( 27 ReportValidationError(
28 mojo::internal::VALIDATION_ERROR_ILLEGAL_MEMORY_RANGE); 28 mojo::internal::VALIDATION_ERROR_ILLEGAL_MEMORY_RANGE);
29 return false; 29 return false;
30 } 30 }
31 const {{class_name}}* object = static_cast<const {{class_name}}*>(data); 31 const {{class_name}}* object = static_cast<const {{class_name}}*>(data);
32 MOJO_ALLOW_UNUSED_LOCAL(object); 32 MOJO_ALLOW_UNUSED_LOCAL(object);
33 33
34 switch (object->tag) { 34 switch (object->tag) {
35 {% for field in union.fields %} 35 {% for field in union.fields %}
36 case {{enum_name}}::{{field.name|upper}}: { 36 case {{enum_name}}::{{field.name|upper}}: {
37 {{ validation_macros.validate_union_field(field, union)|indent(8) }} 37 {{ validation_macros.validate_union_field(field, union)|indent(6) }}
38 } 38 }
39 {%- endfor %} 39 {%- endfor %}
40 default: { 40 default: {
41 ReportValidationError( 41 ReportValidationError(
42 mojo::internal::VALIDATION_ERROR_UNKNOWN_UNION_TAG, 42 mojo::internal::VALIDATION_ERROR_UNKNOWN_UNION_TAG,
43 "unknown tag in {{union.name}}"); 43 "unknown tag in {{union.name}}");
44 return false; 44 return false;
45 } 45 }
46 } 46 }
47 } 47 }
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
87 {%- elif field.kind|is_interface_kind %} 87 {%- elif field.kind|is_interface_kind %}
88 mojo::internal::DecodeHandle( 88 mojo::internal::DecodeHandle(
89 reinterpret_cast<mojo::internal::Interface_Data*>( 89 reinterpret_cast<mojo::internal::Interface_Data*>(
90 &data.f_{{field.name}}), handles); 90 &data.f_{{field.name}}), handles);
91 {%- endif %} 91 {%- endif %}
92 return; 92 return;
93 } 93 }
94 {%- endfor %} 94 {%- endfor %}
95 } 95 }
96 } 96 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698