Merge pull request #439 from mono-soc-2012/garyb/iconfix
[mono.git] / mcs / class / Mono.CodeContracts / Mono.CodeContracts.Static.AST / BinaryOperator.cs
index 1b3a9f03ad0cd14ed03055b2192dfba9a8693dfe..8277eacf12fa9a750d00d1fd0325d134043d12cf 100644 (file)
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 // 
 
+using System;
+
+using Mono.CodeContracts.Static.Analysis.Numerical;
+
 namespace Mono.CodeContracts.Static.AST {
        enum BinaryOperator {
                Add,
@@ -61,4 +65,48 @@ namespace Mono.CodeContracts.Static.AST {
                Sub_Ovf_Un,
                Xor
        }
+
+        static class BinaryOperatorExtensions {
+                public static ExpressionOperator ToExpressionOperator(this BinaryOperator op)
+                {
+                        switch (op) {
+                                case BinaryOperator.Add:
+                                        return ExpressionOperator.Add;
+                                case BinaryOperator.And:
+                                        return ExpressionOperator.And;
+                                case BinaryOperator.Ceq:
+                                        return ExpressionOperator.Equal;
+                                case BinaryOperator.Cobjeq:
+                                        return ExpressionOperator.Equal_Obj;
+                                case BinaryOperator.Cne_Un:
+                                        return ExpressionOperator.NotEqual;
+                                case BinaryOperator.Cge:
+                                        return ExpressionOperator.GreaterEqualThan;
+                                case BinaryOperator.Cgt:
+                                        return ExpressionOperator.GreaterThan;
+                                case BinaryOperator.Cle:
+                                        return ExpressionOperator.LessEqualThan;
+                                case BinaryOperator.Clt:
+                                        return ExpressionOperator.LessThan;
+                                case BinaryOperator.Div:
+                                        return ExpressionOperator.Div;
+                                case BinaryOperator.LogicalAnd:
+                                        return ExpressionOperator.LogicalAnd;
+                                case BinaryOperator.LogicalOr:
+                                        return ExpressionOperator.LogicalOr;
+                                case BinaryOperator.Mul:
+                                        return ExpressionOperator.Mult;
+                                case BinaryOperator.Or:
+                                        return ExpressionOperator.Or;
+                                case BinaryOperator.Rem:
+                                        return ExpressionOperator.Mod;
+                                case BinaryOperator.Sub:
+                                        return ExpressionOperator.Sub;
+                                case BinaryOperator.Xor:
+                                        return ExpressionOperator.Xor;
+                                default:
+                                        return ExpressionOperator.Unknown;
+                        }
+                }
+        }
 }