MCPcopy Create free account
hub / github.com/ElementsProject/lightning / main

Function main

tools/generate-wire.py:552–694  ·  view source on GitHub ↗
(options, args=None, output=sys.stdout, lines=None)

Source from the content-addressed store, hash-verified

550
551
552def 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))

Callers 1

generate-wire.pyFile · 0.70

Calls 15

add_includeMethod · 0.95
add_commentsMethod · 0.95
add_typeMethod · 0.95
find_typeMethod · 0.95
add_tlvMethod · 0.95
find_tlvMethod · 0.95
add_messageMethod · 0.95
find_messageMethod · 0.95
add_extension_msgMethod · 0.95
post_processMethod · 0.95
writeMethod · 0.95
next_lineFunction · 0.85

Tested by

no test coverage detected