internal BuiltinFunction(string name, object obj, MethodInfo method, ScriptFunction parent) : base(parent, name)
        {
            base.noExpando = false;
            ParameterInfo[] parameters = method.GetParameters();
            base.ilength = parameters.Length;
            object[]                objArray       = Microsoft.JScript.CustomAttribute.GetCustomAttributes(method, typeof(JSFunctionAttribute), false);
            JSFunctionAttribute     attribute      = (objArray.Length > 0) ? ((JSFunctionAttribute)objArray[0]) : new JSFunctionAttribute(JSFunctionAttributeEnum.None);
            JSFunctionAttributeEnum attributeValue = attribute.attributeValue;

            if ((attributeValue & JSFunctionAttributeEnum.HasThisObject) != JSFunctionAttributeEnum.None)
            {
                base.ilength--;
            }
            if ((attributeValue & JSFunctionAttributeEnum.HasEngine) != JSFunctionAttributeEnum.None)
            {
                base.ilength--;
            }
            if ((attributeValue & JSFunctionAttributeEnum.HasVarArgs) != JSFunctionAttributeEnum.None)
            {
                base.ilength--;
            }
            this.biFunc = attribute.builtinFunction;
            if (this.biFunc == JSBuiltin.None)
            {
                this.method = new JSNativeMethod(method, obj, base.engine);
            }
            else
            {
                this.method = null;
            }
        }
Beispiel #2
0
        internal BuiltinFunction(String name, Object obj, MethodInfo method, ScriptFunction parent)
            : base(parent, name)
        {
            this.noExpando = false;
            ParameterInfo[] pars = method.GetParameters();
            int             n    = this.ilength = pars.Length;

            Object[]                attrs   = CustomAttribute.GetCustomAttributes(method, typeof(JSFunctionAttribute), false);
            JSFunctionAttribute     attr    = attrs.Length > 0 ? (JSFunctionAttribute)attrs[0] : new JSFunctionAttribute((JSFunctionAttributeEnum)0);
            JSFunctionAttributeEnum attrVal = attr.attributeValue;

            if ((attrVal & JSFunctionAttributeEnum.HasThisObject) != 0)
            {
                this.ilength--;
            }
            if ((attrVal & JSFunctionAttributeEnum.HasEngine) != 0)
            {
                this.ilength--;
            }
            if ((attrVal & JSFunctionAttributeEnum.HasVarArgs) != 0)
            {
                this.ilength--;
            }
            this.biFunc = attr.builtinFunction;
            if (this.biFunc == 0)
            {
                this.method = new JSNativeMethod(method, obj, this.engine);
            }
            else
            {
                this.method = null;
            }
        }
 public JSFunctionAttribute(JSFunctionAttributeEnum value, JSBuiltin builtinFunction)
 {
     this.attributeValue = value;
     this.builtinFunction = builtinFunction;
 }
 public JSFunctionAttribute(JSFunctionAttributeEnum value)
 {
     this.attributeValue = value;
     this.builtinFunction = JSBuiltin.None;
 }
Beispiel #5
0
 public JSFunctionAttribute(JSFunctionAttributeEnum value, JSBuiltin builtinFunction)
 {
 }
Beispiel #6
0
 public JSFunctionAttribute(JSFunctionAttributeEnum value, JSBuiltin builtinFunction)
 {
     this.attributeValue  = value;
     this.builtinFunction = builtinFunction;
 }
Beispiel #7
0
 public JSFunctionAttribute(JSFunctionAttributeEnum value)
 {
     this.attributeValue  = value;
     this.builtinFunction = (JSBuiltin)0;
 }
Beispiel #8
0
		public JSFunctionAttribute (JSFunctionAttributeEnum value)
		{
			this.value = value;
			this.built_in_function = (JSBuiltin) 0;
		}
