OLD | NEW |
(Empty) | |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 {%- macro writeMojomTypeDef(type, typepkg, pkg) -%} |
| 6 {%- if should_gen_mojom_types -%} |
| 7 {%- if type|is_enum_kind -%} |
| 8 {{typepkg}}MojomEnum _{{type|mojom_type_identifier|lower_camel}}() { |
| 9 return {{ writeMojomType(type, typepkg, pkg) }}; |
| 10 } |
| 11 {%- elif type|is_struct_kind -%} |
| 12 {{typepkg}}MojomStruct _{{type|mojom_type_identifier|lower_camel}}() { |
| 13 return {{ writeMojomType(type, typepkg, pkg) }}; |
| 14 } |
| 15 {%- elif type|is_union_kind -%} |
| 16 {{typepkg}}MojomUnion _{{type|mojom_type_identifier|lower_camel}}() { |
| 17 return {{ writeMojomType(type, typepkg, pkg) }}; |
| 18 } |
| 19 {%- elif type|is_interface_kind -%} |
| 20 {{typepkg}}MojomInterface _{{type|mojom_type_identifier|lower_camel}}() { |
| 21 return new {{typepkg}}MojomInterface() |
| 22 ..declData = (new {{typepkg}}DeclarationData() |
| 23 ..shortName = '{{type|mojom_type_name|upper_camel}}' |
| 24 ..fullIdentifier = '{{type|fullidentifier}}') |
| 25 ..interfaceName = '{{type|name}}' |
| 26 ..methods = <int, {{typepkg}}MojomMethod>{ |
| 27 {%- for method in type.methods %} |
| 28 _{{type|name}}_{{method|name}}Name: new {{typepkg}}MojomMethod() |
| 29 ..declData = (new {{typepkg}}DeclarationData() |
| 30 ..shortName = '{{method|mojom_type_name|upper_camel}}') |
| 31 ..ordinal = _{{type|name}}_{{method|name}}Name |
| 32 {%- if method.response_parameters != None %} |
| 33 ..responseParams = _{{method.response_param_struct|mojom_type_identifier
|lower_camel}}() |
| 34 {%- endif %} |
| 35 ..parameters = _{{method.param_struct|mojom_type_identifier|lower_camel}
}(), |
| 36 {%- endfor %} |
| 37 }; |
| 38 } |
| 39 |
| 40 {%- else -%} |
| 41 {{ raise("Bad type name given: {{type|name}}") }} |
| 42 {%- endif -%} |
| 43 {%- endif -%} |
| 44 {%- endmacro -%} |
| 45 |
| 46 |
| 47 {%- macro writeMojomType(type, typepkg, pkg, topLevel=true) -%} |
| 48 {%- if type|is_numerical_kind -%}{#- bool, int, and uint case -#} |
| 49 new {{typepkg}}Type() |
| 50 ..simpleType = {{typepkg}}SimpleType.{{type|simple_mojom_type_name}} |
| 51 {%- elif type|is_any_handle_kind and not type|is_interface_request_kind -%} |
| 52 new {{typepkg}}Type() |
| 53 ..handleType = (new {{typepkg}}HandleType() |
| 54 ..kind = {{typepkg}}HandleTypeKind.{{type|simple_mojom_type_name}} |
| 55 {%- if type|is_nullable_kind %} |
| 56 ..nullable = true |
| 57 {% endif %}) |
| 58 {%- elif type|is_string_kind -%} |
| 59 new {{typepkg}}Type() |
| 60 ..stringType = (new {{typepkg}}StringType() |
| 61 {%- if type|is_nullable_kind %} |
| 62 ..nullable = true |
| 63 {% endif %}) |
| 64 {%- elif type|is_array_kind -%} |
| 65 {{writeTypeArrayType(type, typepkg, pkg)}} |
| 66 {%- elif type|is_map_kind -%} |
| 67 {{writeTypeMapType(type, typepkg, pkg)}} |
| 68 {%- elif type|is_enum_kind or type|is_struct_kind or type|is_union_kind -%} |
| 69 {%- if topLevel -%} |
| 70 {%- if type|is_enum_kind -%} |
| 71 {{writeMojomEnumType(type, typepkg, pkg)}} |
| 72 {%- elif type|is_struct_kind -%} |
| 73 {{writeMojomStructType(type, typepkg, pkg)}} |
| 74 {%- else -%} {#- Must be a union -#} |
| 75 {{writeMojomUnionType(type, typepkg, pkg)}} |
| 76 {%- endif -%} |
| 77 {%- else -%} |
| 78 {{writeTypeTypeReference(type, typepkg, pkg)}} |
| 79 {%- endif -%} |
| 80 {%- elif type|is_interface_kind or type|is_interface_request_kind -%} |
| 81 {{writeTypeTypeReference(type, typepkg, pkg)}} |
| 82 {%- else -%} |
| 83 {{ raise("Unsupported type: {{type|name}}") }} |
| 84 {%- endif -%} |
| 85 {%- endmacro -%} |
| 86 |
| 87 |
| 88 {%- macro writeTypeArrayType(type, typepkg, pkg) -%} |
| 89 new {{typepkg}}Type()..arrayType = (new {{typepkg}}ArrayType() |
| 90 {%- if type|is_nullable_kind %} |
| 91 ..nullable = true |
| 92 {% endif -%} |
| 93 {%- if type.length is not none -%} |
| 94 ..fixedLength = {{type.length}} |
| 95 {%- endif %} |
| 96 ..elementType = ({{writeMojomType(type.kind, typepkg, pkg, false)|indent(8)}
})) |
| 97 {%- endmacro -%} |
| 98 |
| 99 {%- macro writeTypeMapType(type, typepkg, pkg) -%} |
| 100 new {{typepkg}}Type()..mapType = (new {{typepkg}}MapType() |
| 101 {%- if type|is_nullable_kind %} |
| 102 ..nullable = true |
| 103 {% endif %} |
| 104 ..keyType = ({{writeMojomType(type.key_kind, typepkg, pkg, false)|indent(8)}
}) |
| 105 ..valueType = ({{writeMojomType(type.value_kind, typepkg, pkg, false)|indent
(8)}})) |
| 106 {%- endmacro -%} |
| 107 |
| 108 {%- macro writeMojomEnumType(type, typepkg, pkg) -%} |
| 109 new {{typepkg}}MojomEnum() |
| 110 ..declData = (new {{typepkg}}DeclarationData() |
| 111 ..shortName = '{{type|mojom_type_name|upper_camel}}' |
| 112 ..fullIdentifier = '{{type|fullidentifier}}') |
| 113 ..values = <{{typepkg}}EnumValue>[ |
| 114 {%- for field in type.fields %} |
| 115 new {{typepkg}}EnumValue() |
| 116 ..declData = (new {{typepkg}}DeclarationData() |
| 117 ..shortName = '{{field|mojom_type_name|upper_camel}}') |
| 118 ..enumTypeKey = {{writePackagedTypeID(type)}} |
| 119 ..intValue = {{field.numeric_value}}, |
| 120 {%- endfor -%} |
| 121 ] |
| 122 {%- endmacro -%} |
| 123 |
| 124 |
| 125 {%- macro writeTypeTypeReference(type, typepkg, pkg) -%} |
| 126 new {{typepkg}}Type() |
| 127 ..typeReference = ({{writeTypeReference(type, typepkg, pkg)}}) |
| 128 {%- endmacro -%} |
| 129 |
| 130 {%- macro writeTypeReference(type, typepkg, pkg) -%} |
| 131 new {{typepkg}}TypeReference() |
| 132 {%- if type|is_nullable_kind %} |
| 133 ..nullable = true |
| 134 {% endif %} |
| 135 {% if type|is_interface_request_kind %}{# Interface request collapses to inter
face. #} |
| 136 ..isInterfaceRequest = true |
| 137 ..identifier = {{writePackagedTypeID(type.kind)}} |
| 138 ..typeKey = {{writePackagedTypeID(type.kind)}} |
| 139 {% else %} |
| 140 ..identifier = {{writePackagedTypeID(type)}} |
| 141 ..typeKey = {{writePackagedTypeID(type)}} |
| 142 {% endif -%} |
| 143 {%- endmacro -%} |
| 144 |
| 145 {%- macro writePackagedTypeID(type) -%} |
| 146 '{{type|mojom_type_identifier}}' |
| 147 {%- endmacro -%} |
| 148 |
| 149 {%- macro writeMojomStructType(type, typepkg, pkg) -%} |
| 150 new {{typepkg}}MojomStruct() |
| 151 ..declData = (new {{typepkg}}DeclarationData() |
| 152 ..shortName = '{{type|mojom_type_name|upper_camel}}' |
| 153 ..fullIdentifier = '{{type|fullidentifier}}') |
| 154 {%- if type|is_nullable_kind %} |
| 155 ..nullable = true |
| 156 {% endif %} |
| 157 ..fields = <{{typepkg}}StructField>[ |
| 158 {%- for field in type.fields %} |
| 159 new {{typepkg}}StructField() |
| 160 ..declData = (new {{typepkg}}DeclarationData() |
| 161 ..shortName = '{{field|mojom_type_name|upper_camel}}') |
| 162 ..type = ({{writeMojomType(field.kind, typepkg, pkg, false)|indent(6)}})
, |
| 163 {%- endfor -%} |
| 164 ] |
| 165 {%- endmacro -%} |
| 166 |
| 167 {%- macro writeMojomUnionType(type, typepkg, pkg) -%} |
| 168 new {{typepkg}}MojomUnion() |
| 169 ..declData = (new {{typepkg}}DeclarationData() |
| 170 ..shortName = '{{type|mojom_type_name|upper_camel}}' |
| 171 ..fullIdentifier = '{{type|fullidentifier}}') |
| 172 {%- if type|is_nullable_kind %} |
| 173 ..nullable = true |
| 174 {% endif %} |
| 175 ..fields = <{{typepkg}}UnionField>[ |
| 176 {%- for field in type.fields %} |
| 177 new {{typepkg}}UnionField() |
| 178 ..declData = (new {{typepkg}}DeclarationData() |
| 179 ..shortName = '{{field|name|upper_camel}}') |
| 180 ..type = ({{writeMojomType(field.kind, typepkg, pkg, false)|indent(6)}}) |
| 181 ..tag = {{field.ordinal}}, |
| 182 {%- endfor -%} |
| 183 ] |
| 184 {%- endmacro -%} |
OLD | NEW |