- out_java.write("\tpublic static native long " + struct_name + "_new(" + ty_info.java_ty + "[] elems);\n")
- out_c.write("JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_" + struct_name.replace("_", "_1") + "_1new(JNIEnv *env, jclass _b, j" + ty_info.java_ty + "Array elems){\n")
- out_c.write("\t" + struct_name + " *ret = MALLOC(sizeof(" + struct_name + "), \"" + struct_name + "\");\n")
- out_c.write("\tret->datalen = (*env)->GetArrayLength(env, elems);\n")
- out_c.write("\tif (ret->datalen == 0) {\n")
- out_c.write("\t\tret->data = NULL;\n")
- out_c.write("\t} else {\n")
- out_c.write("\t\tret->data = MALLOC(sizeof(" + vec_ty + ") * ret->datalen, \"" + struct_name + " Data\");\n")
- assert len(ty_info.java_fn_ty_arg) == 1 # ie we're a primitive of some form
- out_c.write("\t\t" + ty_info.c_ty + " *java_elems = (*env)->GetPrimitiveArrayCritical(env, elems, NULL);\n")
- out_c.write("\t\tfor (size_t i = 0; i < ret->datalen; i++) {\n")
- if ty_info.arg_conv is not None:
- out_c.write("\t\t\t" + ty_info.c_ty + " arr_elem = java_elems[i];\n")
- out_c.write("\t\t\t" + ty_info.arg_conv.replace("\n", "\n\t\t\t") + "\n")
- out_c.write("\t\t\tret->data[i] = " + ty_info.arg_conv_name + ";\n")
- else:
- out_c.write("\t\t\tret->data[i] = java_elems[i];\n")
- out_c.write("\t\t}\n")
- out_c.write("\t\t(*env)->ReleasePrimitiveArrayCritical(env, elems, java_elems, 0);\n")
- out_c.write("\t}\n")
- out_c.write("\treturn (long)ret;\n")
- out_c.write("}\n")
+ if len(ty_info.java_fn_ty_arg) == 1: # ie we're a primitive of some form
+ out_java.write("\tpublic static native long " + struct_name + "_new(" + ty_info.java_ty + "[] elems);\n")
+ out_c.write("JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_" + struct_name.replace("_", "_1") + "_1new(JNIEnv *env, jclass _b, j" + ty_info.java_ty + "Array elems){\n")
+ out_c.write("\t" + struct_name + " *ret = MALLOC(sizeof(" + struct_name + "), \"" + struct_name + "\");\n")
+ out_c.write("\tret->datalen = (*env)->GetArrayLength(env, elems);\n")
+ out_c.write("\tif (ret->datalen == 0) {\n")
+ out_c.write("\t\tret->data = NULL;\n")
+ out_c.write("\t} else {\n")
+ out_c.write("\t\tret->data = MALLOC(sizeof(" + vec_ty + ") * ret->datalen, \"" + struct_name + " Data\");\n")
+ out_c.write("\t\t" + ty_info.c_ty + " *java_elems = (*env)->GetPrimitiveArrayCritical(env, elems, NULL);\n")
+ out_c.write("\t\tfor (size_t i = 0; i < ret->datalen; i++) {\n")
+ if ty_info.arg_conv is not None:
+ out_c.write("\t\t\t" + ty_info.c_ty + " arr_elem = java_elems[i];\n")
+ out_c.write("\t\t\t" + ty_info.arg_conv.replace("\n", "\n\t\t\t") + "\n")
+ out_c.write("\t\t\tret->data[i] = " + ty_info.arg_conv_name + ";\n")
+ else:
+ out_c.write("\t\t\tret->data[i] = java_elems[i];\n")
+ out_c.write("\t\t}\n")
+ out_c.write("\t\t(*env)->ReleasePrimitiveArrayCritical(env, elems, java_elems, 0);\n")
+ out_c.write("\t}\n")
+ out_c.write("\treturn (long)ret;\n")
+ out_c.write("}\n")