public override Object PerformOperation(Executer exec, Operator op, Object otherTerm) { if (op == null) { return(this); } if (op.InternalTokens == ".") { object oUnboxed = null; oUnboxed = this.Evaluate(exec).GetUnboxed(exec); if (otherTerm.GetType() == typeof(Method)) { Method func = (Method)otherTerm; func.BelongsToObject = oUnboxed; return(func.Evaluate(exec)); } if (otherTerm.GetType() == typeof(Variable)) { Variable var = (Variable)otherTerm; var.BelongsToObject = oUnboxed; var.EvaluateToWrapper(exec); return(var); } return(null); } if (op.IsSettingOperator) { this.EvaluateToWrapper(exec); if (!op.IsBinary) { //TODO: ++ and -- operators return(this); } Object oNewVal = otherTerm.Evaluate(exec); if (op.InternalTokens != "=") { //for other than "=", we need to know the current value string sSubOp = op.InternalTokens.Substring(0, 1); Operator subOp = Parser.GetOperator(sSubOp); this.PerformOperation(exec, op, oNewVal); oNewVal = this; } this.ValueWrapper.Value = oNewVal.GetUnboxed(exec); return(oNewVal); } Object oEvaluated = this.Evaluate(exec); return(oEvaluated.PerformOperation(exec, op, otherTerm)); }
public override Object PerformOperation(Executer exec, Operator op, Object otherTerm) { if (op == null) return this; if (op.InternalTokens == ".") { object oUnboxed = null; oUnboxed = this.Evaluate(exec).GetUnboxed(exec); if (otherTerm.GetType() == typeof(Method)) { Method func = (Method)otherTerm; func.BelongsToObject = oUnboxed; return func.Evaluate(exec); } if (otherTerm.GetType() == typeof(Variable)) { Variable var = (Variable)otherTerm; var.BelongsToObject = oUnboxed; var.EvaluateToWrapper(exec); return var; } return null; } if (op.IsSettingOperator) { this.EvaluateToWrapper(exec); if (!op.IsBinary) { //TODO: ++ and -- operators return this; } Object oNewVal = otherTerm.Evaluate(exec); if (op.InternalTokens!="=") { //for other than "=", we need to know the current value string sSubOp = op.InternalTokens.Substring(0,1); Operator subOp = Parser.GetOperator(sSubOp); this.PerformOperation(exec, op, oNewVal); oNewVal = this; } this.ValueWrapper.Value = oNewVal.GetUnboxed(exec); return oNewVal; } Object oEvaluated = this.Evaluate(exec); return oEvaluated.PerformOperation(exec, op, otherTerm); }