static JsDelegateFunction CreateMulticastDelegateFunction() { var del = new JsNativeFunc <object>(delegate() { var del2 = arguments.callee.As <JsDelegateFunction>(); var x = undefined; for (var i = 0; i < del2.delegates.length; i++) { var del3 = del2.delegates[i]; x = del3.apply(null, arguments.As <object[]>()); } return(x); }).As <JsDelegateFunction>(); del.isMulticastDelegate = true; return(del); }
public static JsFunction GetDelegate(object obj, JsFunction func) { var target = obj.As <JsCompilerObject>(); if (target == null) { return(func); } if (JsContext.@typeof(func) == "string") { func = target.As <JsObject>()[func.As <JsString>()].As <JsFunction>(); } var cache = target.__delegateCache; if (cache == null) { cache = new JsObject <JsDelegateFunction>(); target.__delegateCache = cache; } var key = JsCompiler.GetHashKey(func); var del = cache[key]; if (del == null) { del = new JsNativeFunc <object>(delegate() { var del2 = JsContext.arguments.callee.As <JsDelegateFunction>(); return(del2.func.apply(del.target, JsContext.arguments.As <object[]>())); }).As <JsDelegateFunction>(); del.func = func; del.target = target; del.isDelegate = true; cache[key] = del; } return(del); }
public static JsFunction GetDelegate(object obj, JsFunction func) { var target = obj.As<JsCompilerObject>(); if (target == null) return func; if (JsContext.@typeof(func) == "string") func = target.As<JsObject>()[func.As<JsString>()].As<JsFunction>(); var cache = target.__delegateCache; if (cache == null) { cache = new JsObject<JsDelegateFunction>(); target.__delegateCache = cache; } var key = JsCompiler.GetHashKey(func); var del = cache[key]; if (del == null) { del = new JsNativeFunc<object>(delegate() { var del2 = JsContext.arguments.callee.As<JsDelegateFunction>(); return del2.func.apply(del.target, JsContext.arguments.As<object[]>()); }).As<JsDelegateFunction>(); del.func = func; del.target = target; del.isDelegate = true; cache[key] = del; } return del; }
static JsDelegateFunction CreateMulticastDelegateFunction() { JsDelegateFunction del2 = null; var del = new JsNativeFunc<object>(delegate() { var x = undefined; for (var i = 0; i < del2.delegates.length; i++) { var del3 = del2.delegates[i]; x = del3.apply(null, arguments.As<object[]>()); } return x; }).As<JsDelegateFunction>(); del.isMulticastDelegate = true; del2 = del; return del; }