OLD | NEW |
1 # Copyright 2013 The Chromium Authors. All rights reserved. | 1 # Copyright 2013 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 # TODO(vtl): "data" is a pretty vague name. Rename it? | 5 # TODO(vtl): "data" is a pretty vague name. Rename it? |
6 | 6 |
7 import copy | 7 import copy |
8 | 8 |
9 import module as mojom | 9 import module as mojom |
10 | 10 |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
125 | 125 |
126 def StructToData(struct): | 126 def StructToData(struct): |
127 return { | 127 return { |
128 istr(0, 'name'): struct.name, | 128 istr(0, 'name'): struct.name, |
129 istr(1, 'fields'): map(FieldToData, struct.fields) | 129 istr(1, 'fields'): map(FieldToData, struct.fields) |
130 } | 130 } |
131 | 131 |
132 def StructFromData(module, data): | 132 def StructFromData(module, data): |
133 struct = mojom.Struct(module=module) | 133 struct = mojom.Struct(module=module) |
134 struct.name = data['name'] | 134 struct.name = data['name'] |
| 135 struct.attributes = data['attributes'] |
135 struct.spec = 'x:' + module.namespace + '.' + struct.name | 136 struct.spec = 'x:' + module.namespace + '.' + struct.name |
136 module.kinds[struct.spec] = struct | 137 module.kinds[struct.spec] = struct |
137 struct.enums = map(lambda enum: | 138 struct.enums = map(lambda enum: |
138 EnumFromData(module, enum, struct), data['enums']) | 139 EnumFromData(module, enum, struct), data['enums']) |
139 # Stash fields data here temporarily. | 140 # Stash fields data here temporarily. |
140 struct.fields_data = data['fields'] | 141 struct.fields_data = data['fields'] |
141 return struct | 142 return struct |
142 | 143 |
143 def FieldToData(field): | 144 def FieldToData(field): |
144 data = { | 145 data = { |
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
277 def ModuleFromData(data): | 278 def ModuleFromData(data): |
278 module = mojom.Module() | 279 module = mojom.Module() |
279 module.kinds = {} | 280 module.kinds = {} |
280 for kind in mojom.PRIMITIVES: | 281 for kind in mojom.PRIMITIVES: |
281 module.kinds[kind.spec] = kind | 282 module.kinds[kind.spec] = kind |
282 | 283 |
283 module.constants = {} | 284 module.constants = {} |
284 | 285 |
285 module.name = data['name'] | 286 module.name = data['name'] |
286 module.namespace = data['namespace'] | 287 module.namespace = data['namespace'] |
| 288 module.attributes = data['attributes'] |
287 # Imports must come first, because they add to module.kinds which is used | 289 # Imports must come first, because they add to module.kinds which is used |
288 # by by the others. | 290 # by by the others. |
289 module.imports = map( | 291 module.imports = map( |
290 lambda import_data: ImportFromData(module, import_data), | 292 lambda import_data: ImportFromData(module, import_data), |
291 data['imports']) | 293 data['imports']) |
292 | 294 |
293 # First pass collects kinds. | 295 # First pass collects kinds. |
294 module.enums = map( | 296 module.enums = map( |
295 lambda enum: EnumFromData(module, enum, None), data['enums']) | 297 lambda enum: EnumFromData(module, enum, None), data['enums']) |
296 module.structs = map( | 298 module.structs = map( |
(...skipping 18 matching lines...) Expand all Loading... |
315 def OrderedModuleFromData(data): | 317 def OrderedModuleFromData(data): |
316 module = ModuleFromData(data) | 318 module = ModuleFromData(data) |
317 next_interface_ordinal = 0 | 319 next_interface_ordinal = 0 |
318 for interface in module.interfaces: | 320 for interface in module.interfaces: |
319 next_ordinal = 0 | 321 next_ordinal = 0 |
320 for method in interface.methods: | 322 for method in interface.methods: |
321 if method.ordinal is None: | 323 if method.ordinal is None: |
322 method.ordinal = next_ordinal | 324 method.ordinal = next_ordinal |
323 next_ordinal = method.ordinal + 1 | 325 next_ordinal = method.ordinal + 1 |
324 return module | 326 return module |
OLD | NEW |