if not arg_conv_info.rust_obj in trait_structs and not arg_conv_info.rust_obj in unitary_enums:
print(re_match.group(2) + " bad - " + arg_conv_info.rust_obj)
args_known = False
+ if arg_conv_info.arg_conv is not None and "Warning" in arg_conv_info.arg_conv:
+ args_known = False
arg_names.append(arg_conv_info)
out_java_struct = None
if info.arg_name == "this_arg":
out_java_struct.write("this.ptr")
elif info.passed_as_ptr and info.rust_obj in opaque_structs:
- out_java_struct.write(info.arg_name + ".ptr & ~1")
+ out_java_struct.write(info.arg_name + " == null ? 0 : " + info.arg_name + ".ptr & ~1")
elif info.passed_as_ptr and info.rust_obj in trait_structs:
- out_java_struct.write(info.arg_name + ".ptr")
+ out_java_struct.write(info.arg_name + " == null ? 0 : " + info.arg_name + ".ptr")
else:
out_java_struct.write(info.arg_name)
out_java_struct.write(")")
elif fn_line.group(2) == "free":
out_c.write("\t\t.free = " + struct_name + "_JCalls_free,\n")
else:
+ clone_fns.add(struct_name + "_clone")
out_c.write("\t\t.clone = " + struct_name + "_JCalls_clone,\n")
for var_line in field_var_lines:
if var_line.group(1) in trait_structs:
# For now, just disable enabling the _call_log - we don't know how to inverse-map String
is_log = fn_line.group(2) == "log" and struct_name == "LDKLogger"
if fn_line.group(2) != "free" and fn_line.group(2) != "clone" and fn_line.group(2) != "eq" and not is_log:
- dummy_line = fn_line.group(1) + struct_name.replace("LDK", "") + "_call_" + fn_line.group(2) + " " + struct_name + "* this_arg" + fn_line.group(4) + "\n"
+ dummy_line = fn_line.group(1) + struct_name.replace("LDK", "") + "_" + fn_line.group(2) + " " + struct_name + "* this_arg" + fn_line.group(4) + "\n"
map_fn(dummy_line, re.compile("([A-Za-z_0-9]*) *([A-Za-z_0-9]*) *(.*)").match(dummy_line), None, "(this_arg_conv->" + fn_line.group(2) + ")(this_arg_conv->this_arg")
out_c.write("""#include \"org_ldk_impl_bindings.h\"