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

Side by Side Diff: mojo/public/tools/bindings/pylib/mojom/generate/data.py

Issue 611633002: mojom: Add associative arrays to the mojom language. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Moved test classes to their own shared file. Created 6 years, 2 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
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 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
116 kind = LookupKind(kinds, data, scope) 116 kind = LookupKind(kinds, data, scope)
117 if kind: 117 if kind:
118 return kind 118 return kind
119 119
120 if data.startswith('?'): 120 if data.startswith('?'):
121 kind = KindFromData(kinds, data[1:], scope).MakeNullableKind() 121 kind = KindFromData(kinds, data[1:], scope).MakeNullableKind()
122 elif data.startswith('a:'): 122 elif data.startswith('a:'):
123 kind = mojom.Array(KindFromData(kinds, data[2:], scope)) 123 kind = mojom.Array(KindFromData(kinds, data[2:], scope))
124 elif data.startswith('r:'): 124 elif data.startswith('r:'):
125 kind = mojom.InterfaceRequest(KindFromData(kinds, data[2:], scope)) 125 kind = mojom.InterfaceRequest(KindFromData(kinds, data[2:], scope))
126 elif data.startswith('m['):
127 # Isolate the two types from their brackets
128 first_kind = data[2:data.find(']')]
129 second_kind = data[data.rfind('[')+1:data.rfind(']')]
130 kind = mojom.Map(KindFromData(kinds, first_kind, scope),
131 KindFromData(kinds, second_kind, scope))
126 elif data.startswith('a'): 132 elif data.startswith('a'):
127 colon = data.find(':') 133 colon = data.find(':')
128 length = int(data[1:colon]) 134 length = int(data[1:colon])
129 kind = mojom.FixedArray(length, KindFromData(kinds, data[colon+1:], scope)) 135 kind = mojom.FixedArray(length, KindFromData(kinds, data[colon+1:], scope))
130 else: 136 else:
131 kind = mojom.Kind(data) 137 kind = mojom.Kind(data)
132 138
133 kinds[data] = kind 139 kinds[data] = kind
134 return kind 140 return kind
135 141
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after
374 380
375 def OrderedModuleFromData(data): 381 def OrderedModuleFromData(data):
376 module = ModuleFromData(data) 382 module = ModuleFromData(data)
377 for interface in module.interfaces: 383 for interface in module.interfaces:
378 next_ordinal = 0 384 next_ordinal = 0
379 for method in interface.methods: 385 for method in interface.methods:
380 if method.ordinal is None: 386 if method.ordinal is None:
381 method.ordinal = next_ordinal 387 method.ordinal = next_ordinal
382 next_ordinal = method.ordinal + 1 388 next_ordinal = method.ordinal + 1
383 return module 389 return module
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698