Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ FoldComparison()

QilNode System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.FoldComparison ( QilNodeType opType,
QilNode left,
QilNode right )
inlineprivate

Definition at line 3062 of file XmlILOptimizerVisitor.cs.

3063 {
3064 object obj = ExtractLiteralValue(left);
3065 object obj2 = ExtractLiteralValue(right);
3066 if (left.NodeType == QilNodeType.LiteralDouble && (double.IsNaN((double)obj) || double.IsNaN((double)obj2)))
3067 {
3068 if (opType != QilNodeType.Ne)
3069 {
3070 return f.False();
3071 }
3072 return f.True();
3073 }
3074 switch (opType)
3075 {
3076 case QilNodeType.Eq:
3077 if (!obj.Equals(obj2))
3078 {
3079 return f.False();
3080 }
3081 return f.True();
3082 case QilNodeType.Ne:
3083 if (!obj.Equals(obj2))
3084 {
3085 return f.True();
3086 }
3087 return f.False();
3088 default:
3089 {
3090 int num = ((left.NodeType != QilNodeType.LiteralString) ? ((IComparable)obj).CompareTo(obj2) : string.CompareOrdinal((string)obj, (string)obj2));
3091 switch (opType)
3092 {
3093 case QilNodeType.Gt:
3094 if (num <= 0)
3095 {
3096 return f.False();
3097 }
3098 return f.True();
3099 case QilNodeType.Ge:
3100 if (num < 0)
3101 {
3102 return f.False();
3103 }
3104 return f.True();
3105 case QilNodeType.Lt:
3106 if (num >= 0)
3107 {
3108 return f.False();
3109 }
3110 return f.True();
3111 case QilNodeType.Le:
3112 if (num > 0)
3113 {
3114 return f.False();
3115 }
3116 return f.True();
3117 default:
3118 return null;
3119 }
3120 }
3121 }
3122 }

References System.Xml.Dictionary, System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.ExtractLiteralValue(), System.Xml.Xsl.Qil.QilReplaceVisitor.f, System.Xml.Xsl.Qil.QilFactory.False(), System.Xml.Xsl.Qil.QilNode.NodeType, System.obj, and System.Xml.Xsl.Qil.QilFactory.True().

Referenced by System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitEq(), System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitGe(), System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitGt(), System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitLe(), System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitLt(), and System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitNe().