Browse Source

[Ast] CSharpUtil: extract negating a relational operator into a method

newNRvisualizers
Mansheng Yang 14 years ago
parent
commit
0b81174081
  1. 50
      ICSharpCode.NRefactory.CSharp/Ast/CSharpUtil.cs

50
ICSharpCode.NRefactory.CSharp/Ast/CSharpUtil.cs

@ -51,28 +51,11 @@ namespace ICSharpCode.NRefactory.CSharp
if (condition is BinaryOperatorExpression) { if (condition is BinaryOperatorExpression) {
var bOp = (BinaryOperatorExpression)condition; var bOp = (BinaryOperatorExpression)condition;
switch (bOp.Operator) { var negatedOp = NegateRelationalOperator (bOp.Operator);
case BinaryOperatorType.GreaterThan: if (negatedOp == BinaryOperatorType.Any)
bOp.Operator = BinaryOperatorType.LessThanOrEqual;
return bOp;
case BinaryOperatorType.GreaterThanOrEqual:
bOp.Operator = BinaryOperatorType.LessThan;
return bOp;
case BinaryOperatorType.Equality:
bOp.Operator = BinaryOperatorType.InEquality;
return bOp;
case BinaryOperatorType.InEquality:
bOp.Operator = BinaryOperatorType.Equality;
return bOp;
case BinaryOperatorType.LessThan:
bOp.Operator = BinaryOperatorType.GreaterThanOrEqual;
return bOp;
case BinaryOperatorType.LessThanOrEqual:
bOp.Operator = BinaryOperatorType.GreaterThan;
return bOp;
default:
return new UnaryOperatorExpression (UnaryOperatorType.Not, new ParenthesizedExpression (condition)); return new UnaryOperatorExpression (UnaryOperatorType.Not, new ParenthesizedExpression (condition));
} bOp.Operator = negatedOp;
return bOp;
} }
if (condition is ConditionalExpression) { if (condition is ConditionalExpression) {
var cEx = condition as ConditionalExpression; var cEx = condition as ConditionalExpression;
@ -88,6 +71,31 @@ namespace ICSharpCode.NRefactory.CSharp
return new UnaryOperatorExpression (UnaryOperatorType.Not, condition); return new UnaryOperatorExpression (UnaryOperatorType.Not, condition);
} }
/// <summary>
/// Get negation of the specified relational operator
/// </summary>
/// <returns>
/// negation of the specified relational operator, or BinaryOperatorType.Any if it's not a relational operator
/// </returns>
public static BinaryOperatorType NegateRelationalOperator (BinaryOperatorType op)
{
switch (op) {
case BinaryOperatorType.GreaterThan:
return BinaryOperatorType.LessThanOrEqual;
case BinaryOperatorType.GreaterThanOrEqual:
return BinaryOperatorType.LessThan;
case BinaryOperatorType.Equality:
return BinaryOperatorType.InEquality;
case BinaryOperatorType.InEquality:
return BinaryOperatorType.Equality;
case BinaryOperatorType.LessThan:
return BinaryOperatorType.GreaterThanOrEqual;
case BinaryOperatorType.LessThanOrEqual:
return BinaryOperatorType.GreaterThan;
}
return BinaryOperatorType.Any;
}
} }
} }

Loading…
Cancel
Save