Example #1
0
        private EcmaValue Reverse(EcmaHeadObject obj, EcmaValue[] arg)
        {
            uint length = obj.Get("length").ToUint32(state);
            uint mid    = (uint)Math.Floor((double)length / 2);
            uint k      = 0;

            while (k != mid)
            {
                uint l = length - k - 1;
                if (obj.HasProperty(k.ToString()))
                {
                    if (obj.HasProperty(l.ToString()))
                    {
                        EcmaValue a = obj.Get(k.ToString());
                        obj.Put(k.ToString(), obj.Get(l.ToString()));
                        obj.Put(l.ToString(), a);
                    }
                    else
                    {
                        obj.Put(l.ToString(), obj.Get(k.ToString()));
                        obj.Delete(k.ToString());
                    }
                }
                else
                {
                    if (obj.HasProperty(l.ToString()))
                    {
                        obj.Put(k.ToString(), obj.Get(l.ToString()));
                        obj.Delete(l.ToString());
                    }
                    else
                    {
                        obj.Delete(l.ToString());
                        obj.Delete(k.ToString());
                    }
                }
                k++;
            }
            return(EcmaValue.Object(obj));
        }
Example #2
0
        private static EcmaValue[] GetArguments(EcmaState state, EcmaHeadObject owner, ExpresionData[] args)
        {
            int length = owner.HasProperty("length") ? owner.Get("length").ToInt32(state) : 0;
            int i      = 0;

            EcmaValue[] a = new EcmaValue[Math.Max(args.Length, length)];
            for (; i < args.Length; i++)
            {
                a[i] = Reference.GetValue(EvulateExpresion(state, args[i]));
            }

            for (; i < length; i++)
            {
                a[i] = EcmaValue.Undefined();
            }

            return(a);
        }