Beispiel #9
0
 internal static Object QuickCall(Object[] args, Object thisob, JSBuiltin biFunc, MethodInfo method, VsaEngine engine){
   int n = args.Length;
   switch (biFunc){
     case JSBuiltin.Array_concat : return ArrayPrototype.concat(thisob, engine, args);
     case JSBuiltin.Array_join : return ArrayPrototype.join(thisob, GetArg(args, 0, n));
     case JSBuiltin.Array_pop : return ArrayPrototype.pop(thisob);
     case JSBuiltin.Array_push : return ArrayPrototype.push(thisob, args);
     case JSBuiltin.Array_reverse : return ArrayPrototype.reverse(thisob);
     case JSBuiltin.Array_shift : return ArrayPrototype.shift(thisob);
     case JSBuiltin.Array_slice : return ArrayPrototype.slice(thisob, engine, Convert.ToNumber(GetArg(args, 0, n)), GetArg(args, 1, n));
     case JSBuiltin.Array_sort : return ArrayPrototype.sort(thisob, GetArg(args, 0, n));
     case JSBuiltin.Array_splice : 
       return ArrayPrototype.splice(thisob, engine, Convert.ToNumber(GetArg(args, 0, n)), Convert.ToNumber(GetArg(args, 1, n)), VarArgs(args, 2, n));
     case JSBuiltin.Array_toLocaleString : return ArrayPrototype.toLocaleString(thisob);
     case JSBuiltin.Array_toString : return ArrayPrototype.toString(thisob);
     case JSBuiltin.Array_unshift : return ArrayPrototype.unshift(thisob, args);
     case JSBuiltin.Boolean_toString : return BooleanPrototype.toString(thisob);
     case JSBuiltin.Boolean_valueOf : return BooleanPrototype.valueOf(thisob);
     case JSBuiltin.Date_getDate : return DatePrototype.getDate(thisob);
     case JSBuiltin.Date_getDay : return DatePrototype.getDay(thisob);
     case JSBuiltin.Date_getFullYear : return DatePrototype.getFullYear(thisob);
     case JSBuiltin.Date_getHours : return DatePrototype.getHours(thisob);
     case JSBuiltin.Date_getMilliseconds : return DatePrototype.getMilliseconds(thisob);
     case JSBuiltin.Date_getMinutes : return DatePrototype.getMinutes(thisob);
     case JSBuiltin.Date_getMonth : return DatePrototype.getMonth(thisob);
     case JSBuiltin.Date_getSeconds : return DatePrototype.getSeconds(thisob);
     case JSBuiltin.Date_getTime : return DatePrototype.getTime(thisob);
     case JSBuiltin.Date_getTimezoneOffset : return DatePrototype.getTimezoneOffset(thisob);
     case JSBuiltin.Date_getUTCDate : return DatePrototype.getUTCDate(thisob);
     case JSBuiltin.Date_getUTCDay : return DatePrototype.getUTCDay(thisob);
     case JSBuiltin.Date_getUTCFullYear : return DatePrototype.getUTCFullYear(thisob);
     case JSBuiltin.Date_getUTCHours : return DatePrototype.getUTCHours(thisob);
     case JSBuiltin.Date_getUTCMilliseconds : return DatePrototype.getUTCMilliseconds(thisob);
     case JSBuiltin.Date_getUTCMinutes : return DatePrototype.getUTCMinutes(thisob);
     case JSBuiltin.Date_getUTCMonth : return DatePrototype.getUTCMonth(thisob);
     case JSBuiltin.Date_getUTCSeconds : return DatePrototype.getUTCSeconds(thisob);
     case JSBuiltin.Date_getVarDate : return DatePrototype.getVarDate(thisob);
     case JSBuiltin.Date_getYear : return DatePrototype.getYear(thisob);
     case JSBuiltin.Date_parse : return DateConstructor.parse(Convert.ToString(GetArg(args, 0, n)));
     case JSBuiltin.Date_setDate : return DatePrototype.setDate(thisob, Convert.ToNumber(GetArg(args, 0, n)));
     case JSBuiltin.Date_setFullYear : return DatePrototype.setFullYear(thisob, Convert.ToNumber(GetArg(args, 0, n)), GetArg(args, 1, n), GetArg(args, 2, n));
     case JSBuiltin.Date_setHours : return DatePrototype.setHours(thisob, Convert.ToNumber(GetArg(args, 0, n)), GetArg(args, 1, n), GetArg(args, 2, n), GetArg(args, 3, n));
     case JSBuiltin.Date_setMinutes : return DatePrototype.setMinutes(thisob, Convert.ToNumber(GetArg(args, 0, n)), GetArg(args, 1, n), GetArg(args, 2, n));
     case JSBuiltin.Date_setMilliseconds : return DatePrototype.setMilliseconds(thisob, Convert.ToNumber(GetArg(args, 0, n)));
     case JSBuiltin.Date_setMonth : return DatePrototype.setMonth(thisob, Convert.ToNumber(GetArg(args, 0, n)), GetArg(args, 1, n));
     case JSBuiltin.Date_setSeconds : return DatePrototype.setSeconds(thisob, Convert.ToNumber(GetArg(args, 0, n)), GetArg(args, 1, n));
     case JSBuiltin.Date_setTime : return DatePrototype.setTime(thisob, Convert.ToNumber(GetArg(args, 0, n)));
     case JSBuiltin.Date_setUTCDate : return DatePrototype.setUTCDate(thisob, Convert.ToNumber(GetArg(args, 0, n)));
     case JSBuiltin.Date_setUTCFullYear : return DatePrototype.setUTCFullYear(thisob, Convert.ToNumber(GetArg(args, 0, n)), GetArg(args, 1, n), GetArg(args, 2, n));
     case JSBuiltin.Date_setUTCHours : return DatePrototype.setUTCHours(thisob, Convert.ToNumber(GetArg(args, 0, n)), GetArg(args, 1, n), GetArg(args, 2, n), GetArg(args, 3, n));
     case JSBuiltin.Date_setUTCMinutes : return DatePrototype.setUTCMinutes(thisob, Convert.ToNumber(GetArg(args, 0, n)), GetArg(args, 1, n), GetArg(args, 2, n));
     case JSBuiltin.Date_setUTCMilliseconds : return DatePrototype.setUTCMilliseconds(thisob, Convert.ToNumber(GetArg(args, 0, n)));
     case JSBuiltin.Date_setUTCMonth : return DatePrototype.setUTCMonth(thisob, Convert.ToNumber(GetArg(args, 0, n)), GetArg(args, 1, n));
     case JSBuiltin.Date_setUTCSeconds : return DatePrototype.setUTCSeconds(thisob, Convert.ToNumber(GetArg(args, 0, n)), GetArg(args, 1, n));
     case JSBuiltin.Date_setYear : return DatePrototype.setYear(thisob, Convert.ToNumber(GetArg(args, 0, n)));
     case JSBuiltin.Date_toDateString : return DatePrototype.toDateString(thisob);
     case JSBuiltin.Date_toGMTString : return DatePrototype.toGMTString(thisob);
     case JSBuiltin.Date_toLocaleDateString : return DatePrototype.toLocaleDateString(thisob);
     case JSBuiltin.Date_toLocaleString : return DatePrototype.toLocaleString(thisob);
     case JSBuiltin.Date_toLocaleTimeString : return DatePrototype.toLocaleTimeString(thisob);
     case JSBuiltin.Date_toString : return DatePrototype.toString(thisob);
     case JSBuiltin.Date_toTimeString : return DatePrototype.toTimeString(thisob);
     case JSBuiltin.Date_toUTCString : return DatePrototype.toUTCString(thisob);
     case JSBuiltin.Date_UTC : return DateConstructor.UTC(GetArg(args, 0, n), GetArg(args, 1, n), GetArg(args, 2, n), GetArg(args, 3, n), GetArg(args, 4, n), GetArg(args, 5, n), GetArg(args, 6, n));
     case JSBuiltin.Date_valueOf : return DatePrototype.valueOf(thisob);
     case JSBuiltin.Enumerator_atEnd : return EnumeratorPrototype.atEnd(thisob);
     case JSBuiltin.Enumerator_item : return EnumeratorPrototype.item(thisob);
     case JSBuiltin.Enumerator_moveFirst : EnumeratorPrototype.moveFirst(thisob); return null;
     case JSBuiltin.Enumerator_moveNext : EnumeratorPrototype.moveNext(thisob); return null;
     case JSBuiltin.Error_toString : return ErrorPrototype.toString(thisob);
     case JSBuiltin.Function_apply : return FunctionPrototype.apply(thisob, GetArg(args, 0, n), GetArg(args, 1, n));
     case JSBuiltin.Function_call : return FunctionPrototype.call(thisob, GetArg(args, 0, n), VarArgs(args, 1, n));
     case JSBuiltin.Function_toString : return FunctionPrototype.toString(thisob);
     case JSBuiltin.Global_CollectGarbage : GlobalObject.CollectGarbage(); return null;
     case JSBuiltin.Global_decodeURI : return GlobalObject.decodeURI(GetArg(args, 0, n));
     case JSBuiltin.Global_decodeURIComponent : return GlobalObject.decodeURIComponent(GetArg(args, 0, n));
     case JSBuiltin.Global_encodeURI : return GlobalObject.encodeURI(GetArg(args, 0, n));
     case JSBuiltin.Global_encodeURIComponent : return GlobalObject.encodeURIComponent(GetArg(args, 0, n));
     case JSBuiltin.Global_escape : return GlobalObject.escape(GetArg(args, 0, n));
     case JSBuiltin.Global_eval : return GlobalObject.eval(GetArg(args, 0, n));
     case JSBuiltin.Global_GetObject : return GlobalObject.GetObject(GetArg(args, 0, n), GetArg(args, 1, n));
     case JSBuiltin.Global_isNaN : return GlobalObject.isNaN(GetArg(args, 0, n));
     case JSBuiltin.Global_isFinite : return GlobalObject.isFinite(Convert.ToNumber(GetArg(args, 0, n)));
     case JSBuiltin.Global_parseFloat : return GlobalObject.parseFloat(GetArg(args, 0, n));
     case JSBuiltin.Global_parseInt : return GlobalObject.parseInt(GetArg(args, 0, n), GetArg(args, 1, n));
     case JSBuiltin.Global_ScriptEngine : return GlobalObject.ScriptEngine();
     case JSBuiltin.Global_ScriptEngineBuildVersion : return GlobalObject.ScriptEngineBuildVersion();
     case JSBuiltin.Global_ScriptEngineMajorVersion : return GlobalObject.ScriptEngineMajorVersion();
     case JSBuiltin.Global_ScriptEngineMinorVersion : return GlobalObject.ScriptEngineMinorVersion();
     case JSBuiltin.Global_unescape : return GlobalObject.unescape(GetArg(args, 0, n));
     case JSBuiltin.Math_abs : return MathObject.abs(Convert.ToNumber(GetArg(args, 0, n)));
     case JSBuiltin.Math_acos : return MathObject.acos(Convert.ToNumber(GetArg(args, 0, n)));
     case JSBuiltin.Math_asin : return MathObject.asin(Convert.ToNumber(GetArg(args, 0, n)));
     case JSBuiltin.Math_atan : return MathObject.atan(Convert.ToNumber(GetArg(args, 0, n)));
     case JSBuiltin.Math_atan2 : return MathObject.atan2(Convert.ToNumber(GetArg(args, 0, n)), Convert.ToNumber(GetArg(args, 1, n)));
     case JSBuiltin.Math_ceil : return MathObject.ceil(Convert.ToNumber(GetArg(args, 0, n)));
     case JSBuiltin.Math_cos : return MathObject.cos(Convert.ToNumber(GetArg(args, 0, n)));
     case JSBuiltin.Math_exp : return MathObject.exp(Convert.ToNumber(GetArg(args, 0, n)));
     case JSBuiltin.Math_floor : return MathObject.floor(Convert.ToNumber(GetArg(args, 0, n)));
     case JSBuiltin.Math_log : return MathObject.log(Convert.ToNumber(GetArg(args, 0, n)));
     case JSBuiltin.Math_max : return MathObject.max(GetArg(args, 0, n), GetArg(args, 1, n), VarArgs(args, 2, n));
     case JSBuiltin.Math_min : return MathObject.min(GetArg(args, 0, n), GetArg(args, 1, n), VarArgs(args, 2, n));
     case JSBuiltin.Math_pow : return MathObject.pow(Convert.ToNumber(GetArg(args, 0, n)), Convert.ToNumber(GetArg(args, 1, n)));
     case JSBuiltin.Math_random : return MathObject.random();
     case JSBuiltin.Math_round : return MathObject.round(Convert.ToNumber(GetArg(args, 0, n)));
     case JSBuiltin.Math_sin : return MathObject.sin(Convert.ToNumber(GetArg(args, 0, n)));
     case JSBuiltin.Math_sqrt : return MathObject.sqrt(Convert.ToNumber(GetArg(args, 0, n)));
     case JSBuiltin.Math_tan : return MathObject.tan(Convert.ToNumber(GetArg(args, 0, n)));
     case JSBuiltin.Number_toExponential : return NumberPrototype.toExponential(thisob, GetArg(args, 0, n));
     case JSBuiltin.Number_toFixed : return NumberPrototype.toFixed(thisob, Convert.ToNumber(GetArg(args, 0, n)));
     case JSBuiltin.Number_toLocaleString: return NumberPrototype.toLocaleString(thisob);
     case JSBuiltin.Number_toPrecision : return NumberPrototype.toPrecision(thisob, GetArg(args, 0, n));
     case JSBuiltin.Number_toString : return NumberPrototype.toString(thisob, GetArg(args, 0, n));
     case JSBuiltin.Number_valueOf : return NumberPrototype.valueOf(thisob);
     case JSBuiltin.Object_hasOwnProperty : return ObjectPrototype.hasOwnProperty(thisob, GetArg(args, 0, n));
     case JSBuiltin.Object_isPrototypeOf : return ObjectPrototype.isPrototypeOf(thisob, GetArg(args, 0, n));
     case JSBuiltin.Object_propertyIsEnumerable : return ObjectPrototype.propertyIsEnumerable(thisob, GetArg(args, 0, n));
     case JSBuiltin.Object_toLocaleString : return ObjectPrototype.toLocaleString(thisob);
     case JSBuiltin.Object_toString : return ObjectPrototype.toString(thisob);
     case JSBuiltin.Object_valueOf : return ObjectPrototype.valueOf(thisob);
     case JSBuiltin.RegExp_compile : return RegExpPrototype.compile(thisob, GetArg(args, 0, n), GetArg(args, 1, n));
     case JSBuiltin.RegExp_exec : return RegExpPrototype.exec(thisob, GetArg(args, 0, n));
     case JSBuiltin.RegExp_test : return RegExpPrototype.test(thisob, GetArg(args, 0, n));
     case JSBuiltin.RegExp_toString : return RegExpPrototype.toString(thisob);
     case JSBuiltin.String_anchor : return StringPrototype.anchor(thisob, GetArg(args, 0, n));
     case JSBuiltin.String_big : return StringPrototype.big(thisob);
     case JSBuiltin.String_blink : return StringPrototype.blink(thisob);
     case JSBuiltin.String_bold : return StringPrototype.bold(thisob);
     case JSBuiltin.String_charAt : return StringPrototype.charAt(thisob, Convert.ToNumber(GetArg(args, 0, n)));
     case JSBuiltin.String_charCodeAt : return StringPrototype.charCodeAt(thisob, Convert.ToNumber(GetArg(args, 0, n)));
     case JSBuiltin.String_concat : return StringPrototype.concat(thisob, args);
     case JSBuiltin.String_fixed : return StringPrototype.@fixed(thisob);
     case JSBuiltin.String_fontcolor : return StringPrototype.fontcolor(thisob, GetArg(args, 0, n));
     case JSBuiltin.String_fontsize : return StringPrototype.fontsize(thisob, GetArg(args, 0, n));
     case JSBuiltin.String_fromCharCode : return StringConstructor.fromCharCode(args);
     case JSBuiltin.String_indexOf : return StringPrototype.indexOf(thisob, GetArg(args, 0, n), Convert.ToNumber(GetArg(args, 1, n)));
     case JSBuiltin.String_italics : return StringPrototype.italics(thisob);
     case JSBuiltin.String_lastIndexOf : return StringPrototype.lastIndexOf(thisob, GetArg(args, 0, n), Convert.ToNumber(GetArg(args, 1, n)));
     case JSBuiltin.String_link : return StringPrototype.link(thisob, GetArg(args, 0, n));
     case JSBuiltin.String_localeCompare : return StringPrototype.localeCompare(thisob, GetArg(args, 0, n));
     case JSBuiltin.String_match : return StringPrototype.match(thisob, engine, GetArg(args, 0, n));
     case JSBuiltin.String_replace : return StringPrototype.replace(thisob, GetArg(args, 0, n), GetArg(args, 1, n));
     case JSBuiltin.String_search : return StringPrototype.search(thisob, engine, GetArg(args, 0, n));
     case JSBuiltin.String_slice : return StringPrototype.slice(thisob, Convert.ToNumber(GetArg(args, 0, n)), GetArg(args, 1, n));
     case JSBuiltin.String_small : return StringPrototype.small(thisob);
     case JSBuiltin.String_split : return StringPrototype.split(thisob, engine, GetArg(args, 0, n), GetArg(args, 1, n));
     case JSBuiltin.String_strike : return StringPrototype.strike(thisob);
     case JSBuiltin.String_sub : return StringPrototype.sub(thisob);
     case JSBuiltin.String_substr : return StringPrototype.substr(thisob, Convert.ToNumber(GetArg(args, 0, n)), GetArg(args, 1, n));
     case JSBuiltin.String_substring : return StringPrototype.substring(thisob, Convert.ToNumber(GetArg(args, 0, n)), GetArg(args, 1, n));
     case JSBuiltin.String_sup : return StringPrototype.sup(thisob);
     case JSBuiltin.String_toLocaleLowerCase : return StringPrototype.toLocaleLowerCase(thisob);
     case JSBuiltin.String_toLocaleUpperCase : return StringPrototype.toLocaleUpperCase(thisob);
     case JSBuiltin.String_toLowerCase : return StringPrototype.toLowerCase(thisob);
     case JSBuiltin.String_toString : return StringPrototype.toString(thisob);
     case JSBuiltin.String_toUpperCase : return StringPrototype.toUpperCase(thisob);
     case JSBuiltin.String_valueOf : return StringPrototype.valueOf(thisob);
     case JSBuiltin.VBArray_dimensions : return VBArrayPrototype.dimensions(thisob);
     case JSBuiltin.VBArray_getItem : return VBArrayPrototype.getItem(thisob, args);
     case JSBuiltin.VBArray_lbound : return VBArrayPrototype.lbound(thisob, GetArg(args, 0, n));
     case JSBuiltin.VBArray_toArray : return VBArrayPrototype.toArray(thisob, engine);
     case JSBuiltin.VBArray_ubound : return VBArrayPrototype.ubound(thisob, GetArg(args, 0, n));
   }
   return method.Invoke(thisob, (BindingFlags)0, JSBinder.ob, args, null);
 }
