Beispiel #1
0
        public override JsInstance Execute(
            IJintVisitor visitor,
            JsDictionaryObject that,
            JsInstance[] parameters)
        {
            JsFunction function = that as JsFunction;

            if (function == null)
            {
                throw new ArgumentException("the target of call() must be a function");
            }
            JsDictionaryObject _this = parameters.Length < 1 || parameters[0] == JsUndefined.Instance || parameters[0] == JsNull.Instance ? visitor.Global as JsDictionaryObject : parameters[0] as JsDictionaryObject;

            JsInstance[] _parameters;
            if (parameters.Length >= 2 && parameters[1] != JsNull.Instance)
            {
                _parameters = new JsInstance[parameters.Length - 1];
                for (int index = 1; index < parameters.Length; ++index)
                {
                    _parameters[index - 1] = parameters[index];
                }
            }
            else
            {
                _parameters = JsInstance.EMPTY;
            }
            visitor.ExecuteFunction(function, _this, _parameters);
            return(visitor.Result);
        }
Beispiel #2
0
        public override JsInstance Execute(
            IJintVisitor visitor,
            JsDictionaryObject that,
            JsInstance[] parameters)
        {
            JsFunction function = that as JsFunction;

            if (function == null)
            {
                throw new ArgumentException("the target of call() must be a function");
            }
            JsDictionaryObject _this = parameters.Length < 1 || parameters[0] == JsUndefined.Instance || parameters[0] == JsNull.Instance ? visitor.Global as JsDictionaryObject : parameters[0] as JsDictionaryObject;

            JsInstance[] _parameters;
            if (parameters.Length >= 2 && parameters[1] != JsNull.Instance)
            {
                JsObject parameter = parameters[1] as JsObject;
                if (parameter == null)
                {
                    throw new JsException((JsInstance)visitor.Global.TypeErrorClass.New("second argument must be an array"));
                }
                _parameters = new JsInstance[parameter.Length];
                for (int index = 0; index < parameter.Length; ++index)
                {
                    _parameters[index] = parameter[index.ToString()];
                }
            }
            else
            {
                _parameters = JsInstance.EMPTY;
            }
            visitor.ExecuteFunction(function, _this, _parameters);
            return(visitor.Result);
        }
Beispiel #3
0
        public override JsInstance Execute(IJintVisitor visitor, JsDictionaryObject that, JsInstance[] parameters)
        {
            JsFunction function = that as JsFunction;

            if (function == null)
            {
                throw new ArgumentException("the target of call() must be a function");
            }

            JsDictionaryObject _this;
            JsInstance[] _parameters;
            if (parameters.Length >= 1 && parameters[0] != JsUndefined.Instance && parameters[0] != JsNull.Instance)
                _this = parameters[0] as JsDictionaryObject;
            else
                _this = visitor.Global as JsDictionaryObject;

            if (parameters.Length >= 2 && parameters[1] != JsNull.Instance)
            {
                _parameters = new JsInstance[parameters.Length - 1];
                for (int i = 1; i < parameters.Length; i++)
                {
                    _parameters[i - 1] = parameters[i];
                }
            }
            else
            {
                _parameters = JsInstance.EMPTY;
            }
            // Executes the statements in 'that' and use _this as the target of the call
            visitor.ExecuteFunction(function, _this, _parameters);
            return visitor.Result;
            //visitor.CallFunction(function, _this, _parameters);

            //return visitor.Result;
        }
Beispiel #4
0
        public override JsInstance Execute(IJintVisitor visitor, JsDictionaryObject that, JsInstance[] parameters)
        {
            JsFunction function = that as JsFunction;

            if (function == null) {
                throw new ArgumentException("the target of call() must be a function");
            }
            JsDictionaryObject _this;
            JsInstance[] _parameters;
            if (parameters.Length >= 1)
                _this = parameters[0] as JsDictionaryObject;
            else
                _this = visitor.Global as JsDictionaryObject;

            if (parameters.Length >= 2 && parameters[1] != JsNull.Instance) {
                JsObject arguments = parameters[1] as JsObject;
                if (arguments == null)
                    throw new JsException(visitor.Global.TypeErrorClass.New("second argument must be an array"));
                _parameters = new JsInstance[arguments.Length];
                for (int i = 0; i < arguments.Length; i++) {
                    _parameters[i] = arguments[i.ToString()];
                }
            }
            else {
                _parameters = JsInstance.EMPTY;
            }

            // Executes the statements in 'that' and use _this as the target of the call
            visitor.ExecuteFunction(function, _this, _parameters);
            return visitor.Result;
            //visitor.CallFunction(function, _this, _parameters);

            //return visitor.Result;
        }
Beispiel #5
0
        //13.2.2
        public virtual JsObject Construct(JsInstance[] parameters, Type[] genericArgs, IJintVisitor visitor)
        {
            var instance = visitor.Global.ObjectClass.New(PrototypeProperty);

            visitor.ExecuteFunction(this, instance, parameters);

            return(visitor.Result as JsObject ?? instance);
        }
