#!/usr/bin/env python3
import sys, re
-if len(sys.argv) != 7:
+if len(sys.argv) < 7:
print("USAGE: /path/to/lightning.h /path/to/bindings/output /path/to/bindings/ /path/to/bindings/output.c debug lang")
sys.exit(1)
print("debug should be true or false and indicates whether to track allocations and ensure we don't leak")
sys.exit(1)
+target = None
if sys.argv[6] == "java":
from java_strings import Consts
elif sys.argv[6] == "typescript":
+ import typescript_strings
from typescript_strings import Consts
+ target = typescript_strings.Target.NODEJS
+ if len(sys.argv) == 8 and sys.argv[7] == 'browser':
+ target = typescript_strings.Target.BROWSER
else:
print("Only java or typescript can be set for lang")
sys.exit(1)
-consts = Consts(DEBUG)
+consts = Consts(DEBUG, target=target)
from bindingstypes import *
write_c("\treturn tuple->" + e + ";\n")
write_c("}\n")
- out_java.write("""package org.ldk.impl;
-import org.ldk.enums.*;
-
-public class bindings {
- public static class VecOrSliceDef {
- public long dataptr;
- public long datalen;
- public long stride;
- public VecOrSliceDef(long dataptr, long datalen, long stride) {
- this.dataptr = dataptr; this.datalen = datalen; this.stride = stride;
- }
- }
- static {
- System.loadLibrary(\"lightningjni\");
- init(java.lang.Enum.class, VecOrSliceDef.class);
- init_class_cache();
- }
- static native void init(java.lang.Class c, java.lang.Class slicedef);
- static native void init_class_cache();
-
- public static native boolean deref_bool(long ptr);
- public static native long deref_long(long ptr);
- public static native void free_heap_ptr(long ptr);
- public static native byte[] read_bytes(long ptr, long len);
- public static native byte[] get_u8_slice_bytes(long slice_ptr);
- public static native long bytes_to_u8_vec(byte[] bytes);
- public static native long new_txpointer_copy_data(byte[] txdata);
- public static native void txpointer_free(long ptr);
- public static native byte[] txpointer_get_buffer(long ptr);
- public static native long vec_slice_len(long vec);
- public static native long new_empty_slice_vec();
-
-""")
+ out_java.write(consts.bindings_header)
with open(f"{sys.argv[3]}/structs/CommonBase{consts.file_ext}", "w") as out_java_struct:
out_java_struct.write(consts.common_base)