mirror of
https://github.com/aljazceru/lightning.git
synced 2025-12-19 15:14:23 +01:00
print_wire: hand field names to print routines.
This lets us override how we print them. Also, add dependency on header for devtools/Makefile. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
committed by
Christian Decker
parent
2639b1e9a9
commit
c02ff11506
@@ -220,9 +220,9 @@ towire_impl_templ = """u8 *towire_{name}(const tal_t *ctx{args})
|
||||
}}
|
||||
"""
|
||||
|
||||
printwire_header_templ = """void printwire_{name}(const u8 *cursor);
|
||||
printwire_header_templ = """void printwire_{name}(const char *fieldname, const u8 *cursor);
|
||||
"""
|
||||
printwire_impl_templ = """void printwire_{name}(const u8 *cursor)
|
||||
printwire_impl_templ = """void printwire_{name}(const char *fieldname, const u8 *cursor)
|
||||
{{
|
||||
\tsize_t plen = tal_len(cursor);
|
||||
|
||||
@@ -437,8 +437,8 @@ class Message(object):
|
||||
|
||||
def print_printwire_array(self, subcalls, basetype, f, num_elems):
|
||||
if f.has_array_helper():
|
||||
subcalls.append('\tprintwire_{}_array(&cursor, &plen, {});'
|
||||
.format(basetype, num_elems))
|
||||
subcalls.append('\tprintwire_{}_array(tal_fmt(NULL, "%s.{}", fieldname), &cursor, &plen, {});'
|
||||
.format(basetype, f.name, num_elems))
|
||||
else:
|
||||
subcalls.append('\tprintf("[");')
|
||||
subcalls.append('\tfor (size_t i = 0; i < {}; i++) {{'
|
||||
@@ -456,7 +456,8 @@ class Message(object):
|
||||
|
||||
self.add_truncate_check(subcalls, indent='\t\t')
|
||||
|
||||
subcalls.append('\t\tprintwire_{}(&v);'.format(basetype))
|
||||
subcalls.append('\t\tprintwire_{}(tal_fmt(NULL, "%s.{}", fieldname), &v);'
|
||||
.format(basetype, f.name))
|
||||
subcalls.append('\t}')
|
||||
subcalls.append('\tprintf("]");')
|
||||
|
||||
@@ -479,8 +480,8 @@ class Message(object):
|
||||
|
||||
subcalls.append('\tprintf("{}=");'.format(f.name))
|
||||
if f.is_padding():
|
||||
subcalls.append('\tprintwire_pad(&cursor, &plen, {});'
|
||||
.format(f.num_elems))
|
||||
subcalls.append('\tprintwire_pad(tal_fmt(NULL, "%s.{}", fieldname), &cursor, &plen, {});'
|
||||
.format(f.name, f.num_elems))
|
||||
self.add_truncate_check(subcalls)
|
||||
elif f.is_array():
|
||||
self.print_printwire_array(subcalls, basetype, f, f.num_elems)
|
||||
@@ -501,8 +502,8 @@ class Message(object):
|
||||
.format(basetype, f.name))
|
||||
|
||||
self.add_truncate_check(subcalls)
|
||||
subcalls.append('\tprintwire_{}(&{});'
|
||||
.format(basetype, f.name))
|
||||
subcalls.append('\tprintwire_{}(tal_fmt(NULL, "%s.{}", fieldname), &{});'
|
||||
.format(basetype, f.name, f.name))
|
||||
|
||||
return template.format(
|
||||
name=self.name,
|
||||
@@ -686,7 +687,7 @@ for m in messages:
|
||||
enums += '\t{} = {},\n'.format(m.enum.name, m.enum.value)
|
||||
includes = '\n'.join(includes)
|
||||
cases = ['case {enum.name}: return "{enum.name}";'.format(enum=m.enum) for m in messages]
|
||||
printcases = ['case {enum.name}: printf("{enum.name}:\\n"); printwire_{name}(msg); return;'.format(enum=m.enum, name=m.name) for m in messages]
|
||||
printcases = ['case {enum.name}: printf("{enum.name}:\\n"); printwire_{name}("{name}", msg); return;'.format(enum=m.enum, name=m.name) for m in messages]
|
||||
|
||||
if options.printwire:
|
||||
decls = [m.print_printwire(options.header) for m in messages + messages_with_option]
|
||||
|
||||
Reference in New Issue
Block a user