Fix kotlin wallet struct access via JNA opaque pointer
This commit is contained in:
@@ -10,18 +10,19 @@ import com.sun.jna.ptr.PointerByReference
|
||||
// int32_t count;
|
||||
//
|
||||
// } Config_t;
|
||||
//@Structure.FieldOrder("x", "y")
|
||||
@Structure.FieldOrder("name", "count")
|
||||
class Config_t : Structure() {
|
||||
@JvmField
|
||||
var name: String? = null
|
||||
@JvmField
|
||||
var count: NativeLong? = null
|
||||
|
||||
override fun getFieldOrder() = listOf("name", "count")
|
||||
}
|
||||
|
||||
// typedef struct WalletPtr WalletPtr_t;
|
||||
//class WalletPtr_t : PointerType()
|
||||
class WalletPtr_t : PointerType {
|
||||
constructor(): super()
|
||||
constructor(pointer: Pointer): super(pointer)
|
||||
}
|
||||
|
||||
interface Lib : Library {
|
||||
|
||||
@@ -38,10 +39,6 @@ interface Lib : Library {
|
||||
// char * string);
|
||||
fun free_string(string: String)
|
||||
|
||||
// void print_int (
|
||||
// int64_t number);
|
||||
fun print_int(number: Int)
|
||||
|
||||
// void print_config (
|
||||
// Config_t const * config);
|
||||
fun print_config(config: Config_t)
|
||||
@@ -59,18 +56,18 @@ interface Lib : Library {
|
||||
// char const * name,
|
||||
// char const * descriptor,
|
||||
// char const * change_descriptor);
|
||||
//fun new_wallet(name: String, descriptor: String, changeDescriptor: String?): WalletPtr_t
|
||||
fun new_wallet(name: String, descriptor: String, changeDescriptor: String?): WalletPtr_t
|
||||
|
||||
// void sync_wallet (
|
||||
// WalletPtr_t * const * wallet);
|
||||
//fun sync_wallet(wallet: WalletPtr_t)
|
||||
//fun sync_wallet(wallet: WalletPtr_t)
|
||||
fun sync_wallet(wallet: WalletPtr_t)
|
||||
|
||||
// char * new_address (
|
||||
// WalletPtr_t * const * wallet);
|
||||
//fun new_address(wallet: WalletPtr_t): String
|
||||
fun new_address(wallet: WalletPtr_t): String
|
||||
|
||||
// void free_wallet (
|
||||
// WalletPtr_t * wallet);
|
||||
//fun free_wallet(wallet: WalletPtr_t)
|
||||
fun free_wallet(wallet: WalletPtr_t)
|
||||
}
|
||||
|
||||
@@ -2,8 +2,6 @@ package org.bitcoindevkit.bdkjni
|
||||
|
||||
import com.sun.jna.Native
|
||||
import com.sun.jna.NativeLong
|
||||
import com.sun.jna.Pointer
|
||||
import com.sun.jna.ptr.PointerByReference
|
||||
import org.junit.Test
|
||||
|
||||
/**
|
||||
@@ -43,26 +41,26 @@ class LibTest {
|
||||
lib.free_config(config)
|
||||
}
|
||||
|
||||
// @Test
|
||||
// fun new_sync_free_wallet() {
|
||||
// val name = "test_wallet"
|
||||
// val desc = "wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/0/*)"
|
||||
// val change = "wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/1/*)"
|
||||
//
|
||||
// val wallet = lib.new_wallet(name, desc, change)
|
||||
// println("wallet created in kotlin: $wallet")
|
||||
// lib.sync_wallet(wallet)
|
||||
// //lib.free_wallet(wallet)
|
||||
// }
|
||||
@Test
|
||||
fun new_sync_free_wallet() {
|
||||
val name = "test_wallet"
|
||||
val desc = "wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/0/*)"
|
||||
val change = "wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/1/*)"
|
||||
|
||||
// @Test
|
||||
// fun new_newaddress_wallet() {
|
||||
// val name = "test_wallet"
|
||||
// val desc = "wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/0/*)"
|
||||
// val change = "wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/1/*)"
|
||||
//
|
||||
// val config = lib.new_config("test test", NativeLong(Long.MAX_VALUE))
|
||||
// lib.print_config(config)
|
||||
// lib.free_config(config)
|
||||
// }
|
||||
val wallet = lib.new_wallet(name, desc, change)
|
||||
lib.sync_wallet(wallet)
|
||||
lib.free_wallet(wallet)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun new_newaddress_wallet() {
|
||||
val name = "test_wallet"
|
||||
val desc = "wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/0/*)"
|
||||
val change = "wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/1/*)"
|
||||
|
||||
val wallet = lib.new_wallet(name, desc, change)
|
||||
val address = lib.new_address(wallet)
|
||||
println("address created from kotlin: $address")
|
||||
lib.free_wallet(wallet)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user