| OLD | NEW |
| 1 #!/usr/bin/python | 1 #!/usr/bin/python |
| 2 # Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 2 # Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
| 3 # for details. All rights reserved. Use of this source code is governed by a | 3 # for details. All rights reserved. Use of this source code is governed by a |
| 4 # BSD-style license that can be found in the LICENSE file. | 4 # BSD-style license that can be found in the LICENSE file. |
| 5 | 5 |
| 6 import os | 6 import os |
| 7 import sys | 7 import sys |
| 8 | 8 |
| 9 | 9 |
| 10 class IDLNode(object): | 10 class IDLNode(object): |
| (...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 252 """IDLFile is the top-level node in each IDL file. It may contain interfaces."
"" | 252 """IDLFile is the top-level node in each IDL file. It may contain interfaces."
"" |
| 253 | 253 |
| 254 def __init__(self, ast, filename=None): | 254 def __init__(self, ast, filename=None): |
| 255 IDLNode.__init__(self, ast) | 255 IDLNode.__init__(self, ast) |
| 256 self.filename = filename | 256 self.filename = filename |
| 257 self.interfaces = self._convert_all(ast, 'Interface', IDLInterface) | 257 self.interfaces = self._convert_all(ast, 'Interface', IDLInterface) |
| 258 modules = self._convert_all(ast, 'Module', IDLModule) | 258 modules = self._convert_all(ast, 'Module', IDLModule) |
| 259 self.implementsStatements = self._convert_all(ast, 'ImplStmt', | 259 self.implementsStatements = self._convert_all(ast, 'ImplStmt', |
| 260 IDLImplementsStatement) | 260 IDLImplementsStatement) |
| 261 self.typeDefs = self._convert_all(ast, 'TypeDef', IDLTypeDef) | 261 self.typeDefs = self._convert_all(ast, 'TypeDef', IDLTypeDef) |
| 262 self.enums = self._convert_all(ast, 'Enum', IDLEnum) |
| 262 for module in modules: | 263 for module in modules: |
| 263 self.interfaces.extend(module.interfaces) | 264 self.interfaces.extend(module.interfaces) |
| 264 self.implementsStatements.extend(module.implementsStatements) | 265 self.implementsStatements.extend(module.implementsStatements) |
| 265 self.typeDefs.extend(module.typeDefs) | 266 self.typeDefs.extend(module.typeDefs) |
| 266 | 267 |
| 267 | 268 |
| 268 class IDLModule(IDLNode): | 269 class IDLModule(IDLNode): |
| 269 """IDLModule has an id, and may contain interfaces, type defs and | 270 """IDLModule has an id, and may contain interfaces, type defs and |
| 270 implements statements.""" | 271 implements statements.""" |
| 271 def __init__(self, ast): | 272 def __init__(self, ast): |
| 272 IDLNode.__init__(self, ast) | 273 IDLNode.__init__(self, ast) |
| 273 self._convert_ext_attrs(ast) | 274 self._convert_ext_attrs(ast) |
| 274 self._convert_annotations(ast) | 275 self._convert_annotations(ast) |
| 275 self.interfaces = self._convert_all(ast, 'Interface', IDLInterface) | 276 self.interfaces = self._convert_all(ast, 'Interface', IDLInterface) |
| 276 self.typeDefs = self._convert_all(ast, 'TypeDef', IDLTypeDef) | 277 self.typeDefs = self._convert_all(ast, 'TypeDef', IDLTypeDef) |
| 278 self.enums = self._convert_all(ast, 'Enum', IDLNode) |
| 277 self.implementsStatements = self._convert_all(ast, 'ImplStmt', | 279 self.implementsStatements = self._convert_all(ast, 'ImplStmt', |
| 278 IDLImplementsStatement) | 280 IDLImplementsStatement) |
| 279 | 281 |
| 280 | 282 |
| 281 class IDLExtAttrs(IDLDictNode): | 283 class IDLExtAttrs(IDLDictNode): |
| 282 """IDLExtAttrs is an IDLDictNode that stores IDL Extended Attributes. | 284 """IDLExtAttrs is an IDLDictNode that stores IDL Extended Attributes. |
| 283 Modules, interfaces, members and arguments can all own IDLExtAttrs.""" | 285 Modules, interfaces, members and arguments can all own IDLExtAttrs.""" |
| 284 def __init__(self, ast=None): | 286 def __init__(self, ast=None): |
| 285 IDLDictNode.__init__(self, None) | 287 IDLDictNode.__init__(self, None) |
| 286 if not ast: | 288 if not ast: |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 371 elif label.endswith('Type'): | 373 elif label.endswith('Type'): |
| 372 # Omit 'Type' suffix and lowercase the rest. | 374 # Omit 'Type' suffix and lowercase the rest. |
| 373 label = '%s%s' % (label[0].lower(), label[1:-4]) | 375 label = '%s%s' % (label[0].lower(), label[1:-4]) |
| 374 | 376 |
| 375 # Add unsigned qualifier. | 377 # Add unsigned qualifier. |
| 376 if self._has(ast, 'Unsigned'): | 378 if self._has(ast, 'Unsigned'): |
| 377 label = 'unsigned %s' % label | 379 label = 'unsigned %s' % label |
| 378 return label | 380 return label |
| 379 | 381 |
| 380 | 382 |
| 383 class IDLEnum(IDLNode): |
| 384 """IDLNode for 'enum [id] { [string]+ }'""" |
| 385 def __init__(self, ast): |
| 386 IDLNode.__init__(self, ast) |
| 387 self._convert_annotations(ast) |
| 388 # TODO(antonm): save enum values. |
| 389 |
| 390 |
| 381 class IDLTypeDef(IDLNode): | 391 class IDLTypeDef(IDLNode): |
| 382 """IDLNode for 'typedef [type] [id]' declarations.""" | 392 """IDLNode for 'typedef [type] [id]' declarations.""" |
| 383 def __init__(self, ast): | 393 def __init__(self, ast): |
| 384 IDLNode.__init__(self, ast) | 394 IDLNode.__init__(self, ast) |
| 385 self._convert_annotations(ast) | 395 self._convert_annotations(ast) |
| 386 self.type = self._convert_first(ast, 'Type', IDLType) | 396 self.type = self._convert_first(ast, 'Type', IDLType) |
| 387 | 397 |
| 388 | 398 |
| 389 class IDLInterface(IDLNode): | 399 class IDLInterface(IDLNode): |
| 390 """IDLInterface node contains operations, attributes, constants, | 400 """IDLInterface node contains operations, attributes, constants, |
| (...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 527 """IDLDictNode specialization for one annotation.""" | 537 """IDLDictNode specialization for one annotation.""" |
| 528 def __init__(self, ast=None): | 538 def __init__(self, ast=None): |
| 529 IDLDictNode.__init__(self, ast) | 539 IDLDictNode.__init__(self, ast) |
| 530 self.id = None | 540 self.id = None |
| 531 if not ast: | 541 if not ast: |
| 532 return | 542 return |
| 533 for arg in self._find_all(ast, 'AnnotationArg'): | 543 for arg in self._find_all(ast, 'AnnotationArg'): |
| 534 name = self._find_first(arg, 'Id') | 544 name = self._find_first(arg, 'Id') |
| 535 value = self._find_first(arg, 'AnnotationArgValue') | 545 value = self._find_first(arg, 'AnnotationArgValue') |
| 536 self[name] = value | 546 self[name] = value |
| OLD | NEW |