Beispiel #6
0
 public override object Call(
     IJintVisitor visitor,
     string function,
     params JsInstance[] parameters)
 {
     visitor.ExecuteFunction(this[function] as JsFunction, this, parameters);
     return((object)visitor.Returned);
 }
Beispiel #7
0
        public virtual JsObject Construct(
            JsInstance[] parameters,
            Type[] genericArgs,
            IJintVisitor visitor)
        {
            JsObject jsObject = visitor.Global.ObjectClass.New(this.PrototypeProperty);

            visitor.ExecuteFunction(this, (JsDictionaryObject)jsObject, parameters);
            return(visitor.Result as JsObject ?? jsObject);
        }
Beispiel #8
0
        public override JsInstance Execute(IJintVisitor visitor, JsDictionaryObject that, JsInstance[] parameters)
        {
            JsFunction function = that as JsFunction;

            if (function == null)
            {
                throw new ArgumentException("the target of call() must be a function");
            }
            JsDictionaryObject _this;

            JsInstance[] _parameters;
            if (parameters.Length >= 1 && parameters[0] != JsUndefined.Instance && parameters[0] != JsNull.Instance)
            {
                _this = parameters[0] as JsDictionaryObject;
            }
            else
            {
                _this = visitor.Global as JsDictionaryObject;
            }

            if (parameters.Length >= 2 && parameters[1] != JsNull.Instance)
            {
                JsObject arguments = parameters[1] as JsObject;
                if (arguments == null)
                {
                    throw new JsException(visitor.Global.TypeErrorClass.New("second argument must be an array"));
                }
                _parameters = new JsInstance[arguments.Length];
                for (int i = 0; i < arguments.Length; i++)
                {
                    _parameters[i] = arguments[i.ToString()];
                }
            }
            else
            {
                _parameters = JsInstance.EMPTY;
            }


            // Executes the statements in 'that' and use _this as the target of the call
            visitor.ExecuteFunction(function, _this, _parameters);
            return(visitor.Result);
            //visitor.CallFunction(function, _this, _parameters);

            //return visitor.Result;
        }
        public override JsInstance Execute(IJintVisitor visitor, JsDictionaryObject that, JsInstance[] parameters)
        {
            JsFunction function = that as JsFunction;

            if (function == null)
            {
                throw new ArgumentException("the target of call() must be a function");
            }

            JsDictionaryObject _this;

            JsInstance[] _parameters;
            if (parameters.Length >= 1 && parameters[0] != JsUndefined.Instance && parameters[0] != JsNull.Instance)
            {
                _this = parameters[0] as JsDictionaryObject;
            }
            else
            {
                _this = visitor.Global as JsDictionaryObject;
            }

            if (parameters.Length >= 2 && parameters[1] != JsNull.Instance)
            {
                _parameters = new JsInstance[parameters.Length - 1];
                for (int i = 1; i < parameters.Length; i++)
                {
                    _parameters[i - 1] = parameters[i];
                }
            }
            else
            {
                _parameters = JsInstance.EMPTY;
            }
            // Executes the statements in 'that' and use _this as the target of the call
            visitor.ExecuteFunction(function, _this, _parameters);
            return(visitor.Result);
            //visitor.CallFunction(function, _this, _parameters);

            //return visitor.Result;
        }
Beispiel #10
0
        public void ExecuteStandalone(IJintVisitor visitor, params object[] parameters)
        {
            JsInstance[] jsPrameters = JsClr.ConvertParametersBack(visitor, parameters);

            visitor.ExecuteFunction(this, null, jsPrameters);
        }
Beispiel #11
0
        public void ExecuteCallback(IJintVisitor visitor, object state, object args)
        {
            JsInstance[] jsPrameters = JsClr.ConvertParametersBack(visitor, new[] { state, args });

            visitor.ExecuteFunction(this, null, jsPrameters);
        }
Beispiel #12
0
        //13.2.2
        public virtual JsObject Construct(JsInstance[] parameters, Type[] genericArgs, IJintVisitor visitor)
        {
            var instance = visitor.Global.ObjectClass.New(PrototypeProperty);
            visitor.ExecuteFunction(this, instance, parameters);

            return (visitor.Result as JsObject ?? instance);
        }
Beispiel #13
0
        public void ExecuteCallback(IJintVisitor visitor, object state, object args)
        {
            JsInstance[] jsPrameters = JsClr.ConvertParametersBack(visitor, new[] { state, args });

            visitor.ExecuteFunction(this, null, jsPrameters);
        }
Beispiel #14
0
        public void ExecuteStandalone(IJintVisitor visitor, params object[] parameters)
        {
            JsInstance[] jsPrameters = JsClr.ConvertParametersBack(visitor, parameters);

            visitor.ExecuteFunction(this, null, jsPrameters);
        }