OLD | NEW |
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 |
11 bool {{class_name}}::Validate(const void* data, | 11 bool {{class_name}}::Validate( |
12 mojo::internal::BoundsChecker* bounds_checker, | 12 const void* data, |
13 bool inlined) { | 13 mojo::internal::ValidationContext* validation_context, |
| 14 bool inlined) { |
14 if (!data) | 15 if (!data) |
15 return true; | 16 return true; |
16 | 17 |
17 if (!ValidateUnionHeaderAndClaimMemory(data, inlined, bounds_checker)) | 18 if (!ValidateUnionHeaderAndClaimMemory(data, inlined, validation_context)) |
18 return false; | 19 return false; |
19 | 20 |
20 const {{class_name}}* object = static_cast<const {{class_name}}*>(data); | 21 const {{class_name}}* object = static_cast<const {{class_name}}*>(data); |
21 ALLOW_UNUSED_LOCAL(object); | 22 ALLOW_UNUSED_LOCAL(object); |
22 | 23 |
23 switch (object->tag) { | 24 switch (object->tag) { |
24 {% for field in union.fields %} | 25 {% for field in union.fields %} |
25 case {{enum_name}}::{{field.name|upper}}: { | 26 case {{enum_name}}::{{field.name|upper}}: { |
26 {%- set field_expr = "object->data.f_" ~ field.name %} | 27 {%- set field_expr = "object->data.f_" ~ field.name %} |
27 {{validation_macros.validate_field(field, field_expr, union.name, false)|indent(
4)}} | 28 {{validation_macros.validate_field(field, field_expr, union.name, false)|indent(
4)}} |
28 return true; | 29 return true; |
29 } | 30 } |
30 {%- endfor %} | 31 {%- endfor %} |
31 default: { | 32 default: { |
32 ReportValidationError( | 33 ReportValidationError( |
| 34 validation_context, |
33 mojo::internal::VALIDATION_ERROR_UNKNOWN_UNION_TAG, | 35 mojo::internal::VALIDATION_ERROR_UNKNOWN_UNION_TAG, |
34 "unknown tag in {{union.name}}"); | 36 "unknown tag in {{union.name}}"); |
35 return false; | 37 return false; |
36 } | 38 } |
37 } | 39 } |
38 } | 40 } |
39 | 41 |
40 void {{class_name}}::set_null() { | 42 void {{class_name}}::set_null() { |
41 size = 0U; | 43 size = 0U; |
42 tag = static_cast<{{enum_name}}>(0); | 44 tag = static_cast<{{enum_name}}>(0); |
(...skipping 21 matching lines...) Expand all Loading... |
64 {%- for field in union.fields %} | 66 {%- for field in union.fields %} |
65 case {{enum_name}}::{{field.name|upper}}: { | 67 case {{enum_name}}::{{field.name|upper}}: { |
66 {%- if field.kind|is_object_kind %} | 68 {%- if field.kind|is_object_kind %} |
67 mojo::internal::Decode(&data.f_{{field.name}}); | 69 mojo::internal::Decode(&data.f_{{field.name}}); |
68 {%- endif %} | 70 {%- endif %} |
69 return; | 71 return; |
70 } | 72 } |
71 {%- endfor %} | 73 {%- endfor %} |
72 } | 74 } |
73 } | 75 } |
OLD | NEW |