public bool evaluate(IRTSStack stack, object value) { object obj = mVarR == null ? null : mVarR.getOutput(); object index = mIndexR == null ? null : mIndexR.getOutput(); if (obj == null) { return(false); } else if (index is int && obj is System.Collections.IList) { int n = RTSInteger.valueOf(index); ((System.Collections.IList)obj)[n] = value; mValue = value; return(true); } else if (index != null) { var eng = stack.getThread().getEngine(); var type = eng.getRTSType(obj.GetType()); mValue = type.setProperty(eng, obj, RTSString.stringOf(index), value); return(true); } else { return(false); } }
protected object mk_list(object[] args) { int n = RTSInteger.valueOf(args[0]); if (n <= 0) { ((IRTSLog)this).logError("mk_list 方法的参数必须是 大于0 的整数"); return(null); } return(new object[n]);// RTSarray(n); }
protected object toUint(object[] args) { if (args[0] is string) { return(uint.Parse(args[0].ToString())); } else if (args[0] is uint) { return(args[0]); } else { return((uint)RTSInteger.valueOf(args[0])); } }
protected object toInt(object[] args) { if (args[0] is string) { return(int.Parse((string)args[0])); } else if (args[0] is uint) { return((int)(uint)args[0]); } else { return(RTSInteger.valueOf(args[0])); } }
public bool evaluate(IRTSStack stack, object value) { object obj = mVarR == null ? null : mVarR.getOutput(); object index = mIndexR == null ? null : mIndexR.getOutput(); int n = RTSInteger.valueOf(index); if (obj != null && obj is System.Collections.IList) { ((System.Collections.IList)obj)[n] = value; mValue = value; return(true); } else { return(false); } }
object setValue(object[] args) { int pid = RTSInteger.valueOf(args[0]); if (mThreads != null && pid >= 0 && pid < mThreads.Length) { RTSThread t = mThreads[pid]; if (t == null) { return(false); } IRTSStack stack = t.getStack(); if (stack == null) { return(false); } stack.addVar(RTSString.stringOf(args[1]), args[2]); return(true); } return(false); }
protected object rtsInterrupt(object[] args) { mThreads[RTSInteger.valueOf(args[0])].Interrupt(); return(RTSVoid.VOID); }
public object aliasFunction(object[] args) { mEngine.aliasFunction(RTSString.stringOf(args[0]), RTSInteger.valueOf(args[1]), RTSString.stringOf(args[2])); return(RTSVoid.VOID); }
public IRTSDefine.Stack run(IRTSStack stack) { if (!mVarLoaded) { mVarLoaded = true; mVarR = mVar == null ? null : mVar.createRunner(); if (stack.getThread().loadRunner(mVarR)) { return(0); } } if (!mIndexLoaded) { mIndexLoaded = true; mIndexR = mIndex == null ? null : mIndex.createRunner(); if (stack.getThread().loadRunner(mIndexR)) { return(0); } } while (mArray != null && mListCur < mArray.length()) { IRTSLinker l = mArray.get(mListCur); mArrayR[mListCur] = l == null ? null : l.createRunner(); if (stack.getThread().loadRunner(mArrayR[mListCur++])) { return(0); } } if (mArrayR != null) { //org.vr.rts.typedef.RTSarray arr = new org.vr.rts.typedef.RTSarray(mArrayR.Length); object[] arr = new object[mArrayR.Length]; for (int i = 0; i < mArrayR.Length; i++) { object v = mArrayR[i] == null ? null : mArrayR[i].getOutput(); //arr.set(i, v); arr[i] = v; } mValue = arr; } else if (mVarR == null) { mValue = new object[0]; } else { object obj = mVarR.getOutput(); object index = mIndexR == null ? null : mIndexR.getOutput(); if (obj == null) { mValue = null; } else if (index is string) { var eng = stack.getThread().getEngine(); IRTSType tp = eng.getRTSType(obj.GetType()); mValue = tp.getProperty(eng, obj, RTSString.stringOf(index)); } else if (obj is System.Collections.IList) { int n = RTSInteger.valueOf(index); mValue = ((System.Collections.IList)obj)[n]; } else { int n = RTSInteger.valueOf(index); mValue = n == 0 ? obj : null; } mOutput = mValue as IRTSRunner; if (stack.getThread().loadRunner(mOutput)) { return(0); } } if (mOutput != null) { mValue = mOutput.getOutput(); mOutput = mValue as IRTSRunner; if (stack.getThread().loadRunner(mOutput)) { return(0); } } return(0); }