[C#] Move dont-use-reserved-words handling to a util method
[ldk-java] / csharp_strings.py
index 74830d0458ce2a56bc23a15fd3a5e76b130cf906..51cdaa97ac6c0098873714bb897fbaa1960b734c 100644 (file)
@@ -5,6 +5,16 @@ import sys
 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
@@ -440,10 +450,10 @@ namespace org { namespace ldk { namespace structs {
         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):
@@ -1033,7 +1043,7 @@ namespace org { namespace ldk { namespace structs {
                 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:
@@ -1123,7 +1133,6 @@ namespace org { namespace ldk { namespace structs {
         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