Beispiel #10
0
 internal BuiltinFunction(String name, Object obj, MethodInfo method, ScriptFunction parent)
   : base(parent, name) {
   this.noExpando = false;
   ParameterInfo[] pars = method.GetParameters();
   int n = this.ilength = pars.Length;
   Object[] attrs = method.GetCustomAttributes(Typeob.JSFunctionAttribute, false);
   JSFunctionAttribute attr = attrs.Length > 0 ? (JSFunctionAttribute)attrs[0] : new JSFunctionAttribute((JSFunctionAttributeEnum)0);
   JSFunctionAttributeEnum attrVal = attr.attributeValue;
   if ((attrVal & JSFunctionAttributeEnum.HasThisObject) != 0)
     this.ilength--;
   if ((attrVal & JSFunctionAttributeEnum.HasEngine) != 0)
     this.ilength--;
   if ((attrVal & JSFunctionAttributeEnum.HasVarArgs) != 0)
     this.ilength--;
   this.biFunc = attr.builtinFunction;
   if (this.biFunc == 0)
     this.method = new JSNativeMethod(method, obj, this.engine);
   else
     this.method = null;
 }
        internal static object QuickCall(object[] args, object thisob, JSBuiltin biFunc, MethodInfo method, VsaEngine engine)
        {
            int length = args.Length;

            switch (biFunc)
            {
            case JSBuiltin.Array_concat:
                return(ArrayPrototype.concat(thisob, engine, args));

            case JSBuiltin.Array_join:
                return(ArrayPrototype.join(thisob, GetArg(args, 0, length)));

            case JSBuiltin.Array_pop:
                return(ArrayPrototype.pop(thisob));

            case JSBuiltin.Array_push:
                return(ArrayPrototype.push(thisob, args));

            case JSBuiltin.Array_reverse:
                return(ArrayPrototype.reverse(thisob));

            case JSBuiltin.Array_shift:
                return(ArrayPrototype.shift(thisob));

            case JSBuiltin.Array_slice:
                return(ArrayPrototype.slice(thisob, engine, Microsoft.JScript.Convert.ToNumber(GetArg(args, 0, length)), GetArg(args, 1, length)));

            case JSBuiltin.Array_sort:
                return(ArrayPrototype.sort(thisob, GetArg(args, 0, length)));

            case JSBuiltin.Array_splice:
                return(ArrayPrototype.splice(thisob, engine, Microsoft.JScript.Convert.ToNumber(GetArg(args, 0, length)), Microsoft.JScript.Convert.ToNumber(GetArg(args, 1, length)), VarArgs(args, 2, length)));

            case JSBuiltin.Array_toLocaleString:
                return(ArrayPrototype.toLocaleString(thisob));

            case JSBuiltin.Array_toString:
                return(ArrayPrototype.toString(thisob));

            case JSBuiltin.Array_unshift:
                return(ArrayPrototype.unshift(thisob, args));

            case JSBuiltin.Boolean_toString:
                return(BooleanPrototype.toString(thisob));

            case JSBuiltin.Boolean_valueOf:
                return(BooleanPrototype.valueOf(thisob));

            case JSBuiltin.Date_getDate:
                return(DatePrototype.getDate(thisob));

            case JSBuiltin.Date_getDay:
                return(DatePrototype.getDay(thisob));

            case JSBuiltin.Date_getFullYear:
                return(DatePrototype.getFullYear(thisob));

            case JSBuiltin.Date_getHours:
                return(DatePrototype.getHours(thisob));

            case JSBuiltin.Date_getMilliseconds:
                return(DatePrototype.getMilliseconds(thisob));

            case JSBuiltin.Date_getMinutes:
                return(DatePrototype.getMinutes(thisob));

            case JSBuiltin.Date_getMonth:
                return(DatePrototype.getMonth(thisob));

            case JSBuiltin.Date_getSeconds:
                return(DatePrototype.getSeconds(thisob));

            case JSBuiltin.Date_getTime:
                return(DatePrototype.getTime(thisob));

            case JSBuiltin.Date_getTimezoneOffset:
                return(DatePrototype.getTimezoneOffset(thisob));

            case JSBuiltin.Date_getUTCDate:
                return(DatePrototype.getUTCDate(thisob));

            case JSBuiltin.Date_getUTCDay:
                return(DatePrototype.getUTCDay(thisob));

            case JSBuiltin.Date_getUTCFullYear:
                return(DatePrototype.getUTCFullYear(thisob));

            case JSBuiltin.Date_getUTCHours:
                return(DatePrototype.getUTCHours(thisob));

            case JSBuiltin.Date_getUTCMilliseconds:
                return(DatePrototype.getUTCMilliseconds(thisob));

            case JSBuiltin.Date_getUTCMinutes:
                return(DatePrototype.getUTCMinutes(thisob));

            case JSBuiltin.Date_getUTCMonth:
                return(DatePrototype.getUTCMonth(thisob));

            case JSBuiltin.Date_getUTCSeconds:
                return(DatePrototype.getUTCSeconds(thisob));

            case JSBuiltin.Date_getVarDate:
                return(DatePrototype.getVarDate(thisob));

            case JSBuiltin.Date_getYear:
                return(DatePrototype.getYear(thisob));

            case JSBuiltin.Date_parse:
                return(DateConstructor.parse(Microsoft.JScript.Convert.ToString(GetArg(args, 0, length))));

            case JSBuiltin.Date_setDate:
                return(DatePrototype.setDate(thisob, Microsoft.JScript.Convert.ToNumber(GetArg(args, 0, length))));

            case JSBuiltin.Date_setFullYear:
                return(DatePrototype.setFullYear(thisob, Microsoft.JScript.Convert.ToNumber(GetArg(args, 0, length)), GetArg(args, 1, length), GetArg(args, 2, length)));

            case JSBuiltin.Date_setHours:
                return(DatePrototype.setHours(thisob, Microsoft.JScript.Convert.ToNumber(GetArg(args, 0, length)), GetArg(args, 1, length), GetArg(args, 2, length), GetArg(args, 3, length)));

            case JSBuiltin.Date_setMinutes:
                return(DatePrototype.setMinutes(thisob, Microsoft.JScript.Convert.ToNumber(GetArg(args, 0, length)), GetArg(args, 1, length), GetArg(args, 2, length)));

            case JSBuiltin.Date_setMilliseconds:
                return(DatePrototype.setMilliseconds(thisob, Microsoft.JScript.Convert.ToNumber(GetArg(args, 0, length))));

            case JSBuiltin.Date_setMonth:
                return(DatePrototype.setMonth(thisob, Microsoft.JScript.Convert.ToNumber(GetArg(args, 0, length)), GetArg(args, 1, length)));

            case JSBuiltin.Date_setSeconds:
                return(DatePrototype.setSeconds(thisob, Microsoft.JScript.Convert.ToNumber(GetArg(args, 0, length)), GetArg(args, 1, length)));

            case JSBuiltin.Date_setTime:
                return(DatePrototype.setTime(thisob, Microsoft.JScript.Convert.ToNumber(GetArg(args, 0, length))));

            case JSBuiltin.Date_setUTCDate:
                return(DatePrototype.setUTCDate(thisob, Microsoft.JScript.Convert.ToNumber(GetArg(args, 0, length))));

            case JSBuiltin.Date_setUTCFullYear:
                return(DatePrototype.setUTCFullYear(thisob, Microsoft.JScript.Convert.ToNumber(GetArg(args, 0, length)), GetArg(args, 1, length), GetArg(args, 2, length)));

            case JSBuiltin.Date_setUTCHours:
                return(DatePrototype.setUTCHours(thisob, Microsoft.JScript.Convert.ToNumber(GetArg(args, 0, length)), GetArg(args, 1, length), GetArg(args, 2, length), GetArg(args, 3, length)));

            case JSBuiltin.Date_setUTCMinutes:
                return(DatePrototype.setUTCMinutes(thisob, Microsoft.JScript.Convert.ToNumber(GetArg(args, 0, length)), GetArg(args, 1, length), GetArg(args, 2, length)));

            case JSBuiltin.Date_setUTCMilliseconds:
                return(DatePrototype.setUTCMilliseconds(thisob, Microsoft.JScript.Convert.ToNumber(GetArg(args, 0, length))));

            case JSBuiltin.Date_setUTCMonth:
                return(DatePrototype.setUTCMonth(thisob, Microsoft.JScript.Convert.ToNumber(GetArg(args, 0, length)), GetArg(args, 1, length)));

            case JSBuiltin.Date_setUTCSeconds:
                return(DatePrototype.setUTCSeconds(thisob, Microsoft.JScript.Convert.ToNumber(GetArg(args, 0, length)), GetArg(args, 1, length)));

            case JSBuiltin.Date_setYear:
                return(DatePrototype.setYear(thisob, Microsoft.JScript.Convert.ToNumber(GetArg(args, 0, length))));

            case JSBuiltin.Date_toDateString:
                return(DatePrototype.toDateString(thisob));

            case JSBuiltin.Date_toGMTString:
                return(DatePrototype.toGMTString(thisob));

            case JSBuiltin.Date_toLocaleDateString:
                return(DatePrototype.toLocaleDateString(thisob));

            case JSBuiltin.Date_toLocaleString:
                return(DatePrototype.toLocaleString(thisob));

            case JSBuiltin.Date_toLocaleTimeString:
                return(DatePrototype.toLocaleTimeString(thisob));

            case JSBuiltin.Date_toString:
                return(DatePrototype.toString(thisob));

            case JSBuiltin.Date_toTimeString:
                return(DatePrototype.toTimeString(thisob));

            case JSBuiltin.Date_toUTCString:
                return(DatePrototype.toUTCString(thisob));

            case JSBuiltin.Date_UTC:
                return(DateConstructor.UTC(GetArg(args, 0, length), GetArg(args, 1, length), GetArg(args, 2, length), GetArg(args, 3, length), GetArg(args, 4, length), GetArg(args, 5, length), GetArg(args, 6, length)));

            case JSBuiltin.Date_valueOf:
                return(DatePrototype.valueOf(thisob));

            case JSBuiltin.Enumerator_atEnd:
                return(EnumeratorPrototype.atEnd(thisob));

            case JSBuiltin.Enumerator_item:
                return(EnumeratorPrototype.item(thisob));

            case JSBuiltin.Enumerator_moveFirst:
                EnumeratorPrototype.moveFirst(thisob);
                return(null);

            case JSBuiltin.Enumerator_moveNext:
                EnumeratorPrototype.moveNext(thisob);
                return(null);

            case JSBuiltin.Error_toString:
                return(ErrorPrototype.toString(thisob));

            case JSBuiltin.Function_apply:
                return(FunctionPrototype.apply(thisob, GetArg(args, 0, length), GetArg(args, 1, length)));

            case JSBuiltin.Function_call:
                return(FunctionPrototype.call(thisob, GetArg(args, 0, length), VarArgs(args, 1, length)));

            case JSBuiltin.Function_toString:
                return(FunctionPrototype.toString(thisob));

            case JSBuiltin.Global_CollectGarbage:
                GlobalObject.CollectGarbage();
                return(null);

            case JSBuiltin.Global_decodeURI:
                return(GlobalObject.decodeURI(GetArg(args, 0, length)));

            case JSBuiltin.Global_decodeURIComponent:
                return(GlobalObject.decodeURIComponent(GetArg(args, 0, length)));

            case JSBuiltin.Global_encodeURI:
                return(GlobalObject.encodeURI(GetArg(args, 0, length)));

            case JSBuiltin.Global_encodeURIComponent:
                return(GlobalObject.encodeURIComponent(GetArg(args, 0, length)));

            case JSBuiltin.Global_escape:
                return(GlobalObject.escape(GetArg(args, 0, length)));

            case JSBuiltin.Global_eval:
                return(GlobalObject.eval(GetArg(args, 0, length)));

            case JSBuiltin.Global_GetObject:
                return(GlobalObject.GetObject(GetArg(args, 0, length), GetArg(args, 1, length)));

            case JSBuiltin.Global_isNaN:
                return(GlobalObject.isNaN(GetArg(args, 0, length)));

            case JSBuiltin.Global_isFinite:
                return(GlobalObject.isFinite(Microsoft.JScript.Convert.ToNumber(GetArg(args, 0, length))));

            case JSBuiltin.Global_parseFloat:
                return(GlobalObject.parseFloat(GetArg(args, 0, length)));

            case JSBuiltin.Global_parseInt:
                return(GlobalObject.parseInt(GetArg(args, 0, length), GetArg(args, 1, length)));

            case JSBuiltin.Global_ScriptEngine:
                return(GlobalObject.ScriptEngine());

            case JSBuiltin.Global_ScriptEngineBuildVersion:
                return(GlobalObject.ScriptEngineBuildVersion());

            case JSBuiltin.Global_ScriptEngineMajorVersion:
                return(GlobalObject.ScriptEngineMajorVersion());

            case JSBuiltin.Global_ScriptEngineMinorVersion:
                return(GlobalObject.ScriptEngineMinorVersion());

            case JSBuiltin.Global_unescape:
                return(GlobalObject.unescape(GetArg(args, 0, length)));

            case JSBuiltin.Math_abs:
                return(MathObject.abs(Microsoft.JScript.Convert.ToNumber(GetArg(args, 0, length))));

            case JSBuiltin.Math_acos:
                return(MathObject.acos(Microsoft.JScript.Convert.ToNumber(GetArg(args, 0, length))));

            case JSBuiltin.Math_asin:
                return(MathObject.asin(Microsoft.JScript.Convert.ToNumber(GetArg(args, 0, length))));

            case JSBuiltin.Math_atan:
                return(MathObject.atan(Microsoft.JScript.Convert.ToNumber(GetArg(args, 0, length))));

            case JSBuiltin.Math_atan2:
                return(MathObject.atan2(Microsoft.JScript.Convert.ToNumber(GetArg(args, 0, length)), Microsoft.JScript.Convert.ToNumber(GetArg(args, 1, length))));

            case JSBuiltin.Math_ceil:
                return(MathObject.ceil(Microsoft.JScript.Convert.ToNumber(GetArg(args, 0, length))));

            case JSBuiltin.Math_cos:
                return(MathObject.cos(Microsoft.JScript.Convert.ToNumber(GetArg(args, 0, length))));

            case JSBuiltin.Math_exp:
                return(MathObject.exp(Microsoft.JScript.Convert.ToNumber(GetArg(args, 0, length))));

            case JSBuiltin.Math_floor:
                return(MathObject.floor(Microsoft.JScript.Convert.ToNumber(GetArg(args, 0, length))));

            case JSBuiltin.Math_log:
                return(MathObject.log(Microsoft.JScript.Convert.ToNumber(GetArg(args, 0, length))));

            case JSBuiltin.Math_max:
                return(MathObject.max(GetArg(args, 0, length), GetArg(args, 1, length), VarArgs(args, 2, length)));

            case JSBuiltin.Math_min:
                return(MathObject.min(GetArg(args, 0, length), GetArg(args, 1, length), VarArgs(args, 2, length)));

            case JSBuiltin.Math_pow:
                return(MathObject.pow(Microsoft.JScript.Convert.ToNumber(GetArg(args, 0, length)), Microsoft.JScript.Convert.ToNumber(GetArg(args, 1, length))));

            case JSBuiltin.Math_random:
                return(MathObject.random());

            case JSBuiltin.Math_round:
                return(MathObject.round(Microsoft.JScript.Convert.ToNumber(GetArg(args, 0, length))));

            case JSBuiltin.Math_sin:
                return(MathObject.sin(Microsoft.JScript.Convert.ToNumber(GetArg(args, 0, length))));

            case JSBuiltin.Math_sqrt:
                return(MathObject.sqrt(Microsoft.JScript.Convert.ToNumber(GetArg(args, 0, length))));

            case JSBuiltin.Math_tan:
                return(MathObject.tan(Microsoft.JScript.Convert.ToNumber(GetArg(args, 0, length))));

            case JSBuiltin.Number_toExponential:
                return(NumberPrototype.toExponential(thisob, GetArg(args, 0, length)));

            case JSBuiltin.Number_toFixed:
                return(NumberPrototype.toFixed(thisob, Microsoft.JScript.Convert.ToNumber(GetArg(args, 0, length))));

            case JSBuiltin.Number_toLocaleString:
                return(NumberPrototype.toLocaleString(thisob));

            case JSBuiltin.Number_toPrecision:
                return(NumberPrototype.toPrecision(thisob, GetArg(args, 0, length)));

            case JSBuiltin.Number_toString:
                return(NumberPrototype.toString(thisob, GetArg(args, 0, length)));

            case JSBuiltin.Number_valueOf:
                return(NumberPrototype.valueOf(thisob));

            case JSBuiltin.Object_hasOwnProperty:
                return(ObjectPrototype.hasOwnProperty(thisob, GetArg(args, 0, length)));

            case JSBuiltin.Object_isPrototypeOf:
                return(ObjectPrototype.isPrototypeOf(thisob, GetArg(args, 0, length)));

            case JSBuiltin.Object_propertyIsEnumerable:
                return(ObjectPrototype.propertyIsEnumerable(thisob, GetArg(args, 0, length)));

            case JSBuiltin.Object_toLocaleString:
                return(ObjectPrototype.toLocaleString(thisob));

            case JSBuiltin.Object_toString:
                return(ObjectPrototype.toString(thisob));

            case JSBuiltin.Object_valueOf:
                return(ObjectPrototype.valueOf(thisob));

            case JSBuiltin.RegExp_compile:
                return(RegExpPrototype.compile(thisob, GetArg(args, 0, length), GetArg(args, 1, length)));

            case JSBuiltin.RegExp_exec:
                return(RegExpPrototype.exec(thisob, GetArg(args, 0, length)));

            case JSBuiltin.RegExp_test:
                return(RegExpPrototype.test(thisob, GetArg(args, 0, length)));

            case JSBuiltin.RegExp_toString:
                return(RegExpPrototype.toString(thisob));

            case JSBuiltin.String_anchor:
                return(StringPrototype.anchor(thisob, GetArg(args, 0, length)));

            case JSBuiltin.String_big:
                return(StringPrototype.big(thisob));

            case JSBuiltin.String_blink:
                return(StringPrototype.blink(thisob));

            case JSBuiltin.String_bold:
                return(StringPrototype.bold(thisob));

            case JSBuiltin.String_charAt:
                return(StringPrototype.charAt(thisob, Microsoft.JScript.Convert.ToNumber(GetArg(args, 0, length))));

            case JSBuiltin.String_charCodeAt:
                return(StringPrototype.charCodeAt(thisob, Microsoft.JScript.Convert.ToNumber(GetArg(args, 0, length))));

            case JSBuiltin.String_concat:
                return(StringPrototype.concat(thisob, args));

            case JSBuiltin.String_fixed:
                return(StringPrototype.@fixed(thisob));

            case JSBuiltin.String_fontcolor:
                return(StringPrototype.fontcolor(thisob, GetArg(args, 0, length)));

            case JSBuiltin.String_fontsize:
                return(StringPrototype.fontsize(thisob, GetArg(args, 0, length)));

            case JSBuiltin.String_fromCharCode:
                return(StringConstructor.fromCharCode(args));

            case JSBuiltin.String_indexOf:
                return(StringPrototype.indexOf(thisob, GetArg(args, 0, length), Microsoft.JScript.Convert.ToNumber(GetArg(args, 1, length))));

            case JSBuiltin.String_italics:
                return(StringPrototype.italics(thisob));

            case JSBuiltin.String_lastIndexOf:
                return(StringPrototype.lastIndexOf(thisob, GetArg(args, 0, length), Microsoft.JScript.Convert.ToNumber(GetArg(args, 1, length))));

            case JSBuiltin.String_link:
                return(StringPrototype.link(thisob, GetArg(args, 0, length)));

            case JSBuiltin.String_localeCompare:
                return(StringPrototype.localeCompare(thisob, GetArg(args, 0, length)));

            case JSBuiltin.String_match:
                return(StringPrototype.match(thisob, engine, GetArg(args, 0, length)));

            case JSBuiltin.String_replace:
                return(StringPrototype.replace(thisob, GetArg(args, 0, length), GetArg(args, 1, length)));

            case JSBuiltin.String_search:
                return(StringPrototype.search(thisob, engine, GetArg(args, 0, length)));

            case JSBuiltin.String_slice:
                return(StringPrototype.slice(thisob, Microsoft.JScript.Convert.ToNumber(GetArg(args, 0, length)), GetArg(args, 1, length)));

            case JSBuiltin.String_small:
                return(StringPrototype.small(thisob));

            case JSBuiltin.String_split:
                return(StringPrototype.split(thisob, engine, GetArg(args, 0, length), GetArg(args, 1, length)));

            case JSBuiltin.String_strike:
                return(StringPrototype.strike(thisob));

            case JSBuiltin.String_sub:
                return(StringPrototype.sub(thisob));

            case JSBuiltin.String_substr:
                return(StringPrototype.substr(thisob, Microsoft.JScript.Convert.ToNumber(GetArg(args, 0, length)), GetArg(args, 1, length)));

            case JSBuiltin.String_substring:
                return(StringPrototype.substring(thisob, Microsoft.JScript.Convert.ToNumber(GetArg(args, 0, length)), GetArg(args, 1, length)));

            case JSBuiltin.String_sup:
                return(StringPrototype.sup(thisob));

            case JSBuiltin.String_toLocaleLowerCase:
                return(StringPrototype.toLocaleLowerCase(thisob));

            case JSBuiltin.String_toLocaleUpperCase:
                return(StringPrototype.toLocaleUpperCase(thisob));

            case JSBuiltin.String_toLowerCase:
                return(StringPrototype.toLowerCase(thisob));

            case JSBuiltin.String_toString:
                return(StringPrototype.toString(thisob));

            case JSBuiltin.String_toUpperCase:
                return(StringPrototype.toUpperCase(thisob));

            case JSBuiltin.String_valueOf:
                return(StringPrototype.valueOf(thisob));

            case JSBuiltin.VBArray_dimensions:
                return(VBArrayPrototype.dimensions(thisob));

            case JSBuiltin.VBArray_getItem:
                return(VBArrayPrototype.getItem(thisob, args));

            case JSBuiltin.VBArray_lbound:
                return(VBArrayPrototype.lbound(thisob, GetArg(args, 0, length)));

            case JSBuiltin.VBArray_toArray:
                return(VBArrayPrototype.toArray(thisob, engine));

            case JSBuiltin.VBArray_ubound:
                return(VBArrayPrototype.ubound(thisob, GetArg(args, 0, length)));
            }
            return(method.Invoke(thisob, BindingFlags.Default, JSBinder.ob, args, null));
        }
 public JSFunctionAttribute(JSFunctionAttributeEnum value)
 {
     this.value             = value;
     this.built_in_function = (JSBuiltin)0;
 }
	public JSFunctionAttribute(JSFunctionAttributeEnum value, JSBuiltin builtinFunction) {}