Generic callbacks
This guide will show you how you can declare a generic callback thanks to Codeware's reflection.
Requirements
How to
Callback
Declaration
public class Callback extends DelayCallback {
private let m_target: wref<IScriptable>;
private let m_fn: CName;
private let m_data: array<Variant>;
public static func Create(target: wref<IScriptable>,
fn: CName,
opt data: array<Variant>) -> ref<Callback> {
let self = new Callback();
self.m_target = target;
self.m_fn = fn;
self.m_data = data;
return self;
}
public func Call() -> Variant {
if !IsDefined(this.m_target) {
return null;
}
return Reflection.GetClassOf(ToVariant(this.m_target))
.GetFunction(this.m_fn)
.Call(this.m_target, this.m_data);
}
public func Call(data: array<Variant>) -> Variant {
if !IsDefined(this.m_target) {
return null;
}
let args = this.m_data;
for item in data {
ArrayPush(args, item);
}
return Reflection.GetClassOf(ToVariant(this.m_target))
.GetFunction(this.m_fn)
.Call(this.m_target, args);
}
}Example
StaticCallback
Declaration
Example
Last updated
Was this helpful?