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

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

Issue 2250183003: Make the fuchsia mojo/public repo the source of truth. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 4 years, 4 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
(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 %}
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698