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 void execute3(RunTimeValueBase thisObj, FunctionDefine functionDefine, SLOT returnSlot, SourceToken token, StackFrame stackframe, out bool success) { LinkObj<UInt64> obj = ((LinkObj<UInt64>)((ASBinCode.rtData.rtObjectBase)thisObj).value); returnSlot.setValue((double)obj.value); success = true; }
private void _storeArgementToSlot(int id,RunTimeValueBase v) { var signature = toCallFunc.signature; if (signature.onStackParameters > 0) { ASBinCode.rtti.FunctionParameter fp = signature.parameters[id]; if (fp.isOnStack) { StackSlotAccessor r = (StackSlotAccessor)fp.varorreg; //int index = invokerFrame.offset + invokerFrame.block.totalRegisters + 1 + 1+ invokerFrame.call_parameter_slotCount + r._index; int index = invokerFrame.baseBottomSlotIndex + invokerFrame.call_parameter_slotCount + r._index; invokerFrame.stack[index].directSet(v); } else { CallFuncHeap[((Variable)fp.varorreg).indexOfMembers].directSet( v ); } } else { CallFuncHeap[id].directSet(v); } }
//public override RunTimeValueBase execute(RunTimeValueBase thisObj, SLOT[] argements, object stackframe, out string errormessage, out int errorno) //{ //} 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; success = false; stackframe.throwError(token,1009,"Cannot access a property or method of a null object reference."); returnSlot.setValue(ASBinCode.rtData.rtUndefined.undefined); } else { success = true; int idx = TypeConverter.ConvertToInt(argements[0]); if (idx < 0 || idx >= b.Length) { returnSlot.setValue(double.NaN); //return new rtNumber(double.NaN); } else { returnSlot.setValue((double)b[idx]); //return new rtNumber(b[idx]); } } }
//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)); } }
private void _finalStep(BlockCallBackBase sender,object args) { object[] a = (object[])sender.args; objectResult = (ASBinCode.rtData.rtObjectBase)a[0]; //***如果有返回值**** var returnvalue = ((SLOT)a[1]).getValue(); ((SLOT)a[1]).directSet(ASBinCode.rtData.rtUndefined.undefined); if (returnvalue.rtType != RunTimeDataType.rt_void && returnvalue.rtType != RunTimeDataType.rt_string && returnvalue.rtType != RunTimeDataType.rt_number && returnvalue.rtType != RunTimeDataType.rt_int && returnvalue.rtType != RunTimeDataType.rt_boolean && returnvalue.rtType != RunTimeDataType.rt_uint ) { objectResult = returnvalue; } //objectResult.directSet((ASBinCode.rtData.rtObject)sender.args); if (callbacker != null) { callbacker.call(this); callbacker = null; } }
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(); double r = TypeConverter.ConvertToNumber(v); { errormessage = null; errorno = 0; return (new rtNumber( Math.Abs(r) )); } } }
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; return(new ASBinCode.rtData.rtString(TypeConverter.ConvertToString(thisObj,null,null))); }
//public override NativeFunctionMode mode //{ // get // { // return NativeFunctionMode.normal_1; // } //} //public override RunTimeValueBase execute(RunTimeValueBase thisObj, SLOT[] argements, object stackframe, out string errormessage, out int errorno) //{ // throw new ASRunTimeException(); //} //public override void execute2(RunTimeValueBase thisObj, FunctionDefine functionDefine, SLOT[] argements, SLOT returnSlot, SourceToken token, object stackframe, out bool success) //{ // success = true; // ASBinCode.rtData.rtObject obj = argements[0].getValue() as ASBinCode.rtData.rtObject; // if (obj == null) // { // returnSlot.setValue(ASBinCode.rtData.rtBoolean.False); // return; // } // LinkSystemObject other = obj.value as LinkSystemObject; // if (other == null) // { // returnSlot.setValue(ASBinCode.rtData.rtBoolean.False); // return; // } // LinkSystemObject iv = ((LinkSystemObject)((ASBinCode.rtData.rtObject)thisObj).value); // if (System.Object.Equals(iv, other)) // { // returnSlot.setValue(ASBinCode.rtData.rtBoolean.True); // return; // } // else // { // returnSlot.setValue(ASBinCode.rtData.rtBoolean.False); // return; // } //} public override void execute3(RunTimeValueBase thisObj,FunctionDefine functionDefine,SLOT returnSlot,SourceToken token,StackFrame stackframe,out bool success) { success = true; ASBinCode.rtData.rtObjectBase obj = argements[0] as ASBinCode.rtData.rtObjectBase; if (obj == null) { returnSlot.setValue(ASBinCode.rtData.rtBoolean.False); return; } LinkSystemObject other = obj.value as LinkSystemObject; if (other == null) { returnSlot.setValue(ASBinCode.rtData.rtBoolean.False); return; } LinkSystemObject iv = ((LinkSystemObject)((ASBinCode.rtData.rtObjectBase)thisObj).value); if (System.Object.Equals(iv,other)) { returnSlot.setValue(ASBinCode.rtData.rtBoolean.True); return; } else { returnSlot.setValue(ASBinCode.rtData.rtBoolean.False); return; } }
public StackSlot(CSWC classfinder,Player player) { this.player = player; store = new RunTimeValueBase[(int)RunTimeDataType._OBJECT + 1]; index = (int)RunTimeDataType.unknown; _cache_arraySlot = new operators.OpAccess_Dot.arraySlot(null,0,classfinder); _cache_vectorSlot = new operators.OpVector.vectorSLot(null,0,classfinder); _cache_prototypeSlot = new operators.OpAccess_Dot.prototypeSlot(null,null,null); _cache_setthisslot = new SetThisItemSlot(); //存储器设置初始值 for (int i = 0; i < RunTimeDataType._OBJECT + 1; i++) { RunTimeDataType t = (RunTimeDataType)i; if (t != RunTimeDataType.unknown) { store[i] = TypeConverter.getDefaultValue(t).getValue(null,null); } } store[RunTimeDataType.rt_array] = null; store[RunTimeDataType.rt_string] = null; store[RunTimeDataType.rt_function] = null; _numberValue = (rtNumber)store[RunTimeDataType.rt_number]; _intValue = (rtInt)store[RunTimeDataType.rt_int]; _uintValue = (rtUInt)store[RunTimeDataType.rt_uint]; _stringValue = new rtString(string.Empty); _functionValue = new rtFunction(-1,false); _functon_result = new rtFunction(-1,false); }
public override void execute3(RunTimeValueBase thisObj,FunctionDefine functionDefine,SLOT returnSlot,SourceToken token,StackFrame stackframe,out bool success) { DictionaryEntry dictionaryEntry = ((LinkObj <DictionaryEntry>)((ASBinCode.rtData.rtObjectBase)thisObj).value).value; try { object obj = dictionaryEntry.Value; stackframe.player.linktypemapper.storeLinkObject_ToSlot(obj,functionDefine.signature.returnType,returnSlot,bin,stackframe.player); //returnSlot.setValue((int)array.GetValue(index)); success = true; } catch (RuntimeLinkTypeMapper.TypeLinkClassException 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); } }
public sealed override void executeAsync(RunTimeValueBase thisObj, SLOT[] argements,SLOT resultSlot,object callbacker, object stackframe,SourceToken token,RunTimeScope scope) { ASBinCode.rtti.YieldObject yieldObj = (ASBinCode.rtti.YieldObject) ((ASBinCode.rtData.rtObjectBase)thisObj).value; yieldObj.returnSlot.directSet(ASBinCode.rtData.rtUndefined.undefined); yieldObj._moveNextResultSlot = resultSlot; yieldObj._callbacker = callbacker; StackFrame frame = (StackFrame)stackframe; var toCallFunc = yieldObj.yield_function; var CallFuncHeap = yieldObj.argements; CallFuncHeap[CallFuncHeap.Length - 1].directSet(ASBinCode.rtData.rtBoolean.False); BlockCallBackBase cb = frame.player.blockCallBackPool.create(); cb.args = yieldObj; cb.setCallBacker(_movenext_callbacker); frame.player.callBlock( frame.player.swc.blocks[toCallFunc.blockid], CallFuncHeap, yieldObj.returnSlot, yieldObj.function_bindscope, token,cb,yieldObj.thispointer,RunTimeScopeType.function); }
public static void push_parameter_nativeconstpara(StackFrame frame, ASBinCode.OpStep step, RunTimeScope scope) { int id = ((rtInt)step.arg2.getValue(frame.scope, frame)).value; RunTimeValueBase arg = step.arg1.getValue(frame.scope, frame); #if DEBUG if (frame.typeconvertoperator != null) { throw new EngineException(); } #endif var toCallFunc = frame.funCaller.toCallFunc; var player = frame.player; //if (toCallFunc.native_index < 0) //{ // toCallFunc.native_index = player.swc.nativefunctionNameIndex[toCallFunc.native_name]; //} //var nf = (nativefuncs.NativeConstParameterFunction)player.swc.nativefunctions[toCallFunc.native_index]; var nf = (nativefuncs.NativeConstParameterFunction)player.swc.getNativeFunction(toCallFunc); bool success; frame.funCaller.pushParameterNativeModeConstParameter(nf, arg, id, out success); frame.endStepNoError(); //frame.endStep(step); }
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) { errormessage = null; errorno = 0; string name = TypeConverter.ConvertToString(argements[0].getValue(),null,null); bool isEnum = TypeConverter.ConvertToBoolean(argements[1].getValue(),null,null).value; if (string.IsNullOrEmpty(name)) { return(ASBinCode.rtData.rtUndefined.undefined); } ASBinCode.rtData.rtObjectBase obj = (ASBinCode.rtData.rtObjectBase)thisObj; if (!(obj.value is ASBinCode.rtti.DynamicObject)) { return(ASBinCode.rtData.rtUndefined.undefined); } ASBinCode.rtti.DynamicObject dobj = (ASBinCode.rtti.DynamicObject)obj.value; if (dobj is ASBinCode.rtti.DictionaryObject) { return(ASBinCode.rtData.rtUndefined.undefined); } if (dobj.hasproperty(name)) { dobj.setPropertyIsEnumerable(name,isEnum); } return(ASBinCode.rtData.rtUndefined.undefined); }
private void exec_step3(ASBinCode.rtData.rtObjectBase rtobject) { if (constructor == null) { objectResult = rtobject; //objectResult.directSet(rtobject); if (callbacker != null) { callbacker.call(this); callbacker = null; } } else { HeapSlot _temp = tempSlot; _temp.directSet(ASBinCode.rtData.rtUndefined.undefined); _function_constructor.returnSlot = _temp; //_function_constructor.function = (ASBinCode.rtData.rtFunction)TypeConverter.ObjectImplicit_ToPrimitive(constructor).Clone(); //_function_constructor.function.setThis(rtobject); _function_constructor.SetFunction((ASBinCode.rtData.rtFunction)TypeConverter.ObjectImplicit_ToPrimitive(constructor),rtobject); BlockCallBackBase cb = player.blockCallBackPool.create(); cb.args = cb.cacheObjects; //new object[] { rtobject , _temp }; cb.cacheObjects[0] = rtobject; cb.cacheObjects[1] = _temp; cb.setCallBacker(_finalStep); _function_constructor.callbacker = cb; _function_constructor.call(); _function_constructor = null; } }
public override void execute3(RunTimeValueBase thisObj, FunctionDefine functionDefine, SLOT returnSlot,SourceToken token,StackFrame stackframe,out bool success) { success = true; returnSlot.directSet(thisObj); }
//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 < 1 || r > 21) // { // 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("g" + (r)) // ); // } // } //} public override void execute3(RunTimeValueBase thisObj, FunctionDefine functionDefine, SLOT returnSlot,SourceToken token,StackFrame stackframe,out bool success) { success = true; { var v = argements[0]; int r = TypeConverter.ConvertToInt(v); if (r < 1 || r > 21) { success = false; //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; 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.setValue(rtUndefined.undefined); } else { //errormessage = null; //errorno = 0; //return // new rtString( // ((rtInt)((rtObject)thisObj).value.memberData[0].getValue()).value.ToString("g" + (r)) // ); success = true; returnSlot.setValue(((rtNumber)((rtObjectBase)thisObj).value.memberData[0].getValue()).value.ToString("g" + (r))); } } }
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 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 RunTimeValueBase execute(RunTimeValueBase thisObj,SLOT[] argements,object stackframe,out string errormessage,out int errorno) { errormessage = null; errorno = 0; StringBuilder sb = new StringBuilder(); rtArray arr = (rtArray)argements[0].getValue(); for (int i = 0; i < arr.innerArray.Count; i++) { var v = arr.innerArray[i]; if (v.rtType > RunTimeDataType.unknown) { RunTimeDataType ot; if (TypeConverter.Object_CanImplicit_ToPrimitive(((rtObjectBase)v).value._class,out ot)) { v = TypeConverter.ObjectImplicit_ToPrimitive((rtObjectBase)v); } } int charcode = TypeConverter.ConvertToInt(v); sb.Append((char)charcode); } return(new rtString(sb.ToString())); }
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 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) { System.Collections.ArrayList arraylist = (System.Collections.ArrayList)((LinkObj <object>)((ASBinCode.rtData.rtObjectBase)thisObj).value).value; try { arraylist.Sort(); returnSlot.setValue(ASBinCode.rtData.rtUndefined.undefined); success = true; } //catch (KeyNotFoundException) //{ // success = false; // stackframe.throwAneException(token, arraylist.ToString() + "没有链接到脚本"); //} catch (ArgumentException a) { success = false; stackframe.throwAneException(token,a.Message); } catch (IndexOutOfRangeException i) { success = false; stackframe.throwAneException(token,i.Message); } }
public static RunTimeValueBase getDefaultParameterValue(RunTimeDataType dt,RunTimeValueBase dv) { if (dv.rtType != dt && dt != RunTimeDataType.rt_void) { if (dt == RunTimeDataType.rt_int) { _cachertint.value = TypeConverter.ConvertToInt(dv); dv = _cachertint; //dv = new ASBinCode.rtData.rtInt(TypeConverter.ConvertToInt(dv, null, null)); } else if (dt == RunTimeDataType.rt_uint) { _cachertuint.value = TypeConverter.ConvertToUInt(dv,null,null); dv = _cachertuint; //dv = new ASBinCode.rtData.rtUInt(TypeConverter.ConvertToUInt(dv, null, null)); } else if (dt == RunTimeDataType.rt_number) { _cachertnumber.value = TypeConverter.ConvertToNumber(dv); dv = _cachertnumber; //dv = new ASBinCode.rtData.rtNumber(TypeConverter.ConvertToNumber(dv)); } else if (dt == RunTimeDataType.rt_string) { dv = new ASBinCode.rtData.rtString(TypeConverter.ConvertToString(dv,null,null)); } else if (dt == RunTimeDataType.rt_boolean) { dv = TypeConverter.ConvertToBoolean(dv,null,null); } } return(dv); }
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); } }
private bool doPushNativeModeConstParameter(RunTimeValueBase argement,int id,out bool success) { if (toCallFunc.isNative) { //if (toCallFunc.native_index < 0) //{ // toCallFunc.native_index = player.swc.nativefunctionNameIndex[toCallFunc.native_name]; //} //var nf = player.swc.nativefunctions[toCallFunc.native_index]; var nf = player.swc.getNativeFunction(toCallFunc); if (nf.mode == NativeFunctionBase.NativeFunctionMode.const_parameter_0) { pushParameterNativeModeConstParameter( (nativefuncs.NativeConstParameterFunction)nf, argement, id, out success ); return(true); } } success = false; return(false); }
private static void objcreated(BlockCallBackBase sender, object args) { var vector = ((StackFrame)sender.args).instanceCreator.objectResult; StackFrame frame = (StackFrame)sender.args; sender.step.reg.getSlot(sender.scope, frame).directSet( vector); var step = sender.step; RunTimeScope scope = sender.scope; RunTimeValueBase initdata = step.arg2.getValue(scope, frame); if (initdata.rtType == RunTimeDataType.rt_array) { _pusharray( (ASBinCode.rtti.Vector_Data)((ASBinCode.rtti.HostedObject)((rtObjectBase)vector).value).hosted_object, frame, step, scope ); } else { _pushVector( (ASBinCode.rtti.Vector_Data)((ASBinCode.rtti.HostedObject)((rtObjectBase)vector).value).hosted_object , frame, step, scope); } }