//public override RunTimeValueBase execute(RunTimeValueBase thisObj, SLOT[] argements, object stackframe, out string errormessage, out int errorno) //{ // errormessage = null; // errorno = 0; // string b = TypeConverter.ConvertToString( // ((ASBinCode.rtData.rtObject)thisObj).value.memberData[0].getValue(), null, null); // if (b == null) // { // errormessage = "Cannot access a property or method of a null object reference."; // errorno = 1009; // return ASBinCode.rtData.rtUndefined.undefined; // } // else // { // string delimiter = TypeConverter.ConvertToString(argements[0].getValue(), null, null); // int maxcount = TypeConverter.ConvertToInt(argements[1].getValue(), null, null); // if (maxcount < 0) { return new rtArray(); } // var split = b.Split(new string[] { delimiter }, StringSplitOptions.None ); // rtArray result = new rtArray(); // for (int i = 0; i < split.Length && i<maxcount; i++) // { // result.innerArray.Add(new rtString(split[i])); // } // return result; // } //} public override void execute3(RunTimeValueBase thisObj,FunctionDefine functionDefine,SLOT returnSlot,SourceToken token,StackFrame stackframe,out bool success) { string b = TypeConverter.ConvertToString( ((ASBinCode.rtData.rtObjectBase)thisObj).value.memberData[0].getValue(),null,null); if (b == null) { success = false; stackframe.throwError(token,1009,"Cannot access a property or method of a null object reference."); returnSlot.directSet(rtUndefined.undefined); } else { success = true; string delimiter = TypeConverter.ConvertToString(argements[0],stackframe,token); int maxcount = TypeConverter.ConvertToInt(argements[1]); if (maxcount < 0) //{ return new rtArray(); } { returnSlot.directSet(new rtArray()); return; } var split = b.Split(new string[] { delimiter },StringSplitOptions.None); rtArray result = new rtArray(); for (int i = 0; i < split.Length && i < maxcount; i++) { result.innerArray.Add(new rtString(split[i])); } //return result; returnSlot.directSet(result); } }
public override void execute3(RunTimeValueBase thisObj, FunctionDefine functionDefine, SLOT returnSlot,SourceToken token,StackFrame stackframe,out bool success) { string str = TypeConverter.ConvertToString(argements[0],stackframe,token); DynamicObject result = (DynamicObject)((rtObjectBase)argements[1]).value; bool noglobal = TypeConverter.ConvertToBoolean(argements[2],stackframe,token).value; bool global = TypeConverter.ConvertToBoolean(((rtObjectBase)thisObj).value.memberData[3].getValue(), stackframe, token).value; string source = TypeConverter.ConvertToString(((rtObjectBase)thisObj).value.memberData[6].getValue(), stackframe, token); double lastIndex = TypeConverter.ConvertToNumber(((rtObjectBase)thisObj).value.memberData[7].getValue()); if (noglobal) { global = false; } if (source != null) { System.Text.RegularExpressions.Regex regex = (System.Text.RegularExpressions.Regex)((HostedObject)((rtObjectBase)((rtObjectBase)thisObj).value.memberData[8].getValue()).value).hosted_object; var match = regex.Match(str, global ? (int)lastIndex : 0); if (match.Success) { var index = new DynamicPropertySlot((rtObjectBase)argements[1], true, stackframe.player.swc.FunctionClass.getRtType()); index.directSet(new rtInt(match.Index)); result.createproperty("index", index); rtArray array = (rtArray)result.memberData[0].getValue(); for (int i = 0; i < match.Groups.Count; i++) { array.innerArray.Add(new rtString(match.Groups[i].Value)); } if (global) { ((rtNumber)((rtObjectBase)thisObj).value.memberData[7].getValue()).value = match.Index + match.Length; } returnSlot.directSet(argements[1]); } else { returnSlot.directSet(rtNull.nullptr); } success = true; //returnSlot.directSet(issuccess ? rtBoolean.True : rtBoolean.False); } else { success = true; returnSlot.directSet(rtNull.nullptr); } }
//public override RunTimeValueBase execute(RunTimeValueBase thisObj, SLOT[] argements,object stackframe, out string errormessage, out int errorno) //{ // errormessage = null; // errorno = 0; // rtArray arr = (rtArray)((rtObject)thisObj).value.memberData[0].getValue(); // int idx = ((rtInt)argements[0].getValue()).value; // if (idx < 0) // { // idx = arr.innerArray.Count + idx; // if (idx < 0) { idx = 0; } // } // else if (idx > arr.innerArray.Count-1) // { // return rtUndefined.undefined; // } // var r = arr.innerArray[idx]; // arr.innerArray.RemoveAt(idx); // return r; //} public override void execute3(RunTimeValueBase thisObj,FunctionDefine functionDefine,SLOT returnSlot,SourceToken token,StackFrame stackframe,out bool success) { success = true; rtArray arr = (rtArray)((rtObjectBase)thisObj).value.memberData[0].getValue(); int idx = ((rtInt)argements[0]).value; if (idx < 0) { idx = arr.innerArray.Count + idx; if (idx < 0) { idx = 0; } } else if (idx > arr.innerArray.Count - 1) { returnSlot.directSet(rtUndefined.undefined); } var r = arr.innerArray[idx]; arr.innerArray.RemoveAt(idx); //return r; returnSlot.directSet(r); }
//public override RunTimeValueBase execute(RunTimeValueBase thisObj, SLOT[] argements, object stackframe, out string errormessage, out int errorno) //{ // errormessage = null; // errorno = 0; // if (argements[0].getValue().rtType == RunTimeDataType.rt_null) // { // return ASBinCode.rtData.rtBoolean.False; // } // else // { // ASBinCode.rtData.rtFunction f = (ASBinCode.rtData.rtFunction)argements[0].getValue(); // if (f.ismethod) // { // return ASBinCode.rtData.rtBoolean.True; // } // else // { // return ASBinCode.rtData.rtBoolean.False; // } // } //} public override void execute3(RunTimeValueBase thisObj, FunctionDefine functionDefine, SLOT returnSlot,SourceToken token,StackFrame stackframe,out bool success) { //errormessage = null; //errorno = 0; success = true; if (argements[0].rtType == RunTimeDataType.rt_null) { //return ASBinCode.rtData.rtBoolean.False; returnSlot.directSet(rtBoolean.False); } else { ASBinCode.rtData.rtFunction f = (ASBinCode.rtData.rtFunction)argements[0]; if (f.ismethod) { //return ASBinCode.rtData.rtBoolean.True; returnSlot.directSet(rtBoolean.True); } else { //return ASBinCode.rtData.rtBoolean.False; returnSlot.directSet(rtBoolean.False); } } //throw new NotImplementedException(); }
//public override RunTimeValueBase execute(RunTimeValueBase thisObj, SLOT[] argements,object stackframe, out string errormessage, out int errorno) //{ // errormessage = null; // errorno = 0; // if (((rtArray)argements[0].getValue()).objHandle.bindArrayObject == null) // { // return rtNull.nullptr; // } // else // { // return ((rtArray)argements[0].getValue()).objHandle.bindArrayObject; // } //} public override void execute3(RunTimeValueBase thisObj,FunctionDefine functionDefine,SLOT returnSlot,SourceToken token,StackFrame stackframe,out bool success) { success = true; if (((rtArray)argements[0]).objHandle.bindArrayObject == null) { //return rtNull.nullptr; returnSlot.directSet(rtNull.nullptr); } else { //return ((rtArray)argements[0].getValue()).objHandle.bindArrayObject; returnSlot.directSet(((rtArray)argements[0]).objHandle.bindArrayObject); } }
//public override RunTimeValueBase execute(RunTimeValueBase thisObj, SLOT[] argements, object stackframe, out string errormessage, out int errorno) //{ // errormessage = null; // errorno = 0; // double num = TypeConverter.ConvertToNumber(argements[0].getValue()); // if (double.IsInfinity(num)) // { // return rtBoolean.True; // } // else // { // return rtBoolean.False; // } //} public override void execute3(RunTimeValueBase thisObj,FunctionDefine functionDefine,SLOT returnSlot,SourceToken token,StackFrame stackframe,out bool success) { success = true; double num = TypeConverter.ConvertToNumber(argements[0]); if (!double.IsInfinity(num)) { //return rtBoolean.True; returnSlot.directSet(rtBoolean.True); } else { //return rtBoolean.False; returnSlot.directSet(rtBoolean.False); } }
//public override RunTimeValueBase execute(RunTimeValueBase thisObj, SLOT[] argements, object stackframe, out string errormessage, out int errorno) //{ // errormessage = null; // errorno = 0; // string b = TypeConverter.ConvertToString( // ((ASBinCode.rtData.rtObject)thisObj).value.memberData[0].getValue(), null, null); // if (b == null) // { // errormessage = "Cannot access a property or method of a null object reference."; // errorno = 1009; // return ASBinCode.rtData.rtUndefined.undefined; // } // else // { // string search = TypeConverter.ConvertToString(argements[0].getValue(), null, null); // int st = TypeConverter.ConvertToInt(argements[1].getValue(), null, null); // return new rtInt( b.IndexOf(search,st)); // } //} public override void execute3(RunTimeValueBase thisObj,FunctionDefine functionDefine,SLOT returnSlot,SourceToken token,StackFrame stackframe,out bool success) { string b = TypeConverter.ConvertToString( ((ASBinCode.rtData.rtObjectBase)thisObj).value.memberData[0].getValue(),null,null); if (b == null) { //errormessage = "Cannot access a property or method of a null object reference."; //errorno = 1009; //return ASBinCode.rtData.rtUndefined.undefined; success = false; stackframe.throwError(token,1009,"Cannot access a property or method of a null object reference."); returnSlot.directSet(rtUndefined.undefined); } else { string search = TypeConverter.ConvertToString(argements[0],null,null); int st = TypeConverter.ConvertToInt(argements[1]); //return new rtInt(b.IndexOf(search, st)); success = true; returnSlot.setValue(b.IndexOf(search,st)); } }
public override void execute3(RunTimeValueBase thisObj, FunctionDefine functionDefine, SLOT returnSlot,SourceToken token,StackFrame stackframe,out bool success) { try { ((LinkObj <object>)((ASBinCode.rtData.rtObjectBase)thisObj).value).value = new RefOutStore(); returnSlot.directSet(ASBinCode.rtData.rtUndefined.undefined); success = true; } catch (InvalidCastException ic) { success = false; stackframe.throwAneException(token,ic.Message); } catch (ArgumentException a) { success = false; stackframe.throwAneException(token,a.Message); } catch (IndexOutOfRangeException i) { success = false; stackframe.throwAneException(token,i.Message); } catch (NotSupportedException n) { success = false; stackframe.throwAneException(token,n.Message); } }
//public override RunTimeValueBase execute(RunTimeValueBase thisObj, SLOT[] argements,object stackframe, out string errormessage, out int errorno) //{ // if (argements.Length < 1) // { // errormessage = "参数不足"; // errorno = 0; // return ASBinCode.rtData.rtUndefined.undefined; // } // else // { // var v = argements[0].getValue(); // int r = TypeConverter.ConvertToInt(v, null, null); // if (r < 0 || r > 20) // { // errormessage = "Number.toPrecision has a range of 1 to 21. Number.toFixed and Number.toExponential have a range of 0 to 20. Specified value is not within expected range."; // errorno = 1002; // return ASBinCode.rtData.rtUndefined.undefined; // } // else // { // errormessage = null; // errorno = 0; // return // new rtString( // ((rtNumber)((rtObject)thisObj).value.memberData[0].getValue()).value.ToString("f" + (r)) // ); // } // } //} public override void execute3(RunTimeValueBase thisObj,FunctionDefine functionDefine,SLOT returnSlot,SourceToken token,StackFrame stackframe,out bool success) { { var v = argements[0]; int r = TypeConverter.ConvertToInt(v); if (r < 0 || r > 20) { success = false; stackframe.throwError(token,1002,"Number.toPrecision has a range of 1 to 21. Number.toFixed and Number.toExponential have a range of 0 to 20. Specified value is not within expected range."); returnSlot.directSet(rtUndefined.undefined); } else { //errormessage = null; //errorno = 0; //return // new rtString( // ((rtInt)((rtObject)thisObj).value.memberData[0].getValue()).value.ToString("f" + (r)) // ); success = true; returnSlot.setValue(((rtNumber)((rtObjectBase)thisObj).value.memberData[0].getValue()).value.ToString("f" + (r))); } } }
//public override RunTimeValueBase execute(RunTimeValueBase thisObj, SLOT[] argements, object stackframe, out string errormessage, out int errorno) //{ // errormessage = null; // errorno = 0; // string b = TypeConverter.ConvertToString( // ((ASBinCode.rtData.rtObject)thisObj).value.memberData[0].getValue(), null, null); // if (b == null) // { // errormessage = "Cannot access a property or method of a null object reference."; // errorno = 1009; // return ASBinCode.rtData.rtUndefined.undefined; // } // else // { // string pattern = TypeConverter.ConvertToString(argements[0].getValue(), null, null); // string repl = TypeConverter.ConvertToString(argements[1].getValue(), null, null); // if (pattern == null) pattern = string.Empty; // if (repl == null) repl = string.Empty; // return new rtString(b.Replace(pattern, repl)); // } //} public override void execute3(RunTimeValueBase thisObj,FunctionDefine functionDefine,SLOT returnSlot,SourceToken token,StackFrame stackframe,out bool success) { string b = TypeConverter.ConvertToString( ((ASBinCode.rtData.rtObjectBase)thisObj).value.memberData[0].getValue(),null,null); if (b == null) { success = false; stackframe.throwError(token,1009,"Cannot access a property or method of a null object reference."); returnSlot.directSet(rtUndefined.undefined); } else { success = true; string pattern = TypeConverter.ConvertToString(argements[0],null,null); string repl = TypeConverter.ConvertToString(argements[1],null,null); if (pattern == null) { pattern = string.Empty; } if (repl == null) { repl = string.Empty; } //return new rtString(b.Replace(pattern, repl)); returnSlot.setValue(b.Replace(pattern,repl)); } }
public override void execute3(RunTimeValueBase thisObj,FunctionDefine functionDefine,SLOT returnSlot,SourceToken token,StackFrame stackframe,out bool success) { Class _arraylist_ = ((ASBinCode.rtData.rtObjectBase)thisObj).value._class; var arr = stackframe.player.alloc_pureHostedOrLinkedObject(_arraylist_.instanceClass); LinkSystemObject linkobj = (LinkSystemObject)arr.value; try { int capacity = TypeConverter.ConvertToInt(argements[0]); linkobj.SetLinkData(new ArrayList(capacity)); returnSlot.directSet(arr); success = true; } //catch (KeyNotFoundException) //{ // success = false; // stackframe.throwArgementException(token, "类型" + argements[0].rtType + "不是一个链接到系统类库的对象,不能创建托管数组"); //} catch (ArgumentOutOfRangeException a) { success = false; stackframe.throwAneException(token,a.Message); } catch { throw new EngineException(); } }
public override void execute3(RunTimeValueBase thisObj, FunctionDefine functionDefine, SLOT returnSlot,SourceToken token,StackFrame stackframe,out bool success) { ((LinkObj <object>)((ASBinCode.rtData.rtObjectBase)thisObj).value).value = new ArrayList(); returnSlot.directSet(ASBinCode.rtData.rtUndefined.undefined); success = true; }
public override void execute3(RunTimeValueBase thisObj, FunctionDefine functionDefine, SLOT returnSlot,SourceToken token,StackFrame stackframe,out bool success) { success = true; returnSlot.directSet(thisObj); }
public override void execute3(RunTimeValueBase thisObj,FunctionDefine functionDefine,SLOT returnSlot,SourceToken token,StackFrame stackframe,out bool success) { if (argements[0].rtType == RunTimeDataType.rt_null) { success = false; stackframe.throwArgementException(token,"参数elementType不能为null"); return; } Class _arraylist_ = ((ASBinCode.rtData.rtObjectBase)thisObj).value._class; var arr = stackframe.player.alloc_pureHostedOrLinkedObject(_arraylist_.instanceClass); LinkSystemObject linkobj = (LinkSystemObject)arr.value; try { object lo; if (stackframe.player.linktypemapper.rtValueToLinkObject( argements[0], stackframe.player.linktypemapper.getLinkType( functionDefine.signature.parameters[0].type ), bin,true,out lo )) { linkobj.SetLinkData(new ArrayList((ICollection)lo)); returnSlot.directSet(arr); success = true; } else { stackframe.throwCastException(token,argements[0].rtType, functionDefine.signature.parameters[0].type ); success = false; } } catch (KeyNotFoundException) { success = false; stackframe.throwArgementException(token,"类型" + argements[0].rtType + "不是一个链接到系统类库的对象,不能创建托管数组"); } catch (ArgumentOutOfRangeException a) { success = false; stackframe.throwAneException(token,a.Message); } catch { throw new EngineException(); } }
public override void execute3(RunTimeValueBase thisObj,FunctionDefine functionDefine,SLOT returnSlot,SourceToken token,StackFrame stackframe,out bool success) { RefOutStore _this = (RefOutStore)((LinkSystemObject)((ASBinCode.rtData.rtObjectBase)thisObj).value).GetLinkData(); try { string arg0 = TypeConverter.ConvertToString(argements[0],stackframe,token); System.Object arg1; { object _temp; if (!stackframe.player.linktypemapper.rtValueToLinkObject( argements[1], stackframe.player.linktypemapper.getLinkType(argements[1].rtType) , bin,true,out _temp )) { stackframe.throwCastException(token,argements[1].rtType, functionDefine.signature.parameters[1].type ); success = false; return; } arg1 = (System.Object)_temp; } _this.SetValue((System.String)arg0,(System.Object)arg1) ; returnSlot.directSet(ASBinCode.rtData.rtUndefined.undefined); success = true; } catch (ASRunTimeException tlc) { success = false; stackframe.throwAneException(token,tlc.Message); } catch (InvalidCastException ic) { success = false; stackframe.throwAneException(token,ic.Message); } catch (ArgumentException a) { success = false; stackframe.throwAneException(token,a.Message); } catch (IndexOutOfRangeException i) { success = false; stackframe.throwAneException(token,i.Message); } catch (NotSupportedException n) { success = false; stackframe.throwAneException(token,n.Message); } }
public override void execute3(RunTimeValueBase thisObj,FunctionDefine functionDefine,SLOT returnSlot,SourceToken token,StackFrame stackframe,out bool success) { try { ((LinkObj <object>)((ASBinCode.rtData.rtObjectBase)thisObj).value).value = new autogencodelib_TestobjAdapter(); returnSlot.directSet(ASBinCode.rtData.rtUndefined.undefined); ((ICrossExtendAdapter)((LinkObj <object>)((ASBinCode.rtData.rtObjectBase)thisObj).value).value) .SetAS3RuntimeEnvironment(stackframe.player,((ASBinCode.rtData.rtObjectBase)thisObj).value._class,(ASBinCode.rtData.rtObjectBase)thisObj); success = true; } catch (InvalidCastException ic) { success = false; stackframe.throwAneException(token,ic.Message); } catch (ArgumentException a) { success = false; stackframe.throwAneException(token,a.Message); } catch (IndexOutOfRangeException i) { success = false; stackframe.throwAneException(token,i.Message); } catch (NotSupportedException n) { success = false; stackframe.throwAneException(token,n.Message); } }
//public override RunTimeValueBase execute(RunTimeValueBase thisObj, SLOT[] argements,object stackframe, out string errormessage, out int errorno) //{ // errormessage = null; // errorno = 0; // rtArray arr = (rtArray)((rtObject)thisObj).value.memberData[0].getValue(); // int idx = ((rtInt)argements[0].getValue()).value; // var toinsert = argements[1].getValue(); // if (idx < 0) // { // idx = arr.innerArray.Count + idx; // if (idx < 0) { idx = 0; } // } // else if (idx > arr.innerArray.Count) // { // idx = arr.innerArray.Count; // } // arr.innerArray.Insert(idx, toinsert); // return rtUndefined.undefined; //} public override void execute3(RunTimeValueBase thisObj,FunctionDefine functionDefine,SLOT returnSlot,SourceToken token,StackFrame stackframe,out bool success) { success = true; rtArray arr = (rtArray)((rtObjectBase)thisObj).value.memberData[0].getValue(); int idx = ((rtInt)argements[0]).value; var toinsert = argements[1]; if (idx < 0) { idx = arr.innerArray.Count + idx; if (idx < 0) { idx = 0; } } else if (idx > arr.innerArray.Count) { idx = arr.innerArray.Count; } arr.innerArray.Insert(idx,(RunTimeValueBase)toinsert.Clone()); returnSlot.directSet(rtUndefined.undefined); //return rtUndefined.undefined; }
public override void execute3(RunTimeValueBase thisObj, FunctionDefine functionDefine, SLOT returnSlot, SourceToken token, StackFrame stackframe, out bool success) { double value = TypeConverter.ConvertToNumber(argements[0]); ((LinkObj<UInt64>)((ASBinCode.rtData.rtObjectBase)thisObj).value).value = (UInt64)value; returnSlot.directSet(ASBinCode.rtData.rtUndefined.undefined); success = true; }
//public override RunTimeValueBase execute(RunTimeValueBase thisObj, SLOT[] argements,object stackframe, out string errormessage, out int errorno) //{ // errormessage = null; // errorno = 0; // rtArray arr = (rtArray)((rtObject)thisObj).value.memberData[0].getValue(); // int startindex = ((rtInt)argements[0].getValue()).value; // int endindex = ((rtInt)argements[1].getValue()).value; // if (startindex >= arr.innerArray.Count) // { // return new rtArray(); // } // else if (startindex < 0) // { // startindex = arr.innerArray.Count + startindex; // if (startindex < 0) // { // startindex = 0; // } // } // if (endindex > arr.innerArray.Count) // { // endindex = arr.innerArray.Count ; // } // else if (endindex < 0) // { // endindex = arr.innerArray.Count + endindex; // if (endindex < 0) // { // endindex = 0; // } // } // rtArray newArray = new rtArray(); // for (int i = startindex; i < endindex; i++) // { // newArray.innerArray.Add(arr.innerArray[i]); // } // return newArray; //} public override void execute3(RunTimeValueBase thisObj,FunctionDefine functionDefine,SLOT returnSlot,SourceToken token,StackFrame stackframe,out bool success) { success = true; rtArray arr = (rtArray)((rtObjectBase)thisObj).value.memberData[0].getValue(); int startindex = ((rtInt)argements[0]).value; int endindex = ((rtInt)argements[1]).value; if (startindex >= arr.innerArray.Count) { //return new rtArray(); returnSlot.directSet(new rtArray()); } else if (startindex < 0) { startindex = arr.innerArray.Count + startindex; if (startindex < 0) { startindex = 0; } } if (endindex > arr.innerArray.Count) { endindex = arr.innerArray.Count; } else if (endindex < 0) { endindex = arr.innerArray.Count + endindex; if (endindex < 0) { endindex = 0; } } rtArray newArray = new rtArray(); for (int i = startindex; i < endindex; i++) { newArray.innerArray.Add((RunTimeValueBase)arr.innerArray[i].Clone()); } returnSlot.directSet(newArray); //return newArray; }
//public override RunTimeValueBase execute(RunTimeValueBase thisObj, SLOT[] argements,object stackframe, out string errormessage, out int errorno) //{ // errormessage = null; // errorno = 0; // rtArray arr = (rtArray)((rtObject)thisObj).value.memberData[0].getValue(); // arr.innerArray.Reverse(); // return arr; //} public override void execute3(RunTimeValueBase thisObj,FunctionDefine functionDefine,SLOT returnSlot,SourceToken token,StackFrame stackframe,out bool success) { success = true; rtArray arr = (rtArray)((rtObjectBase)thisObj).value.memberData[0].getValue(); arr.innerArray.Reverse(); //return arr; returnSlot.directSet(arr); }
//public override RunTimeValueBase execute(RunTimeValueBase thisObj, SLOT[] argements,object stackframe, out string errormessage, out int errorno) //{ // ((rtObject)argements[0].getValue()).value.memberData[0].directSet(argements[1].getValue()); // ((rtArray)argements[1].getValue()).objHandle.bindArrayObject = ((rtObject)argements[0].getValue()); // errormessage = null; // errorno = 0; // return rtUndefined.undefined; // //throw new NotImplementedException(); //} public override void execute3(RunTimeValueBase thisObj,FunctionDefine functionDefine,SLOT returnSlot,SourceToken token,StackFrame stackframe,out bool success) { ((rtObjectBase)argements[0]).value.memberData[0].directSet(argements[1]); ((rtArray)argements[1]).objHandle.bindArrayObject = ((rtObjectBase)argements[0]); success = true; returnSlot.directSet(rtUndefined.undefined); //return rtUndefined.undefined; }
public override void execute3(RunTimeValueBase thisObj, FunctionDefine functionDefine, SLOT returnSlot,SourceToken token,StackFrame stackframe,out bool success) { // //((rtObject)thisObj).value.memberData[0].directSet(newvalue); string str = TypeConverter.ConvertToString(argements[0],stackframe,token); bool global = TypeConverter.ConvertToBoolean(((rtObjectBase)thisObj).value.memberData[3].getValue(), stackframe, token).value; string source = TypeConverter.ConvertToString(((rtObjectBase)thisObj).value.memberData[6].getValue(), stackframe, token); double lastIndex = TypeConverter.ConvertToNumber(((rtObjectBase)thisObj).value.memberData[7].getValue()); if (source != null) { System.Text.RegularExpressions.Regex regex = (System.Text.RegularExpressions.Regex)((HostedObject)((rtObjectBase)((rtObjectBase)thisObj).value.memberData[8].getValue()).value).hosted_object; bool issuccess; var match = regex.Match(str, global ? (int)lastIndex : 0); if (match.Success) { issuccess = true; if (global) { ((rtNumber)((rtObjectBase)thisObj).value.memberData[7].getValue()).value = match.Index + match.Length; } } else { issuccess = false; } success = true; returnSlot.directSet(issuccess ? rtBoolean.True : rtBoolean.False); } else { success = true; returnSlot.directSet(rtBoolean.False); } }
//public override RunTimeValueBase execute(RunTimeValueBase thisObj, SLOT[] argements,object stackframe, out string errormessage, out int errorno) //{ // errormessage = null; // errorno = 0; // rtArray arr = (rtArray)((rtObject)thisObj).value.memberData[0].getValue(); // if (arr.innerArray.Count > 0) // { // var result = arr.innerArray[arr.innerArray.Count - 1]; // arr.innerArray.RemoveAt(arr.innerArray.Count-1); // return result; // } // else // { // return rtUndefined.undefined; // } //} public override void execute3(RunTimeValueBase thisObj,FunctionDefine functionDefine,SLOT returnSlot,SourceToken token,StackFrame stackframe,out bool success) { success = true; rtArray arr = (rtArray)((rtObjectBase)thisObj).value.memberData[0].getValue(); if (arr.innerArray.Count > 0) { var result = arr.innerArray[arr.innerArray.Count - 1]; arr.innerArray.RemoveAt(arr.innerArray.Count - 1); //return result; returnSlot.directSet(result); } else { //return rtUndefined.undefined; returnSlot.directSet(rtUndefined.undefined); } }
public override void execute3(RunTimeValueBase thisObj,FunctionDefine functionDefine,SLOT returnSlot,SourceToken token,StackFrame stackframe,out bool success) { success = true; int length = TypeConverter.ConvertToInt(argements[0]); ((LinkObj <object>)((ASBinCode.rtData.rtObjectBase)thisObj).value).value = new T[length]; returnSlot.directSet(ASBinCode.rtData.rtUndefined.undefined); }
//public override RunTimeValueBase execute(RunTimeValueBase thisObj, SLOT[] argements, object stackframe, out string errormessage, out int errorno) //{ // errormessage = null; // errorno = 0; // ASBinCode.rtti.YieldObject yieldObj = (ASBinCode.rtti.YieldObject) // ((ASBinCode.rtData.rtObject)thisObj).value; // var result= yieldObj.returnSlot.getValue(); // //yieldObj.returnSlot.directSet(ASBinCode.rtData.rtUndefined.undefined); // return result; //} public override void execute3(RunTimeValueBase thisObj,FunctionDefine functionDefine,SLOT returnSlot,SourceToken token,StackFrame stackframe,out bool success) { success = true; ASBinCode.rtti.YieldObject yieldObj = (ASBinCode.rtti.YieldObject) ((ASBinCode.rtData.rtObjectBase)thisObj).value; var result = yieldObj.returnSlot.getValue(); //yieldObj.returnSlot.directSet(ASBinCode.rtData.rtUndefined.undefined); returnSlot.directSet(result); }
public override void execute3(RunTimeValueBase thisObj, FunctionDefine functionDefine, SLOT returnSlot, SourceToken token, StackFrame stackframe, out bool success) { try { ASBinCode.RunTimeValueBase arg0; { object _temp; if (!stackframe.player.linktypemapper.rtValueToLinkObject( argements[0], stackframe.player.linktypemapper.getLinkType(argements[0].rtType) , bin, true, out _temp )) { stackframe.throwCastException(token, argements[0].rtType, functionDefine.signature.parameters[0].type ); success = false; return; } arg0 = (ASBinCode.RunTimeValueBase)_temp; } ((LinkObj<object>)((ASBinCode.rtData.rtObjectBase)thisObj).value).value = new ASRuntime.nativefuncs.linksystem.Iterator((ASBinCode.RunTimeValueBase)arg0, stackframe.player); returnSlot.directSet(ASBinCode.rtData.rtUndefined.undefined); success = true; } catch (InvalidCastException ic) { success = false; stackframe.throwAneException(token, ic.Message); } catch (ArgumentException a) { success = false; stackframe.throwAneException(token, a.Message); } catch (IndexOutOfRangeException i) { success = false; stackframe.throwAneException(token, i.Message); } catch (NotSupportedException n) { success = false; stackframe.throwAneException(token, n.Message); } }
public override void execute3(RunTimeValueBase thisObj,FunctionDefine functionDefine,SLOT returnSlot,SourceToken token,StackFrame stackframe,out bool success) { Queue queue = (System.Collections.Queue)((LinkObj <object>)((ASBinCode.rtData.rtObjectBase)thisObj).value).value; try { object lo; if (stackframe.player.linktypemapper.rtValueToLinkObject( argements[0], stackframe.player.linktypemapper.getLinkType(argements[0].rtType) , bin,true,out lo )) { queue.Enqueue(lo); returnSlot.directSet(ASBinCode.rtData.rtUndefined.undefined); success = true; } else { stackframe.throwCastException(token,argements[0].rtType, functionDefine.signature.parameters[0].type ); success = false; } } catch (InvalidCastException ic) { success = false; stackframe.throwAneException(token,ic.Message); } catch (ArgumentException a) { success = false; stackframe.throwAneException(token,a.Message); } catch (IndexOutOfRangeException i) { success = false; stackframe.throwAneException(token,i.Message); } catch (NotSupportedException n) { success = false; stackframe.throwAneException(token,n.Message); } }
public override void execute3(RunTimeValueBase thisObj,FunctionDefine functionDefine,SLOT returnSlot,SourceToken token,StackFrame stackframe,out bool success) { success = true; if (argements[0].rtType == RunTimeDataType.rt_null) { success = false; stackframe.throwArgementException(token,"参数elementType不能为null"); return; } Class cls = bin.getClassByRunTimeDataType(argements[0].rtType).instanceClass; int length1 = TypeConverter.ConvertToInt(argements[1]); int length2 = TypeConverter.ConvertToInt(argements[2]); Class _array_ = ((ASBinCode.rtData.rtObjectBase)thisObj).value._class; var arr = stackframe.player.alloc_pureHostedOrLinkedObject(_array_.instanceClass); LinkSystemObject lo = (LinkSystemObject)arr.value; try { RunTimeDataType et = cls.getRtType(); RunTimeDataType ot; if (TypeConverter.Object_CanImplicit_ToPrimitive(cls,out ot)) { et = ot; } Type elementType = stackframe.player.linktypemapper.getLinkType(et); lo.SetLinkData(Array.CreateInstance(elementType,length1,length2)); returnSlot.directSet(arr); } catch (KeyNotFoundException) { success = false; stackframe.throwArgementException(token,"类型" + cls + "不是一个链接到系统类库的对象,不能创建托管数组"); } catch (ArgumentOutOfRangeException a) { success = false; stackframe.throwAneException(token,a.Message); } catch { throw new EngineException(); } }
//public override RunTimeValueBase execute(RunTimeValueBase thisObj, SLOT[] argements, object stackframe, out string errormessage, out int errorno) //{ // errormessage = null; // errorno = 0; // string b = TypeConverter.ConvertToString( // ((ASBinCode.rtData.rtObject)thisObj).value.memberData[0].getValue(), null, null); // if (b == null) // { // errormessage = "Cannot access a property or method of a null object reference."; // errorno = 1009; // return ASBinCode.rtData.rtUndefined.undefined; // } // else // { // int st = TypeConverter.ConvertToInt(argements[0].getValue(), null, null); // int len = TypeConverter.ConvertToInt(argements[1].getValue(), null, null); // if (st > b.Length) // { // return new rtString(string.Empty); // } // else if (st < 0) // { // st = b.Length + st; // if (st < 0) // { // st = 0; // } // } // if (len < 0) // { // len = 0; // } // if (len > b.Length - st) // { // return new rtString(b.Substring(st)); // } // else // { // return new rtString(b.Substring(st, len)); // } // } //} public override void execute3(RunTimeValueBase thisObj,FunctionDefine functionDefine,SLOT returnSlot,SourceToken token,StackFrame stackframe,out bool success) { string b = TypeConverter.ConvertToString( ((ASBinCode.rtData.rtObjectBase)thisObj).value.memberData[0].getValue(),null,null); if (b == null) { success = false; stackframe.throwError(token,1009,"Cannot access a property or method of a null object reference."); returnSlot.directSet(rtUndefined.undefined); } else { success = true; int st = TypeConverter.ConvertToInt(argements[0]); int len = TypeConverter.ConvertToInt(argements[1]); if (st > b.Length) { //return new rtString(string.Empty); returnSlot.setValue(string.Empty); } else if (st < 0) { st = b.Length + st; if (st < 0) { st = 0; } } if (len < 0) { len = 0; } if (len > b.Length - st) { //return new rtString(b.Substring(st)); returnSlot.setValue(b.Substring(st)); } else { //return new rtString(b.Substring(st, len)); returnSlot.setValue(b.Substring(st,len)); } } }
public override void execute3(RunTimeValueBase thisObj,FunctionDefine functionDefine,SLOT returnSlot,SourceToken token,StackFrame stackframe,out bool success) { RunTimeValueBase kv = argements[0]; if (kv.rtType > RunTimeDataType.unknown) { RunTimeDataType ot; if (TypeConverter.Object_CanImplicit_ToPrimitive( bin.getClassByRunTimeDataType(kv.rtType),out ot )) { kv = TypeConverter.ObjectImplicit_ToPrimitive((ASBinCode.rtData.rtObjectBase)kv); } } DictionaryKey key = new DictionaryKey(kv,true); try { //链接结构体,不能缓存到变量,必须直接对其赋值.... (((LinkObj <DictionaryEntry>) ((ASBinCode.rtData.rtObjectBase)thisObj).value).value).Key = key; returnSlot.directSet(ASBinCode.rtData.rtUndefined.undefined); //returnSlot.setValue((int)array.GetValue(index)); success = true; } catch (InvalidCastException ic) { success = false; stackframe.throwAneException(token,ic.Message); } catch (ArgumentException a) { success = false; stackframe.throwAneException(token,a.Message); } catch (IndexOutOfRangeException i) { success = false; stackframe.throwAneException(token,i.Message); } }