Remove unneeded pointers from FfiResult types
This commit is contained in:
@@ -1,15 +0,0 @@
|
||||
package org.bitcoindevkit.bdk
|
||||
|
||||
import com.sun.jna.Pointer
|
||||
import com.sun.jna.Structure
|
||||
|
||||
abstract class FfiResult : Structure {
|
||||
constructor() : super()
|
||||
constructor(pointer: Pointer) : super(pointer)
|
||||
|
||||
@JvmField
|
||||
var ok: Pointer? = null
|
||||
|
||||
@JvmField
|
||||
var err: Pointer? = null
|
||||
}
|
||||
@@ -6,15 +6,21 @@ interface LibJna : Library {
|
||||
|
||||
// typedef struct {
|
||||
//
|
||||
// char * * ok;
|
||||
// char * ok;
|
||||
//
|
||||
// char * * err;
|
||||
// char * err;
|
||||
//
|
||||
// } FfiResult_char_ptr_t;
|
||||
open class FfiResult_char_ptr_t : FfiResult() {
|
||||
//} FfiResult_char_ptr_t;
|
||||
open class FfiResult_char_ptr_t : Structure() {
|
||||
class ByValue : FfiResult_char_ptr_t(), Structure.ByValue
|
||||
class ByReference : FfiResult_char_ptr_t(), Structure.ByReference
|
||||
|
||||
@JvmField
|
||||
var ok: String = ""
|
||||
|
||||
@JvmField
|
||||
var err: String = ""
|
||||
|
||||
override fun getFieldOrder() = listOf("ok", "err")
|
||||
}
|
||||
|
||||
@@ -24,21 +30,27 @@ interface LibJna : Library {
|
||||
|
||||
// typedef struct {
|
||||
//
|
||||
// void * ok;
|
||||
// int32_t ok;
|
||||
//
|
||||
// char * * err;
|
||||
// char * err;
|
||||
//
|
||||
// } FfiResult_void_t;
|
||||
open class FfiResult_void_t : FfiResult() {
|
||||
class ByValue : FfiResult_void_t(), Structure.ByValue
|
||||
class ByReference : FfiResult_void_t(), Structure.ByReference
|
||||
//} FfiResult_int32_t;
|
||||
open class FfiResult_int32_t : Structure() {
|
||||
class ByValue : FfiResult_int32_t(), Structure.ByValue
|
||||
class ByReference : FfiResult_int32_t(), Structure.ByReference
|
||||
|
||||
@JvmField
|
||||
var ok: Int = 0
|
||||
|
||||
@JvmField
|
||||
var err: String = ""
|
||||
|
||||
override fun getFieldOrder() = listOf("ok", "err")
|
||||
}
|
||||
|
||||
// void free_void_result (
|
||||
// FfiResult_void_t void_result);
|
||||
fun free_void_result(void_result: FfiResult_void_t.ByValue)
|
||||
// void free_int_result (
|
||||
// FfiResult_int32_t int_result);
|
||||
fun free_int_result(void_result: FfiResult_int32_t.ByValue)
|
||||
|
||||
// void free_string (
|
||||
// char * string);
|
||||
@@ -82,17 +94,23 @@ interface LibJna : Library {
|
||||
//
|
||||
// OpaqueWallet_t * ok;
|
||||
//
|
||||
// char * * err;
|
||||
// char * err;
|
||||
//
|
||||
// } FfiResult_OpaqueWallet_t;
|
||||
open class FfiResult_OpaqueWallet_t : FfiResult() {
|
||||
class ByValue : FfiResult_OpaqueWallet_t(), Structure.ByValue
|
||||
class ByReference : FfiResult_OpaqueWallet_t(), Structure.ByReference
|
||||
// } FfiResult_OpaqueWallet_ptr_t;
|
||||
open class FfiResult_OpaqueWallet_ptr_t : Structure() {
|
||||
class ByValue : FfiResult_OpaqueWallet_ptr_t(), Structure.ByValue
|
||||
class ByReference : FfiResult_OpaqueWallet_ptr_t(), Structure.ByReference
|
||||
|
||||
@JvmField
|
||||
var ok: OpaqueWallet_t = OpaqueWallet_t()
|
||||
|
||||
@JvmField
|
||||
var err: String = ""
|
||||
|
||||
override fun getFieldOrder() = listOf("ok", "err")
|
||||
}
|
||||
|
||||
// FfiResult_OpaqueWallet_t new_wallet_result (
|
||||
// FfiResult_OpaqueWallet_ptr_t new_wallet_result (
|
||||
// char const * descriptor,
|
||||
// char const * change_descriptor,
|
||||
// BlockchainConfig_t const * blockchain_config,
|
||||
@@ -102,11 +120,11 @@ interface LibJna : Library {
|
||||
changeDescriptor: String?,
|
||||
blockchainConfig: BlockchainConfig_t,
|
||||
databaseConfig: DatabaseConfig_t,
|
||||
): FfiResult_OpaqueWallet_t.ByValue
|
||||
): FfiResult_OpaqueWallet_ptr_t.ByValue
|
||||
|
||||
// void free_wallet_result (
|
||||
// FfiResult_OpaqueWallet_t wallet_result);
|
||||
fun free_wallet_result(wallet_result: FfiResult_OpaqueWallet_t.ByValue)
|
||||
// FfiResult_OpaqueWallet_ptr_t wallet_result);
|
||||
fun free_wallet_result(wallet_result: FfiResult_OpaqueWallet_ptr_t.ByValue)
|
||||
|
||||
// typedef struct {
|
||||
//
|
||||
@@ -155,19 +173,10 @@ interface LibJna : Library {
|
||||
// uint16_t keychain;
|
||||
//
|
||||
// } LocalUtxo_t;
|
||||
open class LocalUtxo_t : Structure {
|
||||
constructor() : super()
|
||||
constructor(pointer: Pointer) : super(pointer)
|
||||
|
||||
class ByValue : LocalUtxo_t, Structure.ByValue {
|
||||
constructor() : super()
|
||||
constructor(pointer: Pointer) : super(pointer)
|
||||
}
|
||||
|
||||
class ByReference : LocalUtxo_t, Structure.ByReference {
|
||||
constructor() : super()
|
||||
constructor(pointer: Pointer) : super(pointer)
|
||||
}
|
||||
open class LocalUtxo_t : Structure() {
|
||||
|
||||
class ByValue : LocalUtxo_t(), Structure.ByValue
|
||||
class ByReference : LocalUtxo_t(), Structure.ByReference
|
||||
|
||||
@JvmField
|
||||
var outpoint: OutPoint_t? = null
|
||||
@@ -190,19 +199,10 @@ interface LibJna : Library {
|
||||
// size_t cap;
|
||||
//
|
||||
// } Vec_LocalUtxo_t;
|
||||
open class Vec_LocalUtxo_t : Structure {
|
||||
constructor() : super()
|
||||
constructor(pointer: Pointer) : super(pointer)
|
||||
|
||||
class ByReference : Vec_LocalUtxo_t, Structure.ByReference {
|
||||
constructor() : super()
|
||||
constructor(pointer: Pointer) : super(pointer)
|
||||
}
|
||||
|
||||
class ByValue : Vec_LocalUtxo_t, Structure.ByValue {
|
||||
constructor() : super()
|
||||
constructor(pointer: Pointer) : super(pointer)
|
||||
}
|
||||
open class Vec_LocalUtxo_t : Structure() {
|
||||
|
||||
class ByReference : Vec_LocalUtxo_t(), Structure.ByReference
|
||||
class ByValue : Vec_LocalUtxo_t(), Structure.ByValue
|
||||
|
||||
@JvmField
|
||||
var ptr: LocalUtxo_t.ByReference? = null
|
||||
@@ -220,9 +220,9 @@ interface LibJna : Library {
|
||||
//
|
||||
// Vec_LocalUtxo_t ok;
|
||||
//
|
||||
// char * * err;
|
||||
// char * err;
|
||||
//
|
||||
// } FfiResultVec_LocalUtxo_t;
|
||||
// } FfiResult_Vec_LocalUtxo_t;
|
||||
open class FfiResultVec_LocalUtxo_t : Structure() {
|
||||
|
||||
class ByValue : FfiResultVec_LocalUtxo_t(), Structure.ByValue
|
||||
@@ -232,18 +232,18 @@ interface LibJna : Library {
|
||||
var ok: Vec_LocalUtxo_t = Vec_LocalUtxo_t()
|
||||
|
||||
@JvmField
|
||||
var err: Pointer? = null
|
||||
var err: String = ""
|
||||
|
||||
override fun getFieldOrder() = listOf("ok", "err")
|
||||
}
|
||||
|
||||
// void free_unspent_result (
|
||||
// FfiResultVec_LocalUtxo_t unspent_result);
|
||||
// FfiResult_Vec_LocalUtxo_t unspent_result);
|
||||
fun free_unspent_result(unspent_result: FfiResultVec_LocalUtxo_t.ByValue)
|
||||
|
||||
// FfiResult_void_t sync_wallet (
|
||||
// FfiResult_int32_t sync_wallet (
|
||||
// OpaqueWallet_t const * opaque_wallet);
|
||||
fun sync_wallet(opaque_wallet: OpaqueWallet_t): FfiResult_void_t.ByValue
|
||||
fun sync_wallet(opaque_wallet: OpaqueWallet_t): FfiResult_int32_t.ByValue
|
||||
|
||||
// FfiResult_char_ptr_t new_address (
|
||||
// OpaqueWallet_t const * opaque_wallet);
|
||||
|
||||
@@ -1,41 +0,0 @@
|
||||
package org.bitcoindevkit.bdk.types
|
||||
|
||||
import com.sun.jna.Pointer
|
||||
import org.bitcoindevkit.bdk.FfiResult
|
||||
import org.bitcoindevkit.bdk.JnaError
|
||||
import org.bitcoindevkit.bdk.JnaException
|
||||
import org.bitcoindevkit.bdk.LibBase
|
||||
import org.slf4j.Logger
|
||||
import org.slf4j.LoggerFactory
|
||||
|
||||
abstract class Result<T : FfiResult, RT : Any>(private val ffiResult: T): LibBase() {
|
||||
|
||||
protected open val log: Logger = LoggerFactory.getLogger(Result::class.java)
|
||||
|
||||
protected abstract fun getOkValue(pointer: Pointer): RT
|
||||
|
||||
protected abstract fun freeResult(ffiResult: T)
|
||||
|
||||
fun value(): RT {
|
||||
val err = ffiResult.err
|
||||
val ok = ffiResult.ok
|
||||
when {
|
||||
err != null -> {
|
||||
val errString = err.getPointer(0).getString(0)
|
||||
log.error("JnaError: $errString")
|
||||
throw JnaException(JnaError.valueOf(errString))
|
||||
}
|
||||
ok != null -> {
|
||||
return getOkValue(ok)
|
||||
}
|
||||
else -> {
|
||||
throw JnaException(JnaError.Generic)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected fun finalize() {
|
||||
freeResult(ffiResult)
|
||||
log.debug("$ffiResult freed")
|
||||
}
|
||||
}
|
||||
@@ -1,16 +1,33 @@
|
||||
package org.bitcoindevkit.bdk.types
|
||||
|
||||
import com.sun.jna.Pointer
|
||||
import org.bitcoindevkit.bdk.JnaError
|
||||
import org.bitcoindevkit.bdk.JnaException
|
||||
import org.bitcoindevkit.bdk.LibBase
|
||||
import org.bitcoindevkit.bdk.LibJna
|
||||
import org.slf4j.Logger
|
||||
import org.slf4j.LoggerFactory
|
||||
|
||||
class StringResult constructor(stringResultPtr: LibJna.FfiResult_char_ptr_t.ByValue) :
|
||||
Result<LibJna.FfiResult_char_ptr_t.ByValue, String>(stringResultPtr) {
|
||||
class StringResult constructor(private val ffiResultCharPtrT: LibJna.FfiResult_char_ptr_t.ByValue) :
|
||||
LibBase() {
|
||||
|
||||
override fun getOkValue(pointer: Pointer): String {
|
||||
return pointer.getPointer(0).getString(0)
|
||||
private val log: Logger = LoggerFactory.getLogger(StringResult::class.java)
|
||||
|
||||
fun value(): String {
|
||||
val err = ffiResultCharPtrT.err
|
||||
val ok = ffiResultCharPtrT.ok
|
||||
when {
|
||||
err.isNotEmpty() -> {
|
||||
log.error("JnaError: $err")
|
||||
throw JnaException(JnaError.valueOf(err))
|
||||
}
|
||||
else -> {
|
||||
return ok
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun freeResult(ffiResult: LibJna.FfiResult_char_ptr_t.ByValue) {
|
||||
libJna.free_string_result(ffiResult)
|
||||
protected fun finalize() {
|
||||
libJna.free_string_result(ffiResultCharPtrT)
|
||||
log.debug("$ffiResultCharPtrT freed")
|
||||
}
|
||||
}
|
||||
@@ -1,16 +1,33 @@
|
||||
package org.bitcoindevkit.bdk.types
|
||||
|
||||
import com.sun.jna.Pointer
|
||||
import org.bitcoindevkit.bdk.JnaError
|
||||
import org.bitcoindevkit.bdk.JnaException
|
||||
import org.bitcoindevkit.bdk.LibBase
|
||||
import org.bitcoindevkit.bdk.LibJna
|
||||
import org.slf4j.Logger
|
||||
import org.slf4j.LoggerFactory
|
||||
|
||||
class VoidResult constructor(voidResultPtr: LibJna.FfiResult_void_t.ByValue) :
|
||||
Result<LibJna.FfiResult_void_t.ByValue, Unit>(voidResultPtr) {
|
||||
class VoidResult constructor(private val ffiResultInt32T: LibJna.FfiResult_int32_t.ByValue) :
|
||||
LibBase() {
|
||||
|
||||
override fun getOkValue(pointer: Pointer) {
|
||||
// No value
|
||||
private val log: Logger = LoggerFactory.getLogger(VoidResult::class.java)
|
||||
|
||||
fun value(): Unit {
|
||||
val err = ffiResultInt32T.err
|
||||
//val ok = ffiResultInt32T.ok
|
||||
when {
|
||||
err.isNotEmpty() -> {
|
||||
log.error("JnaError: $err")
|
||||
throw JnaException(JnaError.valueOf(err))
|
||||
}
|
||||
else -> {
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun freeResult(ffiResult: LibJna.FfiResult_void_t.ByValue) {
|
||||
libJna.free_void_result(ffiResult)
|
||||
protected fun finalize() {
|
||||
libJna.free_int_result(ffiResultInt32T)
|
||||
log.debug("$ffiResultInt32T freed")
|
||||
}
|
||||
}
|
||||
@@ -7,19 +7,18 @@ import org.bitcoindevkit.bdk.LibJna
|
||||
import org.slf4j.Logger
|
||||
import org.slf4j.LoggerFactory
|
||||
|
||||
class VecLocalUtxoResult(private val ffiResult: LibJna.FfiResultVec_LocalUtxo_t.ByValue) :
|
||||
class VecLocalUtxoResult(private val ffiResultVecLocalUtxoT: LibJna.FfiResultVec_LocalUtxo_t.ByValue) :
|
||||
LibBase() {
|
||||
|
||||
protected open val log: Logger = LoggerFactory.getLogger(VecLocalUtxoResult::class.java)
|
||||
private val log: Logger = LoggerFactory.getLogger(VecLocalUtxoResult::class.java)
|
||||
|
||||
fun value(): Array<LibJna.LocalUtxo_t.ByReference> {
|
||||
val err = ffiResult.err
|
||||
val ok = ffiResult.ok
|
||||
val err = ffiResultVecLocalUtxoT.err
|
||||
val ok = ffiResultVecLocalUtxoT.ok
|
||||
when {
|
||||
err != null -> {
|
||||
val errString = err.getPointer(0).getString(0)
|
||||
log.error("JnaError: $errString")
|
||||
throw JnaException(JnaError.valueOf(errString))
|
||||
err .isNotEmpty() -> {
|
||||
log.error("JnaError: $err")
|
||||
throw JnaException(JnaError.valueOf(err))
|
||||
}
|
||||
else -> {
|
||||
val first = ok.ptr!!
|
||||
@@ -29,7 +28,7 @@ class VecLocalUtxoResult(private val ffiResult: LibJna.FfiResultVec_LocalUtxo_t.
|
||||
}
|
||||
|
||||
protected fun finalize() {
|
||||
libJna.free_unspent_result(ffiResult)
|
||||
log.debug("$ffiResult freed")
|
||||
libJna.free_unspent_result(ffiResultVecLocalUtxoT)
|
||||
log.debug("$ffiResultVecLocalUtxoT freed")
|
||||
}
|
||||
}
|
||||
@@ -1,17 +1,33 @@
|
||||
package org.bitcoindevkit.bdk.wallet
|
||||
|
||||
import com.sun.jna.Pointer
|
||||
import org.bitcoindevkit.bdk.JnaError
|
||||
import org.bitcoindevkit.bdk.JnaException
|
||||
import org.bitcoindevkit.bdk.LibBase
|
||||
import org.bitcoindevkit.bdk.LibJna
|
||||
import org.bitcoindevkit.bdk.types.Result
|
||||
import org.slf4j.Logger
|
||||
import org.slf4j.LoggerFactory
|
||||
|
||||
class WalletResult constructor(walletResultPtr: LibJna.FfiResult_OpaqueWallet_t.ByValue) :
|
||||
Result<LibJna.FfiResult_OpaqueWallet_t.ByValue, LibJna.OpaqueWallet_t>(walletResultPtr) {
|
||||
class WalletResult constructor(private val ffiResultOpaqueWalletPtrT: LibJna.FfiResult_OpaqueWallet_ptr_t.ByValue) :
|
||||
LibBase() {
|
||||
|
||||
override fun getOkValue(pointer: Pointer): LibJna.OpaqueWallet_t {
|
||||
return LibJna.OpaqueWallet_t(pointer)
|
||||
private val log: Logger = LoggerFactory.getLogger(WalletResult::class.java)
|
||||
|
||||
fun value(): LibJna.OpaqueWallet_t {
|
||||
val err = ffiResultOpaqueWalletPtrT.err
|
||||
val ok = ffiResultOpaqueWalletPtrT.ok
|
||||
when {
|
||||
err.isNotEmpty() -> {
|
||||
log.error("JnaError: $err")
|
||||
throw JnaException(JnaError.valueOf(err))
|
||||
}
|
||||
else -> {
|
||||
return ok
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun freeResult(ffiResult: LibJna.FfiResult_OpaqueWallet_t.ByValue) {
|
||||
libJna.free_wallet_result(ffiResult)
|
||||
protected fun finalize() {
|
||||
libJna.free_wallet_result(ffiResultOpaqueWalletPtrT)
|
||||
log.debug("$ffiResultOpaqueWalletPtrT freed")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user