(options, args=None, output=sys.stdout, lines=None)
| 550 | |
| 551 | |
| 552 | def main(options, args=None, output=sys.stdout, lines=None): |
| 553 | genline = next_line(args, lines) |
| 554 | |
| 555 | comment_set = [] |
| 556 | token_name = None |
| 557 | |
| 558 | # Create a new 'master' that serves as the coordinator for the file generation |
| 559 | master = Master() |
| 560 | for i in options.include: |
| 561 | master.add_include('#include <{}>'.format(i)) |
| 562 | |
| 563 | try: |
| 564 | while True: |
| 565 | ln, line = next(genline) |
| 566 | tokens = line.split(',') |
| 567 | token_type = tokens[0] |
| 568 | |
| 569 | if not bool(line): |
| 570 | master.add_comments(comment_set) |
| 571 | comment_set = [] |
| 572 | token_name = None |
| 573 | continue |
| 574 | |
| 575 | if len(tokens) > 2: |
| 576 | token_name = tokens[1] |
| 577 | |
| 578 | if token_type == 'subtype': |
| 579 | subtype, _, _ = master.add_type(tokens[1]) |
| 580 | |
| 581 | subtype.add_comments(list(comment_set)) |
| 582 | comment_set = [] |
| 583 | elif token_type == 'subtypedata': |
| 584 | subtype = master.find_type(tokens[1]) |
| 585 | if not subtype: |
| 586 | raise ValueError('Unknown subtype {} for data.\nat {}:{}' |
| 587 | .format(tokens[1], ln, line)) |
| 588 | type_obj, collapse, optional = master.add_type(tokens[3], tokens[2], tokens[1]) |
| 589 | if optional: |
| 590 | raise ValueError('Subtypes cannot have optional fields {}.{}\n at {}:{}' |
| 591 | .format(subtype.name, tokens[2], ln, line)) |
| 592 | if collapse: |
| 593 | count = 1 |
| 594 | else: |
| 595 | count = tokens[4] |
| 596 | |
| 597 | subtype.add_data_field(tokens[2], type_obj, count, comments=list(comment_set), |
| 598 | optional=optional) |
| 599 | comment_set = [] |
| 600 | elif token_type == 'tlvtype': |
| 601 | tlv = master.add_tlv(tokens[1]) |
| 602 | tlv.add_message(tokens[2:], comments=list(comment_set)) |
| 603 | |
| 604 | comment_set = [] |
| 605 | elif token_type == 'tlvdata': |
| 606 | type_obj, collapse, optional = master.add_type(tokens[4], tokens[3], tokens[1]) |
| 607 | if optional: |
| 608 | raise ValueError('TLV messages cannot have optional fields {}.{}\n at {}:{}' |
| 609 | .format(tokens[2], tokens[3], ln, line)) |
no test coverage detected