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

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

Issue 1824263002: Mojom backend: Stop re-computing version info and field packing data. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 4 years, 9 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 # This module's classes provide an interface to mojo modules. Modules are 5 # This module's classes provide an interface to mojo modules. Modules are
6 # collections of interfaces and structs to be used by mojo ipc clients and 6 # collections of interfaces and structs to be used by mojo ipc clients and
7 # servers. 7 # servers.
8 # 8 #
9 # A simple interface would be created this way: 9 # A simple interface would be created this way:
10 # module = mojom.generate.module.Module('Foo') 10 # module = mojom.generate.module.Module('Foo')
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
123 SHAREDBUFFER, 123 SHAREDBUFFER,
124 NULLABLE_STRING, 124 NULLABLE_STRING,
125 NULLABLE_HANDLE, 125 NULLABLE_HANDLE,
126 NULLABLE_DCPIPE, 126 NULLABLE_DCPIPE,
127 NULLABLE_DPPIPE, 127 NULLABLE_DPPIPE,
128 NULLABLE_MSGPIPE, 128 NULLABLE_MSGPIPE,
129 NULLABLE_SHAREDBUFFER 129 NULLABLE_SHAREDBUFFER
130 ) 130 )
131 131
132 132
133 ATTRIBUTE_MIN_VERSION = 'MinVersion'
134
135
136 class NamedValue(object): 133 class NamedValue(object):
137 def __init__(self, module=None, parent_kind=None, name=None): 134 def __init__(self, module=None, parent_kind=None, name=None):
138 self.module = module 135 self.module = module
139 if module: 136 if module:
140 self.namespace = module.namespace 137 self.namespace = module.namespace
141 self.parent_kind = parent_kind 138 self.parent_kind = parent_kind
142 self.name = name 139 self.name = name
143 self.imported_from = None 140 self.imported_from = None
144 141
145 def GetSpec(self): 142 def GetSpec(self):
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 def __init__(self, name=None, kind=None, ordinal=None, default=None, 185 def __init__(self, name=None, kind=None, ordinal=None, default=None,
189 attributes=None): 186 attributes=None):
190 if self.__class__.__name__ == 'Field': 187 if self.__class__.__name__ == 'Field':
191 raise Exception() 188 raise Exception()
192 self.name = name 189 self.name = name
193 self.kind = kind 190 self.kind = kind
194 self.ordinal = ordinal 191 self.ordinal = ordinal
195 self.default = default 192 self.default = default
196 self.attributes = attributes 193 self.attributes = attributes
197 194
198 @property
199 def min_version(self):
200 return self.attributes.get(ATTRIBUTE_MIN_VERSION) \
201 if self.attributes else None
202
203 195
204 class StructField(Field): pass 196 class StructField(Field): pass
205 197
206 198
207 class UnionField(Field): pass 199 class UnionField(Field): pass
208 200
209 201
210 class Struct(ReferenceKind): 202 class Struct(ReferenceKind):
211 ReferenceKind.AddSharedProperty('name') 203 ReferenceKind.AddSharedProperty('name')
212 ReferenceKind.AddSharedProperty('module') 204 ReferenceKind.AddSharedProperty('module')
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
326 318
327 class Parameter(object): 319 class Parameter(object):
328 def __init__(self, name=None, kind=None, ordinal=None, default=None, 320 def __init__(self, name=None, kind=None, ordinal=None, default=None,
329 attributes=None): 321 attributes=None):
330 self.name = name 322 self.name = name
331 self.ordinal = ordinal 323 self.ordinal = ordinal
332 self.kind = kind 324 self.kind = kind
333 self.default = default 325 self.default = default
334 self.attributes = attributes 326 self.attributes = attributes
335 327
336 @property
337 def min_version(self):
338 return self.attributes.get(ATTRIBUTE_MIN_VERSION) \
339 if self.attributes else None
340
341 328
342 class Method(object): 329 class Method(object):
343 def __init__(self, interface, name, ordinal=None, attributes=None): 330 def __init__(self, interface, name, ordinal=None, attributes=None):
344 self.interface = interface 331 self.interface = interface
345 self.name = name 332 self.name = name
346 self.ordinal = ordinal 333 self.ordinal = ordinal
347 self.parameters = [] 334 self.parameters = []
348 self.response_parameters = None 335 self.response_parameters = None
349 self.attributes = attributes 336 self.attributes = attributes
350 337
351 def AddParameter(self, name, kind, ordinal=None, default=None, 338 def AddParameter(self, name, kind, ordinal=None, default=None,
352 attributes=None): 339 attributes=None):
353 parameter = Parameter(name, kind, ordinal, default, attributes) 340 parameter = Parameter(name, kind, ordinal, default, attributes)
354 self.parameters.append(parameter) 341 self.parameters.append(parameter)
355 return parameter 342 return parameter
356 343
357 def AddResponseParameter(self, name, kind, ordinal=None, default=None, 344 def AddResponseParameter(self, name, kind, ordinal=None, default=None,
358 attributes=None): 345 attributes=None):
359 if self.response_parameters == None: 346 if self.response_parameters == None:
360 self.response_parameters = [] 347 self.response_parameters = []
361 parameter = Parameter(name, kind, ordinal, default, attributes) 348 parameter = Parameter(name, kind, ordinal, default, attributes)
362 self.response_parameters.append(parameter) 349 self.response_parameters.append(parameter)
363 return parameter 350 return parameter
364 351
365 @property
366 def min_version(self):
367 return self.attributes.get(ATTRIBUTE_MIN_VERSION) \
368 if self.attributes else None
369
370 352
371 class Interface(ReferenceKind): 353 class Interface(ReferenceKind):
372 ReferenceKind.AddSharedProperty('module') 354 ReferenceKind.AddSharedProperty('module')
373 ReferenceKind.AddSharedProperty('name') 355 ReferenceKind.AddSharedProperty('name')
374 ReferenceKind.AddSharedProperty('imported_from') 356 ReferenceKind.AddSharedProperty('imported_from')
375 ReferenceKind.AddSharedProperty('methods') 357 ReferenceKind.AddSharedProperty('methods')
376 ReferenceKind.AddSharedProperty('attributes') 358 ReferenceKind.AddSharedProperty('attributes')
377 ReferenceKind.AddSharedProperty('constants') 359 ReferenceKind.AddSharedProperty('constants')
378 ReferenceKind.AddSharedProperty('enums') 360 ReferenceKind.AddSharedProperty('enums')
379 ReferenceKind.AddSharedProperty('type_key') 361 ReferenceKind.AddSharedProperty('type_key')
(...skipping 24 matching lines...) Expand all
404 386
405 387
406 class EnumField(object): 388 class EnumField(object):
407 def __init__(self, name=None, value=None, attributes=None, 389 def __init__(self, name=None, value=None, attributes=None,
408 numeric_value=None): 390 numeric_value=None):
409 self.name = name 391 self.name = name
410 self.value = value 392 self.value = value
411 self.attributes = attributes 393 self.attributes = attributes
412 self.numeric_value = numeric_value 394 self.numeric_value = numeric_value
413 395
414 @property
415 def min_version(self):
416 return self.attributes.get(ATTRIBUTE_MIN_VERSION) \
417 if self.attributes else None
418
419 396
420 class Enum(Kind): 397 class Enum(Kind):
421 def __init__(self, name=None, module=None, attributes=None): 398 def __init__(self, name=None, module=None, attributes=None):
422 self.module = module 399 self.module = module
423 self.name = name 400 self.name = name
424 self.imported_from = None 401 self.imported_from = None
425 if name is not None: 402 if name is not None:
426 spec = 'x:' + name 403 spec = 'x:' + name
427 else: 404 else:
428 spec = None 405 spec = None
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
604 581
605 def IsCloneableKind(kind): 582 def IsCloneableKind(kind):
606 return not ContainsHandles(kind, set()) 583 return not ContainsHandles(kind, set())
607 584
608 585
609 def HasCallbacks(interface): 586 def HasCallbacks(interface):
610 for method in interface.methods: 587 for method in interface.methods:
611 if method.response_parameters != None: 588 if method.response_parameters != None:
612 return True 589 return True
613 return False 590 return False
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698