target = typescript_strings.Target.NODEJS
if len(sys.argv) == 8 and sys.argv[7] == 'browser':
target = typescript_strings.Target.BROWSER
+elif sys.argv[6] == "c_sharp":
+ import csharp_strings
+ from csharp_strings import Consts
+ target = csharp_strings.Target.CSHARP
+elif sys.argv[6] == "python":
+ import python_strings
+ from python_strings import Consts
+ target = python_strings.Target.PYTHON
else:
- print("Only java or typescript can be set for lang")
+ print("Only java, typescript, python, or c_sharp can be set for lang")
sys.exit(1)
rust_obj = None
arr_access = None
java_hu_ty = None
- if fn_arg.startswith("LDKPaymentPreimage") or fn_arg.startswith("LDKPaymentSecret") or fn_arg.startswith("LDKPaymentHash"):
+ if fn_arg.startswith("LDKPaymentPreimage") or fn_arg.startswith("LDKPaymentSecret") or fn_arg.startswith("LDKPaymentHash") or fn_arg.startswith("LDKChainHash"):
if fn_arg.startswith("LDKPaymentPreimage"):
fn_arg = "uint8_t (*" + fn_arg[19:] + ")[32]"
elif fn_arg.startswith("LDKPaymentSecret"):
fn_arg = "uint8_t (*" + fn_arg[17:] + ")[32]"
elif fn_arg.startswith("LDKPaymentHash"):
fn_arg = "uint8_t (*" + fn_arg[15:] + ")[32]"
+ elif fn_arg.startswith("LDKChainHash"):
+ fn_arg = "uint8_t (*" + fn_arg[13:] + ")[32]"
assert var_is_arr_regex.match(fn_arg[8:])
rust_obj = "LDKThirtyTwoBytes"
arr_access = "data"
assert var_is_arr_regex.match(fn_arg[8:])
rust_obj = "LDKThirtyTwoBytes"
arr_access = "data"
+ elif fn_arg.startswith("LDKEightU16s"):
+ fn_arg = "uint16_t (*" + fn_arg[13:] + ")[8]"
+ assert var_is_arr_regex.match(fn_arg[9:])
+ rust_obj = "LDKEightU16s"
+ arr_access = "data"
elif fn_arg.startswith("LDKU128"):
if fn_arg == "LDKU128":
fn_arg = "LDKU128 arg"
arr_ty = "LDKStr"
fn_ty_arg = "Ljava/lang/String;"
fn_arg = fn_arg[6:].strip()
- elif fn_arg.startswith("LDKStr"):
+ elif fn_arg.startswith("LDKStr") or fn_arg.startswith("LDKAddress"):
rust_obj = "LDKStr"
arr_ty = "LDKStr"
java_ty = consts.java_type_map["String"]
java_hu_ty = consts.java_hu_type_map["String"]
c_ty = "jstring"
fn_ty_arg = "Ljava/lang/String;"
- fn_arg = fn_arg[6:].strip()
+ if fn_arg.startswith("LDKAddress"):
+ fn_arg = fn_arg[10:].strip()
+ else:
+ fn_arg = fn_arg[6:].strip()
arr_access = "chars"
arr_len = "len"
elif fn_arg.startswith("LDKError ") or fn_arg == "LDKError":
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), 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)])
+ flattened_field_var_convs.append((var_line.group(1), var_line.group(2), var_line.group(2)))
+ for field_var in trait_structs[var_line.group(1)]:
+ if isinstance(field_var, ConvInfo):
+ flattened_field_var_convs.append(field_var)
+ else:
+ path = var_line.group(2)
+ if len(field_var) > 2:
+ path = var_line.group(2) + "." + field_var[2]
+ flattened_field_var_convs.append((field_var[0], field_var[1], path))
else:
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
+ trait_structs[struct_name] = flattened_field_var_convs
field_fns = []
for fn_docs, fn_line in trait_fn_lines: