-
-
Notifications
You must be signed in to change notification settings - Fork 55
Open
Description
Input
@JS protocol MyViewControllerDelegate {
func onSomethingHappened()
}
@JS class MyViewController {
var delegate: MyViewControllerDelegate
init(delegate: MyViewControllerDelegate) { self.delegate = delegate }
func onSomethingHappened() {
delegate.onSomethingHappened()
}
}
Output
export interface MyViewControllerDelegate {
onSomethingHappened(): void;
}
type Exports = {
MyViewController: {
new(delegate: MyViewControllerDelegate)
}
}
struct AnyMyViewControllerDelegate: MyViewControllerDelegate {
let jsObject: JSObject
func onSomethingHappened() {
@_extern(wasm, "MyApp", "MyViewControllerDelegate_onSomethingHappened")
func onSomethingHappened(this: Int32)
onSomethingHappened(this: jsObject.id)
}
func bridgeJSLiftParameter(_ value: Int32) -> Self {
return AnyMyViewControllerDelegate(jsObject: JSObject(id: value))
}
}
@_expose(wasm, "MyViewController_init")
func MyViewController_init(delegate: Int32) -> Int32 {
return MyViewController(delegate: AnyMyViewControllerDelegate.bridgeJSLiftParameter()).bridgeJSLowerResult()
}
Usage
const { exports } = await init();
const vc = new exports.MyViewController({
onSomethingHappened: () => { ... }
})
Metadata
Metadata
Assignees
Labels
No labels