class Target(Enum):
CSHARP = 1,
+def first_to_lower(string: str) -> str:
+ first = string[0]
+ return first.lower() + string[1:]
+
+def safe_arg_name(arg_name):
+ return "_" + arg_name if arg_name == "lock" or arg_name == "event" or arg_name == "params" else arg_name
+
+def arg_name_repl(s, arg_name):
+ return s.replace(arg_name, "_" + arg_name) if arg_name == "lock" or arg_name == "event" or arg_name == "params" else s
+
class Consts:
def __init__(self, DEBUG: bool, target: Target, **kwargs):
self.target = target
uint32_t = ['int'],
uint64_t = ['long'],
int64_t = ['long'],
+ double = ['double'],
)
self.java_type_map = dict(
String = "string"
self.usize_c_ty = "int64_t"
self.usize_native_ty = "long"
self.native_zero_ptr = "0"
- self.result_c_ty = "jclass"
- self.ptr_arr = "jobjectArray"
+ self.unitary_enum_c_ty = "int32_t"
+ self.ptr_arr = "ptrArray"
self.is_arr_some_check = ("", " != NULL")
- self.get_native_arr_len_call = ("(*env)->GetArrayLength(env, ", ")")
+ self.get_native_arr_len_call = ("", "->arr_len")
self.bindings_footer_wip = "\tstatic bindings() {\n"
def bindings_footer(self):
else:
return "FREE(" + arr_name + ")"
- def map_hu_array_elems(self, arr_name, conv_name, arr_ty, elem_ty):
+ def map_hu_array_elems(self, arr_name, conv_name, arr_ty, elem_ty, is_nullable):
if elem_ty.java_hu_ty == "UInt5":
return arr_name + " != null ? InternalUtils.convUInt5Array(" + arr_name + ") : null"
elif elem_ty.java_hu_ty == "WitnessVersion":
out_c += "\t" + struct_name + " *obj = (" + struct_name + "*)untag_ptr(ptr);\n"
out_c += f"\tassert(obj->tag == {struct_name}_{var.var_name});\n"
if field_map.ret_conv is not None:
- out_c += ("\t\t\t" + field_map.ret_conv[0].replace("\n", "\n\t\t\t"))
+ out_c += ("\t" + field_map.ret_conv[0].replace("\n", "\n\t"))
if var.tuple_variant:
out_c += "obj->" + camel_to_snake(var.var_name)
else:
return java_hu_struct
def map_function(self, argument_types, c_call_string, method_name, meth_n, return_type_info, struct_meth, default_constructor_args, takes_self, takes_self_as_ref, args_known, type_mapping_generator, doc_comment):
- arg_name_repl = lambda s, arg_name: s.replace(arg_name, "_" + arg_name) if arg_name == "lock" or arg_name == "event" or arg_name == "params" else s
out_java = ""
out_c = ""
out_java_struct = None