public override ExecuteAction Execute(IExecutorContext context) { this.CurrentIndex++; if (this.CurrentIndex == 0) { this.SubVisitors[this.CurrentIndex] = context.CreateExecutor((ExprNode)this.Node.Operands[this.CurrentIndex]); context.Push(this.SubVisitors[this.CurrentIndex]); return(ExecuteAction.Continue); } else if (this.CurrentIndex == 1) { Result result = this.SubVisitors[0].Result; int resultIndex = -1; if ((bool)result.Value) { resultIndex = 1; } else { resultIndex = 2; } this.SubVisitors[1] = context.CreateExecutor((ExprNode)this.Node.Operands[resultIndex]); context.Push(this.SubVisitors[1]); return(ExecuteAction.Continue); } else { this.EndVisit(this.SubVisitors[1].Result); return(ExecuteAction.End); } }
public override ExecuteAction Execute(IExecutorContext context) { base.CurrentIndex++; if (base.CurrentIndex == 0) { base.SubVisitors[base.CurrentIndex] = context.CreateExecutor((ExprNode)base.Node.Operands[base.CurrentIndex]); context.Push(base.SubVisitors[base.CurrentIndex]); return(ExecuteAction.Continue); } if (base.CurrentIndex == 1) { Result result = base.SubVisitors[0].Result; int num = -1; if ((bool)result.Value) { num = 1; } else { num = 2; } base.SubVisitors[1] = context.CreateExecutor((ExprNode)base.Node.Operands[num]); context.Push(base.SubVisitors[1]); return(ExecuteAction.Continue); } base.EndVisit(base.SubVisitors[1].Result); return(ExecuteAction.End); }
public override ExecuteAction Execute(IExecutorContext context) { this.CurrentIndex++; if (this.CurrentIndex == 0) { this.SubVisitors[this.CurrentIndex] = context.CreateExecutor((ExprNode)this.Node.Operands[this.CurrentIndex]); context.Push(this.SubVisitors[this.CurrentIndex]); return ExecuteAction.Continue; } else if (this.CurrentIndex == 1) { Result result = this.SubVisitors[0].Result; int resultIndex = -1; if ((bool) ConvertHelper.ChangeType(result.Value, typeof(bool))) { resultIndex = 1; } else { resultIndex = 2; } this.SubVisitors[1] = context.CreateExecutor((ExprNode)this.Node.Operands[resultIndex]); context.Push(this.SubVisitors[1]); return ExecuteAction.Continue; } else { this.EndVisit(this.SubVisitors[1].Result); return ExecuteAction.End; } }
public virtual ExecuteAction Execute(IExecutorContext context) { _currentIndex++; if (_currentIndex == _node.OperandCount) { Result[] results = new Result[_node.OperandCount]; for (int i = 0; i < _node.OperandCount; i++) { results[i] = _subVisitors[i].Result; } this.EndVisit(_node.Expression.Eval((Evaluator)context, results)); return(ExecuteAction.End); } if (_currentIndex > _node.OperandCount) { throw new InvalidOperationException(); } ExprNode subNode = (ExprNode)_node.Operands[_currentIndex]; _subVisitors[_currentIndex] = context.CreateExecutor(subNode); context.Push(_subVisitors[_currentIndex]); return(ExecuteAction.Continue); }
public virtual ExecuteAction Execute(IExecutorContext context) { _currentIndex++; if (_currentIndex == _node.OperandCount) { Result[] results = new Result[_node.OperandCount]; for (int i = 0; i < _node.OperandCount; i++) results[i] = _subVisitors[i].Result; this.EndVisit(_node.Expression.Eval((Evaluator)context, results)); return ExecuteAction.End; } if (_currentIndex > _node.OperandCount) { throw new InvalidOperationException(); } ExprNode subNode = (ExprNode)_node.Operands[_currentIndex]; _subVisitors[_currentIndex] = context.CreateExecutor(subNode); context.Push(_subVisitors[_currentIndex]); return ExecuteAction.Continue; }
public virtual ExecuteAction Execute(IExecutorContext context) { this._currentIndex++; if (this._currentIndex == this._node.OperandCount) { OPCTrendLib.Result[] argArray = new OPCTrendLib.Result[this._node.OperandCount]; for (int i = 0; i < this._node.OperandCount; i++) { argArray[i] = this._subVisitors[i].Result; } this.EndVisit(this._node.Expression.Eval((Evaluator)context, argArray)); return(ExecuteAction.End); } if (this._currentIndex > this._node.OperandCount) { throw new InvalidOperationException(); } ExprNode node = (ExprNode)this._node.Operands[this._currentIndex]; this._subVisitors[this._currentIndex] = context.CreateExecutor(node); context.Push(this._subVisitors[this._currentIndex]); return(ExecuteAction.Continue); }