From 116361717b2a284cbf09f2bd7bd43fd453ce0448 Mon Sep 17 00:00:00 2001 From: kolegovilya Date: Thu, 23 Jan 2025 15:43:32 +0300 Subject: [PATCH 1/3] moved finilizable from peer_lib --- interop/src/interop/Finalizable.ts | 24 ++++++++++++++++++++++++ interop/src/interop/index.ts | 2 +- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/interop/src/interop/Finalizable.ts b/interop/src/interop/Finalizable.ts index f7abf4766..af5e2042b 100644 --- a/interop/src/interop/Finalizable.ts +++ b/interop/src/interop/Finalizable.ts @@ -16,6 +16,7 @@ import { Wrapper } from "./Wrapper" import { nullptr, isNullPtr } from "./Wrapper" import { finalizerRegister, finalizerUnregister, Thunk } from "@koalaui/common" +import { InteropNativeModule } from "./InteropNativeModule" import { pointer } from "./InteropTypes" export abstract class NativeThunk implements Thunk { @@ -100,3 +101,26 @@ export abstract class FinalizableBase extends Wrapper { return result } } + +export class NativeThunkImpl extends NativeThunk { + constructor(obj: pointer, finalizer: pointer, name?: string) { + super(obj, finalizer, name) + } + destroyNative(ptr: pointer, finalizer: pointer): void { + InteropNativeModule._InvokeFinalizer(ptr, finalizer) + } +} + +export class Finalizable extends FinalizableBase { + constructor(ptr: pointer, finalizer: pointer, managed: boolean = true) { + super(ptr, finalizer, managed) + } + + override makeNativeThunk(ptr: pointer, finalizer: pointer, handle: string | undefined): NativeThunk { + return new NativeThunkImpl(ptr, finalizer, handle) + } + + override createHandle(): string | undefined { + return undefined + } +} diff --git a/interop/src/interop/index.ts b/interop/src/interop/index.ts index da055a69f..3164697de 100644 --- a/interop/src/interop/index.ts +++ b/interop/src/interop/index.ts @@ -28,7 +28,7 @@ import { export { registerCallback, setCallbackRegistry } from "#common/wrappers/Callback" export { Access, Exec } from "./arrays" -export { FinalizableBase, NativeThunk } from "./Finalizable" +export { Finalizable, FinalizableBase, NativeThunkImpl, NativeThunk } from "./Finalizable" export { nullable } from "./nullable" export { getPtr, isNullPtr, nullptr, ptrEqual, Wrapper, ptrToBits, bitsToPtr } from "./Wrapper" -- Gitee From e2b4068ab2997807feeb88e129b2e738c17df819 Mon Sep 17 00:00:00 2001 From: kolegovilya Date: Fri, 24 Jan 2025 15:12:28 +0300 Subject: [PATCH 2/3] flatten inheritance --- interop/src/interop/Finalizable.ts | 44 ++++++++++-------------------- interop/src/interop/index.ts | 2 +- 2 files changed, 15 insertions(+), 31 deletions(-) diff --git a/interop/src/interop/Finalizable.ts b/interop/src/interop/Finalizable.ts index af5e2042b..55af49291 100644 --- a/interop/src/interop/Finalizable.ts +++ b/interop/src/interop/Finalizable.ts @@ -19,7 +19,7 @@ import { finalizerRegister, finalizerUnregister, Thunk } from "@koalaui/common" import { InteropNativeModule } from "./InteropNativeModule" import { pointer } from "./InteropTypes" -export abstract class NativeThunk implements Thunk { +export class NativeThunk implements Thunk { finalizer: pointer obj: pointer name: string|undefined @@ -37,18 +37,20 @@ export abstract class NativeThunk implements Thunk { this.obj = nullptr } - abstract destroyNative(ptr: pointer, finalizer: pointer): void + destroyNative(ptr: pointer, finalizer: pointer): void { + InteropNativeModule._InvokeFinalizer(ptr, finalizer) + } } /** * Class with the custom finalizer, usually used to release a native peer. * Do not use directly, only via subclasses. */ -export abstract class FinalizableBase extends Wrapper { +export class Finalizable extends Wrapper { finalizer: pointer cleaner?: NativeThunk = undefined managed: boolean - constructor(ptr: pointer, finalizer: pointer, managed: boolean) { + constructor(ptr: pointer, finalizer: pointer, managed: boolean = true) { super(ptr) this.finalizer = finalizer this.managed = managed @@ -65,8 +67,13 @@ export abstract class FinalizableBase extends Wrapper { } } - abstract createHandle(): string | undefined - abstract makeNativeThunk(ptr: pointer, finalizer: pointer, handle: string|undefined): NativeThunk + createHandle(): string | undefined { + return undefined + } + + makeNativeThunk(ptr: pointer, finalizer: pointer, handle: string | undefined): NativeThunk { + return new NativeThunk(ptr, finalizer, handle) + } close() { if (isNullPtr(this.ptr)) { @@ -95,32 +102,9 @@ export abstract class FinalizableBase extends Wrapper { this.ptr = pointer } - use(body: (value: FinalizableBase) => R): R { + use(body: (value: Finalizable) => R): R { let result = body(this) this.close() return result } } - -export class NativeThunkImpl extends NativeThunk { - constructor(obj: pointer, finalizer: pointer, name?: string) { - super(obj, finalizer, name) - } - destroyNative(ptr: pointer, finalizer: pointer): void { - InteropNativeModule._InvokeFinalizer(ptr, finalizer) - } -} - -export class Finalizable extends FinalizableBase { - constructor(ptr: pointer, finalizer: pointer, managed: boolean = true) { - super(ptr, finalizer, managed) - } - - override makeNativeThunk(ptr: pointer, finalizer: pointer, handle: string | undefined): NativeThunk { - return new NativeThunkImpl(ptr, finalizer, handle) - } - - override createHandle(): string | undefined { - return undefined - } -} diff --git a/interop/src/interop/index.ts b/interop/src/interop/index.ts index 3164697de..eea216b14 100644 --- a/interop/src/interop/index.ts +++ b/interop/src/interop/index.ts @@ -28,7 +28,7 @@ import { export { registerCallback, setCallbackRegistry } from "#common/wrappers/Callback" export { Access, Exec } from "./arrays" -export { Finalizable, FinalizableBase, NativeThunkImpl, NativeThunk } from "./Finalizable" +export { Finalizable, NativeThunk } from "./Finalizable" export { nullable } from "./nullable" export { getPtr, isNullPtr, nullptr, ptrEqual, Wrapper, ptrToBits, bitsToPtr } from "./Wrapper" -- Gitee From 5e07f84e7013ca02e610dbdf4e2eff19c609379f Mon Sep 17 00:00:00 2001 From: kolegovilya Date: Mon, 27 Jan 2025 14:56:21 +0300 Subject: [PATCH 3/3] adjust arkoala --- arkoala/arkui/src/Finalizable.ts | 3 +-- arkoala/framework/src/Finalizable.ts | 39 ---------------------------- 2 files changed, 1 insertion(+), 41 deletions(-) delete mode 100644 arkoala/framework/src/Finalizable.ts diff --git a/arkoala/arkui/src/Finalizable.ts b/arkoala/arkui/src/Finalizable.ts index c850cf2d9..fda7a4c46 100644 --- a/arkoala/arkui/src/Finalizable.ts +++ b/arkoala/arkui/src/Finalizable.ts @@ -1,4 +1,3 @@ // stub for idlize generated code -export { FinalizableBase, NativeThunk } from "@koalaui/interop" -export { Finalizable, NativeThunkImpl } from "@koalaui/arkoala" \ No newline at end of file +export { Finalizable, NativeThunk } from "@koalaui/interop" \ No newline at end of file diff --git a/arkoala/framework/src/Finalizable.ts b/arkoala/framework/src/Finalizable.ts deleted file mode 100644 index dc35c2575..000000000 --- a/arkoala/framework/src/Finalizable.ts +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (c) 2022-2023 Huawei Device Co., Ltd. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { pointer, FinalizableBase, NativeThunk, InteropNativeModule } from "@koalaui/interop" - -export class NativeThunkImpl extends NativeThunk { - constructor(obj: pointer, finalizer: pointer, name?: string) { - super(obj, finalizer, name) - } - destroyNative(ptr: pointer, finalizer: pointer): void { - InteropNativeModule._InvokeFinalizer(ptr, finalizer) - } -} - -export class Finalizable extends FinalizableBase { - constructor(ptr: pointer, finalizer: pointer, managed: boolean = true) { - super(ptr, finalizer, managed) - } - - override makeNativeThunk(ptr: pointer, finalizer: pointer, handle: string | undefined): NativeThunk { - return new NativeThunkImpl(ptr, finalizer, handle) - } - - override createHandle(): string | undefined { - return undefined - } -} -- Gitee