OLD | NEW |
| (Empty) |
1 {# TODO(vardhan): Fill out the remaining validation error strings. #} | |
2 {%- macro validate_not_null_ptr(field_expr, field, object_name, err_string) %} | |
3 if (!{{field_expr}}->offset) { | |
4 MOJO_INTERNAL_DEBUG_SET_ERROR_MSG({{err_string}}) | |
5 << "null field '{{field.name}}' in '{{object_name}}'"; | |
6 return mojo::internal::ValidationError::UNEXPECTED_NULL_POINTER; | |
7 } | |
8 {%- endmacro %} | |
9 | |
10 {%- macro validate_encoded_ptr(field_expr, err_string) %} | |
11 if (!mojo::internal::ValidateEncodedPointer(&{{field_expr}}->offset)) { | |
12 MOJO_INTERNAL_DEBUG_SET_ERROR_MSG({{err_string}}) << ""; | |
13 return mojo::internal::ValidationError::ILLEGAL_POINTER; | |
14 } | |
15 {%- endmacro %} | |
16 | |
17 {%- macro validate_array_or_string(field_expr, field, err_string) -%} | |
18 const mojo::internal::ArrayValidateParams {{field.name}}_validate_params( | |
19 {{field.kind|get_array_validate_params_ctor_args|indent(4)}}); | |
20 auto validate_retval = {{field.kind|cpp_wrapper_type}}::Data_::Validate( | |
21 mojo::internal::DecodePointerRaw(&{{field_expr}}->offset), | |
22 bounds_checker, &{{field.name}}_validate_params, | |
23 {{err_string}}); | |
24 if (validate_retval != mojo::internal::ValidationError::NONE) { | |
25 return validate_retval; | |
26 } | |
27 {%- endmacro %} | |
28 | |
29 {%- macro validate_handle(field_expr, field, object_name, err_string) -%} | |
30 const mojo::Handle {{field.name}}_handle(object->data.f_{{field.name}}); | |
31 | |
32 {%- if not field.kind|is_nullable_kind %} | |
33 if ({{field.name}}_handle.value() == mojo::internal::kEncodedInvalidHandleValu
e) { | |
34 MOJO_INTERNAL_DEBUG_SET_ERROR_MSG({{err_string}}) | |
35 << "invalid {{field.name}} field in {{object_name}}"; | |
36 return mojo::internal::ValidationError::UNEXPECTED_INVALID_HANDLE; | |
37 } | |
38 {%- endif %} | |
39 if (!bounds_checker->ClaimHandle({{field.name}}_handle)) { | |
40 MOJO_INTERNAL_DEBUG_SET_ERROR_MSG({{err_string}}) << ""; | |
41 return mojo::internal::ValidationError::ILLEGAL_HANDLE; | |
42 } | |
43 {%- endmacro -%} | |
44 | |
45 {%- macro validate_union_field(field, union, err_string) %} | |
46 {%- set field_expr = "(reinterpret_cast<const " | |
47 ~ field.kind|cpp_union_field_type | |
48 ~ "*>(&object->data.f_" | |
49 ~ field.name | |
50 ~ "))" -%} | |
51 {%- if field.kind|is_object_kind -%} | |
52 {%- if not field.kind|is_nullable_kind -%} | |
53 {{ validate_not_null_ptr(field_expr, field, union.name, err_string) }} | |
54 {%- endif %} | |
55 {{ validate_encoded_ptr(field_expr, err_string) }} | |
56 {%- endif %} | |
57 | |
58 {%- if field.kind|is_array_kind or field.kind|is_string_kind -%} | |
59 {{ validate_array_or_string(field_expr, field, err_string) }} | |
60 {%- endif %} | |
61 | |
62 {%- if field.kind|is_any_handle_kind -%} | |
63 {{ validate_handle(field_expr, field, union.name, err_string) }} | |
64 {%- endif %} | |
65 return mojo::internal::ValidationError::NONE; | |
66 {%- endmacro %} | |
OLD | NEW |