unitary_enums = set()
complex_enums = set()
opaque_structs = set()
-trait_structs = set()
+trait_structs = {}
result_types = set()
tuple_types = {}
def map_trait(struct_name, field_var_lines, trait_fn_lines, trait_doc_comment):
with open(f"{sys.argv[3]}/structs/{struct_name.replace('LDK', '')}{consts.file_ext}", "w") as out_java_trait:
field_var_convs = []
+ flattened_field_var_convs = []
for var_line in field_var_lines:
if var_line.group(1) in trait_structs:
- field_var_convs.append((var_line.group(1), var_line.group(2)))
+ field_var_convs.append((var_line.group(1), var_line.group(2), trait_structs[var_line.group(1)]))
+ flattened_field_var_convs.append((var_line.group(1), var_line.group(2), ))
+ flattened_field_var_convs.extend(trait_structs[var_line.group(1)])
else:
- field_var_convs.append(
- type_mapping_generator.map_type(var_line.group(1) + " " + var_line.group(2), False, None, False, False))
+ mapped = type_mapping_generator.map_type(var_line.group(1) + " " + var_line.group(2), False, None, False, False)
+ field_var_convs.append(mapped)
+ flattened_field_var_convs.append(mapped)
+ trait_structs[struct_name] = field_var_convs
field_fns = []
for fn_docs, fn_line in trait_fn_lines:
arg_tys.append(arg_conv_info)
field_fns.append(TraitMethInfo(fn_line.group(3), is_const, ret_ty_info, arg_tys, fn_docs))
- (out_java_addendum, out_java_trait_addendum, out_c_addendum) = consts.native_c_map_trait(struct_name, field_var_convs, field_fns, trait_doc_comment)
+ (out_java_addendum, out_java_trait_addendum, out_c_addendum) = consts.native_c_map_trait(struct_name, field_var_convs, flattened_field_var_convs, field_fns, trait_doc_comment)
write_c(out_c_addendum)
out_java_trait.write(out_java_trait_addendum)
out_java.write(out_java_addendum)
map_unitary_enum(struct_name, field_lines, last_block_comment)
last_block_comment = None
elif len(trait_fn_lines) > 0:
- trait_structs.add(struct_name)
map_trait(struct_name, field_var_lines, trait_fn_lines, last_block_comment)
elif struct_name == "LDKTxOut":
with open(f"{sys.argv[3]}/structs/TxOut{consts.file_ext}", "w") as out_java_struct: