| OLD | NEW |
| 1 #!/usr/bin/python | 1 #!/usr/bin/python |
| 2 # | 2 # |
| 3 # Copyright (c) 2011 The Chromium Authors. All rights reserved. | 3 # Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 4 # Use of this source code is governed by a BSD-style license that can be | 4 # Use of this source code is governed by a BSD-style license that can be |
| 5 # found in the LICENSE file. | 5 # found in the LICENSE file. |
| 6 | 6 |
| 7 """ Generator for C style prototypes and definitions """ | 7 """ Generator for C style prototypes and definitions """ |
| 8 | 8 |
| 9 import glob | 9 import glob |
| 10 import os | 10 import os |
| (...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 247 | 247 |
| 248 # For structures, preceed with 'struct' or 'union' as appropriate | 248 # For structures, preceed with 'struct' or 'union' as appropriate |
| 249 elif typeref.IsA('Interface', 'Struct'): | 249 elif typeref.IsA('Interface', 'Struct'): |
| 250 if typeref.GetProperty('union'): | 250 if typeref.GetProperty('union'): |
| 251 name = 'union %s%s' % (prefix, typeref.GetName()) | 251 name = 'union %s%s' % (prefix, typeref.GetName()) |
| 252 else: | 252 else: |
| 253 name = 'struct %s%s' % (prefix, typeref.GetName()) | 253 name = 'struct %s%s' % (prefix, typeref.GetName()) |
| 254 | 254 |
| 255 # If it's an enum, or typedef then return the Enum's name | 255 # If it's an enum, or typedef then return the Enum's name |
| 256 elif typeref.IsA('Enum', 'Typedef'): | 256 elif typeref.IsA('Enum', 'Typedef'): |
| 257 name = '%s%s' % (prefix, typeref.GetName()) | 257 # The enum may have skipped having a typedef, we need prefix with 'enum'. |
| 258 if typeref.GetProperty('notypedef'): |
| 259 name = 'enum %s%s' % (prefix, typeref.GetName()) |
| 260 else: |
| 261 name = '%s%s' % (prefix, typeref.GetName()) |
| 258 | 262 |
| 259 else: | 263 else: |
| 260 raise RuntimeError('Getting name of non-type %s.' % node) | 264 raise RuntimeError('Getting name of non-type %s.' % node) |
| 261 self.LogExit('GetTypeName %s is %s' % (node, name)) | 265 self.LogExit('GetTypeName %s is %s' % (node, name)) |
| 262 return name | 266 return name |
| 263 | 267 |
| 264 | 268 |
| 265 # | 269 # |
| 266 # GetRootType | 270 # GetRootType |
| 267 # | 271 # |
| (...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 406 release = releases[0] | 410 release = releases[0] |
| 407 out = 'typedef %s;\n' % self.GetSignature(node, release, 'return', | 411 out = 'typedef %s;\n' % self.GetSignature(node, release, 'return', |
| 408 prefix, True) | 412 prefix, True) |
| 409 self.Log('DefineTypedef: %s' % out) | 413 self.Log('DefineTypedef: %s' % out) |
| 410 return out | 414 return out |
| 411 | 415 |
| 412 # Define an Enum. | 416 # Define an Enum. |
| 413 def DefineEnum(self, node, releases, prefix='', comment=False): | 417 def DefineEnum(self, node, releases, prefix='', comment=False): |
| 414 __pychecker__ = 'unusednames=comment,releases' | 418 __pychecker__ = 'unusednames=comment,releases' |
| 415 self.LogEnter('DefineEnum %s' % node) | 419 self.LogEnter('DefineEnum %s' % node) |
| 416 unnamed = node.GetProperty('unnamed') | 420 name = '%s%s' % (prefix, node.GetName()) |
| 421 notypedef = node.GetProperty('notypedef') |
| 422 unnamed = node.GetProperty('unnamed') |
| 417 if unnamed: | 423 if unnamed: |
| 418 out = 'enum {' | 424 out = 'enum {' |
| 425 elif notypedef: |
| 426 out = 'enum %s {' % name |
| 419 else: | 427 else: |
| 420 out = 'typedef enum {' | 428 out = 'typedef enum {' |
| 421 name = '%s%s' % (prefix, node.GetName()) | |
| 422 enumlist = [] | 429 enumlist = [] |
| 423 for child in node.GetListOf('EnumItem'): | 430 for child in node.GetListOf('EnumItem'): |
| 424 value = child.GetProperty('VALUE') | 431 value = child.GetProperty('VALUE') |
| 425 comment_txt = GetNodeComments(child, tabs=1) | 432 comment_txt = GetNodeComments(child, tabs=1) |
| 426 if value: | 433 if value: |
| 427 item_txt = '%s%s = %s' % (prefix, child.GetName(), value) | 434 item_txt = '%s%s = %s' % (prefix, child.GetName(), value) |
| 428 else: | 435 else: |
| 429 item_txt = '%s%s' % (prefix, child.GetName()) | 436 item_txt = '%s%s' % (prefix, child.GetName()) |
| 430 enumlist.append('%s %s' % (comment_txt, item_txt)) | 437 enumlist.append('%s %s' % (comment_txt, item_txt)) |
| 431 self.LogExit('Exit DefineEnum') | 438 self.LogExit('Exit DefineEnum') |
| 432 | 439 |
| 433 if unnamed: | 440 if unnamed or notypedef: |
| 434 out = '%s\n%s\n};\n' % (out, ',\n'.join(enumlist)) | 441 out = '%s\n%s\n};\n' % (out, ',\n'.join(enumlist)) |
| 435 else: | 442 else: |
| 436 out = '%s\n%s\n} %s;\n' % (out, ',\n'.join(enumlist), name) | 443 out = '%s\n%s\n} %s;\n' % (out, ',\n'.join(enumlist), name) |
| 437 return out | 444 return out |
| 438 | 445 |
| 439 def DefineMember(self, node, releases, prefix='', comment=False): | 446 def DefineMember(self, node, releases, prefix='', comment=False): |
| 440 __pychecker__ = 'unusednames=prefix,comment' | 447 __pychecker__ = 'unusednames=prefix,comment' |
| 441 release = releases[0] | 448 release = releases[0] |
| 442 self.LogEnter('DefineMember %s' % node) | 449 self.LogEnter('DefineMember %s' % node) |
| 443 out = '%s;' % self.GetSignature(node, release, 'store', '', True) | 450 out = '%s;' % self.GetSignature(node, release, 'store', '', True) |
| (...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 607 if f.GetProperty('ERRORS') > 0: | 614 if f.GetProperty('ERRORS') > 0: |
| 608 print 'Skipping %s' % f.GetName() | 615 print 'Skipping %s' % f.GetName() |
| 609 continue | 616 continue |
| 610 print DefineDepends(node) | 617 print DefineDepends(node) |
| 611 for node in f.GetChildren()[2:]: | 618 for node in f.GetChildren()[2:]: |
| 612 print Define(node, comment=True, prefix='tst_') | 619 print Define(node, comment=True, prefix='tst_') |
| 613 | 620 |
| 614 | 621 |
| 615 if __name__ == '__main__': | 622 if __name__ == '__main__': |
| 616 sys.exit(Main(sys.argv[1:])) | 623 sys.exit(Main(sys.argv[1:])) |
| OLD | NEW |