OLD | NEW |
1 {#- Validates the specified field, which is supposed to be an object | 1 {#- Validates the specified field, which is supposed to be an object |
2 (struct/array/string/map/union). If it is a union, |union_is_inlined| | 2 (struct/array/string/map/union). If it is a union, |union_is_inlined| |
3 indicates whether the union is inlined. (Nested unions are not inlined.) | 3 indicates whether the union is inlined. (Nested unions are not inlined.) |
4 This macro is expanded by the Validate() method. #} | 4 This macro is expanded by the Validate() method. #} |
5 {%- macro validate_object(field, field_expr, object_name, union_is_inlined) %} | 5 {%- macro validate_object(field, field_expr, object_name, union_is_inlined) %} |
6 {%- set name = field.name %} | 6 {%- set name = field.name %} |
7 {%- set kind = field.kind %} | 7 {%- set kind = field.kind %} |
8 {%- if not kind|is_nullable_kind %} | 8 {%- if not kind|is_nullable_kind %} |
9 {%- if kind|is_union_kind and union_is_inlined %} | 9 {%- if kind|is_union_kind and union_is_inlined %} |
10 if (!mojo::internal::ValidateInlinedUnionNonNullable( | 10 if (!mojo::internal::ValidateInlinedUnionNonNullable( |
11 {{field_expr}}, "null {{name}} field in {{object_name}}")) { | 11 {{field_expr}}, "null {{name}} field in {{object_name}}", |
| 12 validation_context)) { |
12 return false; | 13 return false; |
13 } | 14 } |
14 {%- else %} | 15 {%- else %} |
15 if (!mojo::internal::ValidatePointerNonNullable( | 16 if (!mojo::internal::ValidatePointerNonNullable( |
16 {{field_expr}}, "null {{name}} field in {{object_name}}")) { | 17 {{field_expr}}, "null {{name}} field in {{object_name}}", |
| 18 validation_context)) { |
17 return false; | 19 return false; |
18 } | 20 } |
19 {%- endif %} | 21 {%- endif %} |
20 {%- endif %} | 22 {%- endif %} |
21 {%- if kind|is_array_kind or kind|is_string_kind %} | 23 {%- if kind|is_array_kind or kind|is_string_kind %} |
22 const mojo::internal::ContainerValidateParams {{name}}_validate_params( | 24 const mojo::internal::ContainerValidateParams {{name}}_validate_params( |
23 {{kind|get_container_validate_params_ctor_args|indent(6)}}); | 25 {{kind|get_container_validate_params_ctor_args|indent(6)}}); |
24 if (!mojo::internal::ValidateArray({{field_expr}}, bounds_checker, | 26 if (!mojo::internal::ValidateArray({{field_expr}}, validation_context, |
25 &{{name}}_validate_params)) { | 27 &{{name}}_validate_params)) { |
26 return false; | 28 return false; |
27 } | 29 } |
28 {%- elif kind|is_map_kind %} | 30 {%- elif kind|is_map_kind %} |
29 const mojo::internal::ContainerValidateParams {{name}}_validate_params( | 31 const mojo::internal::ContainerValidateParams {{name}}_validate_params( |
30 {{kind|get_container_validate_params_ctor_args|indent(6)}}); | 32 {{kind|get_container_validate_params_ctor_args|indent(6)}}); |
31 if (!mojo::internal::ValidateMap({{field_expr}}, bounds_checker, | 33 if (!mojo::internal::ValidateMap({{field_expr}}, validation_context, |
32 &{{name}}_validate_params)) { | 34 &{{name}}_validate_params)) { |
33 return false; | 35 return false; |
34 } | 36 } |
35 {%- elif kind|is_struct_kind %} | 37 {%- elif kind|is_struct_kind %} |
36 if (!mojo::internal::ValidateStruct({{field_expr}}, bounds_checker)) | 38 if (!mojo::internal::ValidateStruct({{field_expr}}, validation_context)) |
37 return false; | 39 return false; |
38 {%- elif kind|is_union_kind %} | 40 {%- elif kind|is_union_kind %} |
39 {%- if union_is_inlined %} | 41 {%- if union_is_inlined %} |
40 if (!mojo::internal::ValidateInlinedUnion({{field_expr}}, bounds_checker)) | 42 if (!mojo::internal::ValidateInlinedUnion({{field_expr}}, validation_context)) |
41 return false; | 43 return false; |
42 {%- else %} | 44 {%- else %} |
43 if (!mojo::internal::ValidateNonInlinedUnion({{field_expr}}, bounds_checker)) | 45 if (!mojo::internal::ValidateNonInlinedUnion({{field_expr}}, |
| 46 validation_context)) |
44 return false; | 47 return false; |
45 {%- endif %} | 48 {%- endif %} |
46 {%- else %} | 49 {%- else %} |
47 #error Not reached! | 50 #error Not reached! |
48 {%- endif %} | 51 {%- endif %} |
49 {%- endmacro %} | 52 {%- endmacro %} |
50 | 53 |
51 {#- Validates the specified field, which is supposed to be a handle or contain a | 54 {#- Validates the specified field, which is supposed to be a handle or contain a |
52 handle (in the case of interfaces). | 55 handle (in the case of interfaces). |
53 This macro is expanded by the Validate() method. #} | 56 This macro is expanded by the Validate() method. #} |
54 {%- macro validate_handle(field, field_expr, object_name) %} | 57 {%- macro validate_handle(field, field_expr, object_name) %} |
55 {%- set name = field.name %} | 58 {%- set name = field.name %} |
56 {%- set kind = field.kind %} | 59 {%- set kind = field.kind %} |
57 {%- if kind|is_interface_kind %} | 60 {%- if kind|is_interface_kind %} |
58 const mojo::internal::Handle_Data {{name}}_handle = {{field_expr}}.handle; | 61 const mojo::internal::Handle_Data {{name}}_handle = {{field_expr}}.handle; |
59 {%- else %} | 62 {%- else %} |
60 const mojo::internal::Handle_Data {{name}}_handle = {{field_expr}}; | 63 const mojo::internal::Handle_Data {{name}}_handle = {{field_expr}}; |
61 {%- endif %} | 64 {%- endif %} |
62 {%- if not kind|is_nullable_kind %} | 65 {%- if not kind|is_nullable_kind %} |
63 if (!mojo::internal::ValidateHandleNonNullable( | 66 if (!mojo::internal::ValidateHandleNonNullable( |
64 {{name}}_handle, | 67 {{name}}_handle, |
65 "invalid {{name}} field in {{object_name}}")) { | 68 "invalid {{name}} field in {{object_name}}", validation_context)) { |
66 return false; | 69 return false; |
67 } | 70 } |
68 {%- endif %} | 71 {%- endif %} |
69 if (!mojo::internal::ValidateHandle({{name}}_handle, bounds_checker)) | 72 if (!mojo::internal::ValidateHandle({{name}}_handle, validation_context)) |
70 return false; | 73 return false; |
71 {%- endmacro %} | 74 {%- endmacro %} |
72 | 75 |
73 {#- Validates the specified field, which is supposed to be an associated | 76 {#- Validates the specified field, which is supposed to be an associated |
74 interface or an associated interface request. | 77 interface or an associated interface request. |
75 This macro is expanded by the Validate() method. #} | 78 This macro is expanded by the Validate() method. #} |
76 {%- macro validate_associated(field, field_expr, object_name) %} | 79 {%- macro validate_associated(field, field_expr, object_name) %} |
77 {%- set name = field.name %} | 80 {%- set name = field.name %} |
78 {%- set kind = field.kind %} | 81 {%- set kind = field.kind %} |
79 {%- if kind|is_associated_interface_kind %} | 82 {%- if kind|is_associated_interface_kind %} |
80 const mojo::internal::InterfaceId {{name}}_interface_id = | 83 const mojo::internal::InterfaceId {{name}}_interface_id = |
81 {{field_expr}}.interface_id; | 84 {{field_expr}}.interface_id; |
82 {%- else %} | 85 {%- else %} |
83 const mojo::internal::InterfaceId {{name}}_interface_id = {{field_expr}}; | 86 const mojo::internal::InterfaceId {{name}}_interface_id = {{field_expr}}; |
84 {%- endif %} | 87 {%- endif %} |
85 {%- if not kind|is_nullable_kind %} | 88 {%- if not kind|is_nullable_kind %} |
86 if (!mojo::internal::ValidateInterfaceIdNonNullable( | 89 if (!mojo::internal::ValidateInterfaceIdNonNullable( |
87 {{name}}_interface_id, | 90 {{name}}_interface_id, |
88 "invalid {{name}} field in {{object_name}}")) { | 91 "invalid {{name}} field in {{object_name}}", validation_context)) { |
89 return false; | 92 return false; |
90 } | 93 } |
91 {%- endif %} | 94 {%- endif %} |
92 if (!mojo::internal::ValidateAssociatedInterfaceId({{name}}_interface_id)) | 95 if (!mojo::internal::ValidateAssociatedInterfaceId({{name}}_interface_id, |
| 96 validation_context)) { |
93 return false; | 97 return false; |
| 98 } |
94 {%- endmacro %} | 99 {%- endmacro %} |
95 | 100 |
96 {#- Validates the specified field, which is supposed to be an enum. | 101 {#- Validates the specified field, which is supposed to be an enum. |
97 This macro is expanded by the Validate() method. #} | 102 This macro is expanded by the Validate() method. #} |
98 {%- macro validate_enum(field, field_expr) %} | 103 {%- macro validate_enum(field, field_expr) %} |
99 if (!{{field.kind|get_qualified_name_for_kind(internal=True)}}::Validate({{fie
ld_expr}})) | 104 if (!{{field.kind|get_qualified_name_for_kind(internal=True)}} |
| 105 ::Validate({{field_expr}}, validation_context)) |
100 return false; | 106 return false; |
101 {%- endmacro %} | 107 {%- endmacro %} |
102 | 108 |
103 {%- macro validate_field(field, field_expr, object_name, union_is_inlined) %} | 109 {%- macro validate_field(field, field_expr, object_name, union_is_inlined) %} |
104 {%- if field.kind|is_object_kind -%} | 110 {%- if field.kind|is_object_kind -%} |
105 {{validate_object(field, field_expr, object_name, union_is_inlined)}} | 111 {{validate_object(field, field_expr, object_name, union_is_inlined)}} |
106 {%- elif field.kind|is_any_handle_kind or field.kind|is_interface_kind -%} | 112 {%- elif field.kind|is_any_handle_kind or field.kind|is_interface_kind -%} |
107 {{validate_handle(field, field_expr, object_name)}} | 113 {{validate_handle(field, field_expr, object_name)}} |
108 {%- elif field.kind|is_associated_kind %} | 114 {%- elif field.kind|is_associated_kind %} |
109 {{validate_associated(field, field_expr, object_name)}} | 115 {{validate_associated(field, field_expr, object_name)}} |
110 {%- elif field.kind|is_enum_kind %} | 116 {%- elif field.kind|is_enum_kind %} |
111 {{validate_enum(field, field_expr)}} | 117 {{validate_enum(field, field_expr)}} |
112 {%- endif %} | 118 {%- endif %} |
113 {%- endmacro %} | 119 {%- endmacro %} |
OLD | NEW |