From 84ab446d4f0c82d319e85594d29399ff235140ca Mon Sep 17 00:00:00 2001 From: pavelpozdeev Date: Mon, 24 Feb 2025 17:04:54 +0300 Subject: [PATCH 1/2] rebase --- interop/src/cangjie/SerializerBase.cj | 43 +++++++++++++++++++-------- 1 file changed, 30 insertions(+), 13 deletions(-) diff --git a/interop/src/cangjie/SerializerBase.cj b/interop/src/cangjie/SerializerBase.cj index 99df18ce96..bf762f3bac 100644 --- a/interop/src/cangjie/SerializerBase.cj +++ b/interop/src/cangjie/SerializerBase.cj @@ -49,10 +49,10 @@ public enum RuntimeType { } } -public class PromiseAndResourceId { - public var promise: Any +public class PromiseAndResourceId { + public var promise: Future public var resourceId: ResourceId - init (promise: Any, resourceId: ResourceId) { + init (promise: Future, resourceId: ResourceId) { this.promise = promise this.resourceId = resourceId } @@ -137,21 +137,38 @@ public open class SerializerBase { this.writePointer(callSync) return resourceId } - public func holdAndWriteCallbackForPromiseVoid(): PromiseAndResourceId { + public func holdAndWriteCallbackForPromiseVoid(): PromiseAndResourceId { return holdAndWriteCallbackForPromiseVoid(0, 0, 0, 0) } - public func holdAndWriteCallbackForPromiseVoid(hold: KPointer, release: KPointer, call: KPointer, callSync: KPointer): PromiseAndResourceId { - let resourceId: ResourceId - resourceId = this.holdAndWriteCallback({ => }, hold, release, call, callSync) - return PromiseAndResourceId({ => }, resourceId) + public func holdAndWriteCallbackForPromiseVoid(hold: KPointer, release: KPointer, call: KPointer, callSync: KPointer): PromiseAndResourceId { + var resourceId: ResourceId = 0 + let promise: Future = spawn { + // let callback = { + // err: Option> => { + // if (let Some(err) <- err) { + + // } else { + + // } + // } + // } + resourceId = this.holdAndWriteCallback({ => }, hold, release, call, callSync) + } + return PromiseAndResourceId(promise, resourceId) } - public func holdAndWriteCallbackForPromise(): PromiseAndResourceId { + public func holdAndWriteCallbackForPromise(): PromiseAndResourceId { return holdAndWriteCallbackForPromise(0, 0, 0) } - public func holdAndWriteCallbackForPromise(hold: KPointer, release: KPointer, call: KPointer): PromiseAndResourceId { - let resourceId: ResourceId - resourceId = this.holdAndWriteCallback({ => }, hold, release, call, 0) - return PromiseAndResourceId({ => }, resourceId) + public func holdAndWriteCallbackForPromise(hold: KPointer, release: KPointer, call: KPointer): PromiseAndResourceId { + var resourceId: ResourceId = 0 + let promise: Future = spawn { => + let callback = { + value: T => return value + } + resourceId = this.holdAndWriteCallback(callback, hold, release, call, 0) + return callback() + } + return PromiseAndResourceId(promise, resourceId) } public func writeFunction(value: Any): Unit { // TODO -- Gitee From 43742b92a8e48d4d3e4568e8a070a7f881cd80d6 Mon Sep 17 00:00:00 2001 From: pavelpozdeev Date: Thu, 27 Feb 2025 13:15:23 +0300 Subject: [PATCH 2/2] restore some changes --- interop/src/cangjie/InteropTypes.cj | 2 ++ .../{Finalizable.cj => MaterializedBase.cj} | 11 +++----- interop/src/cangjie/SerializerBase.cj | 25 +++---------------- 3 files changed, 10 insertions(+), 28 deletions(-) rename interop/src/cangjie/{Finalizable.cj => MaterializedBase.cj} (83%) diff --git a/interop/src/cangjie/InteropTypes.cj b/interop/src/cangjie/InteropTypes.cj index 993c8346ec..38197fc41b 100644 --- a/interop/src/cangjie/InteropTypes.cj +++ b/interop/src/cangjie/InteropTypes.cj @@ -20,8 +20,10 @@ public type KPointer = UInt64 public type KFloat = Float32 public type pointer = KPointer public type KInt = Int32 +public type KLong = Int64 public type KStringPtr = String public type ArrayBuffer = ArrayList +public const nullptr: UInt64 = 0 @C public struct KInteropReturnBuffer { public var length: Int32 diff --git a/interop/src/cangjie/Finalizable.cj b/interop/src/cangjie/MaterializedBase.cj similarity index 83% rename from interop/src/cangjie/Finalizable.cj rename to interop/src/cangjie/MaterializedBase.cj index 5e26d0e8fc..362de947c7 100644 --- a/interop/src/cangjie/Finalizable.cj +++ b/interop/src/cangjie/MaterializedBase.cj @@ -24,14 +24,11 @@ public open class Finalizable { } } -public abstract class MaterializedBase { - public var peer: Option = Option.None +public interface MaterializedBase { + public func getPeer(): ?Finalizable - public func getPeer(): ?Finalizable { - return this.peer - } - - public static func toPeerPtr(value: Object): KPointer { + public static func toPeerPtr(value: Any): KPointer + { let base: MaterializedBase = match (value as MaterializedBase) { case Some(x) => x case None => throw Exception("Value is not a MaterializedBase instance!") diff --git a/interop/src/cangjie/SerializerBase.cj b/interop/src/cangjie/SerializerBase.cj index bf762f3bac..fdca1ae634 100644 --- a/interop/src/cangjie/SerializerBase.cj +++ b/interop/src/cangjie/SerializerBase.cj @@ -50,9 +50,9 @@ public enum RuntimeType { } public class PromiseAndResourceId { - public var promise: Future + public var promise: Any public var resourceId: ResourceId - init (promise: Future, resourceId: ResourceId) { + init (promise: Any, resourceId: ResourceId) { this.promise = promise this.resourceId = resourceId } @@ -142,18 +142,7 @@ public open class SerializerBase { } public func holdAndWriteCallbackForPromiseVoid(hold: KPointer, release: KPointer, call: KPointer, callSync: KPointer): PromiseAndResourceId { var resourceId: ResourceId = 0 - let promise: Future = spawn { - // let callback = { - // err: Option> => { - // if (let Some(err) <- err) { - - // } else { - - // } - // } - // } - resourceId = this.holdAndWriteCallback({ => }, hold, release, call, callSync) - } + let promise = { => } return PromiseAndResourceId(promise, resourceId) } public func holdAndWriteCallbackForPromise(): PromiseAndResourceId { @@ -161,13 +150,7 @@ public open class SerializerBase { } public func holdAndWriteCallbackForPromise(hold: KPointer, release: KPointer, call: KPointer): PromiseAndResourceId { var resourceId: ResourceId = 0 - let promise: Future = spawn { => - let callback = { - value: T => return value - } - resourceId = this.holdAndWriteCallback(callback, hold, release, call, 0) - return callback() - } + let promise = { => } return PromiseAndResourceId(promise, resourceId) } public func writeFunction(value: Any): Unit { -- Gitee