Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
 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;
 }
Exemplo n.º 4
0
        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;
        }