@@ -88,6 +88,7 @@ def java_c_types(fn_arg, ret_arr_len):
8888 fn_arg = fn_arg [7 :]
8989 if fn_arg .startswith ("enum " ):
9090 fn_arg = fn_arg [5 :]
91+ nonnull_ptr = "NONNULL_PTR" in fn_arg
9192 fn_arg = fn_arg .replace ("NONNULL_PTR" , "" )
9293
9394 is_ptr = False
@@ -172,11 +173,13 @@ def java_c_types(fn_arg, ret_arr_len):
172173 res .pass_by_ref = True
173174 if res .is_native_primitive or res .passed_as_ptr :
174175 return TypeInfo (rust_obj = fn_arg .split (" " )[0 ], java_ty = res .java_ty + "[]" , java_hu_ty = res .java_hu_ty + "[]" ,
175- java_fn_ty_arg = "[" + res .java_fn_ty_arg , c_ty = res .c_ty + "Array" , passed_as_ptr = False , is_ptr = is_ptr , is_const = is_const ,
176+ java_fn_ty_arg = "[" + res .java_fn_ty_arg , c_ty = res .c_ty + "Array" , passed_as_ptr = False , is_ptr = is_ptr ,
177+ nonnull_ptr = nonnull_ptr , is_const = is_const ,
176178 var_name = res .var_name , arr_len = "datalen" , arr_access = "data" , subty = res , is_native_primitive = False )
177179 else :
178180 return TypeInfo (rust_obj = fn_arg .split (" " )[0 ], java_ty = res .java_ty + "[]" , java_hu_ty = res .java_hu_ty + "[]" ,
179- java_fn_ty_arg = "[" + res .java_fn_ty_arg , c_ty = consts .ptr_arr , passed_as_ptr = False , is_ptr = is_ptr , is_const = is_const ,
181+ java_fn_ty_arg = "[" + res .java_fn_ty_arg , c_ty = consts .ptr_arr , passed_as_ptr = False , is_ptr = is_ptr ,
182+ nonnull_ptr = nonnull_ptr , is_const = is_const ,
180183 var_name = res .var_name , arr_len = "datalen" , arr_access = "data" , subty = res , is_native_primitive = False )
181184
182185 is_primitive = False
@@ -322,14 +325,16 @@ def java_c_types(fn_arg, ret_arr_len):
322325 if var_is_arr is not None :
323326 if var_is_arr .group (1 ) == "" :
324327 return TypeInfo (rust_obj = rust_obj , java_ty = java_ty , java_hu_ty = java_ty , java_fn_ty_arg = "[" + fn_ty_arg , c_ty = c_ty , is_const = is_const ,
325- passed_as_ptr = False , is_ptr = False , var_name = "arg" , arr_len = var_is_arr .group (2 ), arr_access = arr_access , is_native_primitive = False )
328+ passed_as_ptr = False , is_ptr = False , nonnull_ptr = nonnull_ptr , var_name = "arg" ,
329+ arr_len = var_is_arr .group (2 ), arr_access = arr_access , is_native_primitive = False )
326330 return TypeInfo (rust_obj = rust_obj , java_ty = java_ty , java_hu_ty = java_ty , java_fn_ty_arg = "[" + fn_ty_arg , c_ty = c_ty , is_const = is_const ,
327- passed_as_ptr = False , is_ptr = False , var_name = var_is_arr .group (1 ), arr_len = var_is_arr .group (2 ), arr_access = arr_access , is_native_primitive = False )
331+ passed_as_ptr = False , is_ptr = False , nonnull_ptr = nonnull_ptr , var_name = var_is_arr .group (1 ),
332+ arr_len = var_is_arr .group (2 ), arr_access = arr_access , is_native_primitive = False )
328333
329334 if java_hu_ty is None :
330335 java_hu_ty = java_ty
331336 return TypeInfo (rust_obj = rust_obj , java_ty = java_ty , java_hu_ty = java_hu_ty , java_fn_ty_arg = fn_ty_arg , c_ty = c_ty , passed_as_ptr = is_ptr or take_by_ptr ,
332- is_const = is_const , is_ptr = is_ptr , var_name = fn_arg , arr_len = arr_len , arr_access = arr_access , is_native_primitive = is_primitive )
337+ is_const = is_const , is_ptr = is_ptr , nonnull_ptr = nonnull_ptr , var_name = fn_arg , arr_len = arr_len , arr_access = arr_access , is_native_primitive = is_primitive )
333338
334339fn_ptr_regex = re .compile ("^extern const ([A-Za-z_0-9\* ]*) \(\*(.*)\)\((.*)\);$" )
335340fn_ret_arr_regex = re .compile ("(.*) \(\*(.*)\((.*)\)\)\[([0-9]*)\];$" )
@@ -527,7 +532,7 @@ def map_trait(struct_name, field_var_lines, trait_fn_lines, trait_doc_comment):
527532 # For now, just disable enabling the _call_log - we don't know how to inverse-map String
528533 is_log = fn_line .group (3 ) == "log" and struct_name == "LDKLogger"
529534 if fn_line .group (3 ) != "free" and fn_line .group (3 ) != "clone" and fn_line .group (3 ) != "eq" and not is_log :
530- dummy_line = fn_line .group (2 ) + struct_name .replace ("LDK" , "" ) + "_" + fn_line .group (3 ) + " " + struct_name + "* this_arg" + fn_line .group (5 ) + "\n "
535+ dummy_line = fn_line .group (2 ) + struct_name .replace ("LDK" , "" ) + "_" + fn_line .group (3 ) + " " + struct_name + " *NONNULL_PTR this_arg" + fn_line .group (5 ) + "\n "
531536 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 (3 ) + ")(this_arg_conv->this_arg" , fn_docs )
532537 for idx , var_line in enumerate (field_var_lines ):
533538 if var_line .group (1 ) not in trait_structs :
@@ -536,7 +541,7 @@ def map_trait(struct_name, field_var_lines, trait_fn_lines, trait_doc_comment):
536541 write_c ("\t \t this_arg->set_" + var_line .group (2 ) + "(this_arg);\n " )
537542 write_c ("\t return this_arg->" + var_line .group (2 ) + ";\n " )
538543 write_c ("}\n " )
539- dummy_line = var_line .group (1 ) + " " + struct_name .replace ("LDK" , "" ) + "_get_" + var_line .group (2 ) + " " + struct_name + "* this_arg" + fn_line .group (5 ) + "\n "
544+ dummy_line = var_line .group (1 ) + " " + struct_name .replace ("LDK" , "" ) + "_get_" + var_line .group (2 ) + " " + struct_name + " *NONNULL_PTR this_arg" + fn_line .group (5 ) + "\n "
540545 map_fn (dummy_line , re .compile ("([A-Za-z_0-9]*) *([A-Za-z_0-9]*) *(.*)" ).match (dummy_line ), None , struct_name + "_set_get_" + var_line .group (2 ) + "(this_arg_conv" , fn_docs )
541546
542547 def map_result (struct_name , res_ty , err_ty ):
0 commit comments