public bool loadRunner(IRTSRunner cal) { if (cal == null) { return(false); } if (cal.isConst()) { mOutput = cal.getOutput(); return(false); } int len = mRunners.length(); if (len >= mStackSize) { return(false); } mRunners.add(cal); IRTSDefine.Stack sco = cal.applyStack(); if ((sco & IRTSDefine.Stack.ACTION_RETURN) != 0) { IRTSStack scope = mStack.makeChild(len); if (scope != null) { mStack = scope; } } cal.loadedOnThread(); return(true); }
public bool onReturnAndSkip(IRTSDefine.Stack returnTppe, object value) { if (returnTppe == IRTSDefine.Stack.ACTION_CONTINUE) { mCur = 2; return(false); } else { return(true); } }
public void run(IRTSEngine engine) { mTicks = System.DateTime.Now.Ticks; int len = mRunners.length(); if (len > 0) { mEngine = engine; while (mStack.getId() >= len) { mStack.onRemoved(); mStack = mStack.getSuper(); } IRTSRunner cal = mRunners.getLast(); IRTSDefine.Stack ret = cal.run(mStack); mOutput = cal.getOutput(); if (ret != IRTSDefine.Stack.ACTION_HOLD) { if (ret != 0) { int off = mRunners.length(); for (int i = off - 1; i >= 0; i--) { if ((mRunners.get(i).applyStack() & ret) != 0) { break; } off = i; } mRunners.removeFrom(off); IRTSRunner cal2 = mRunners.getLast(); if (cal2 != null && cal2.onReturnAndSkip(ret, mOutput)) { mRunners.removeLast(); } } else if (len == mRunners.length()) { mRunners.removeLast(); } } mEngine = null; len = mRunners.length(); while (mStack.getId() >= len) { mStack.onRemoved(); mStack = (RTSStack)mStack.getSuper(); } } }
public RTSStackActL(IRTSDefine.Stack type) : base(IRTSDefine.Linker.STACK_ACT) { mType = type; }
public bool onReturnAndSkip(IRTSDefine.Stack returnTppe, object value) { return(true); }
public RTSStackActR(IRTSDefine.Stack type, IRTSLinker child) { mType = type; mChildL = child; }