Terraria v1.4.4.9
Terraria source code documentation
All Classes Namespaces Files Functions Variables Enumerations Enumerator Properties Events Macros

◆ VisitNe()

override QilNode System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitNe ( QilBinary local0)
inlineprotectedvirtual

Reimplemented from System.Xml.Xsl.Qil.QilVisitor.

Definition at line 1007 of file XmlILOptimizerVisitor.cs.

1008 {
1009 QilNode qilNode = local0[0];
1010 QilNode qilNode2 = local0[1];
1011 if (this[XmlILOptimization.FoldNone] && (object)qilNode.XmlType == XmlQueryTypeFactory.None && AllowReplace(XmlILOptimization.FoldNone, local0))
1012 {
1013 return Replace(XmlILOptimization.FoldNone, local0, VisitNop(f.Nop(qilNode)));
1014 }
1015 if (this[XmlILOptimization.FoldNone] && (object)qilNode2.XmlType == XmlQueryTypeFactory.None && AllowReplace(XmlILOptimization.FoldNone, local0))
1016 {
1017 return Replace(XmlILOptimization.FoldNone, local0, VisitNop(f.Nop(qilNode2)));
1018 }
1019 if (this[XmlILOptimization.EliminateNe] && IsLiteral(qilNode) && IsLiteral(qilNode2) && AllowReplace(XmlILOptimization.EliminateNe, local0))
1020 {
1022 }
1023 if (this[XmlILOptimization.NormalizeNeLiteral] && IsLiteral(qilNode) && !IsLiteral(qilNode2) && AllowReplace(XmlILOptimization.NormalizeNeLiteral, local0))
1024 {
1025 return Replace(XmlILOptimization.NormalizeNeLiteral, local0, VisitNe(f.Ne(qilNode2, qilNode)));
1026 }
1027 if (this[XmlILOptimization.NormalizeXsltConvertNe] && qilNode.NodeType == QilNodeType.XsltConvert)
1028 {
1031 if (qilNode4.NodeType == QilNodeType.LiteralType)
1032 {
1033 XmlQueryType typ = (XmlQueryType)((QilLiteral)qilNode4).Value;
1035 {
1036 return Replace(XmlILOptimization.NormalizeXsltConvertNe, local0, VisitNe(f.Ne(qilNode3, FoldXsltConvert(qilNode2, qilNode3.XmlType))));
1037 }
1038 }
1039 }
1040 if (this[XmlILOptimization.NormalizeIdNe] && qilNode.NodeType == QilNodeType.XsltGenerateId)
1041 {
1043 if (qilNode5.XmlType.IsSingleton && qilNode2.NodeType == QilNodeType.XsltGenerateId)
1044 {
1046 if (qilNode6.XmlType.IsSingleton && AllowReplace(XmlILOptimization.NormalizeIdNe, local0))
1047 {
1048 return Replace(XmlILOptimization.NormalizeIdNe, local0, VisitNot(f.Not(VisitIs(f.Is(qilNode5, qilNode6)))));
1049 }
1050 }
1051 }
1052 if (this[XmlILOptimization.NormalizeLengthNe] && qilNode.NodeType == QilNodeType.Length)
1053 {
1054 QilNode child = qilNode[0];
1055 if (qilNode2.NodeType == QilNodeType.LiteralInt32 && (int)((QilLiteral)qilNode2).Value == 0 && AllowReplace(XmlILOptimization.NormalizeLengthNe, local0))
1056 {
1057 return Replace(XmlILOptimization.NormalizeLengthNe, local0, VisitNot(f.Not(VisitIsEmpty(f.IsEmpty(child)))));
1058 }
1059 }
1060 if (this[XmlILOptimization.AnnotateMaxLengthNe] && qilNode.NodeType == QilNodeType.Length && qilNode2.NodeType == QilNodeType.LiteralInt32)
1061 {
1062 int num = (int)((QilLiteral)qilNode2).Value;
1063 if (AllowReplace(XmlILOptimization.AnnotateMaxLengthNe, local0))
1064 {
1065 OptimizerPatterns.Write(qilNode).AddPattern(OptimizerPatternName.MaxPosition);
1066 OptimizerPatterns.Write(qilNode).AddArgument(OptimizerPatternArgument.ElementQName, num);
1067 }
1068 }
1069 return NoReplace(local0);
1070 }
override QilNode VisitIsEmpty(QilUnary local0)
QilNode FoldComparison(QilNodeType opType, QilNode left, QilNode right)
override QilNode VisitNot(QilUnary local0)
bool AllowReplace(XmlILOptimization pattern, QilNode original)
bool CanFoldXsltConvertNonLossy(QilNode ndLiteral, XmlQueryType typTarget)
override QilNode VisitNe(QilBinary local0)
override QilNode VisitIs(QilBinary local0)
QilNode FoldXsltConvert(QilNode ndLiteral, XmlQueryType typTarget)
override QilNode VisitNop(QilUnary local0)
QilBinary Ne(QilNode left, QilNode right)
QilUnary IsEmpty(QilNode child)
QilUnary Nop(QilNode child)
QilUnary Not(QilNode child)
QilBinary Is(QilNode left, QilNode right)

References System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.AllowReplace(), System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.CanFoldXsltConvertNonLossy(), System.Xml.Dictionary, System.Xml.Xsl.Qil.QilReplaceVisitor.f, System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.FoldComparison(), System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.FoldXsltConvert(), System.Xml.Xsl.Qil.QilFactory.Is(), System.Xml.Xsl.Qil.QilFactory.IsEmpty(), System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.IsLiteral(), System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.IsPrimitiveNumeric(), System.Xml.Xsl.Qil.QilFactory.Ne(), System.Xml.Xsl.XmlQueryTypeFactory.None, System.Xml.Xsl.Qil.QilFactory.Nop(), System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.NoReplace(), System.Xml.Xsl.Qil.QilFactory.Not(), System.Xml.Replace, System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitIs(), System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitIsEmpty(), System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitNe(), System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitNop(), System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitNot(), and System.Xml.Xsl.IlGen.OptimizerPatterns.Write().

Referenced by System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitNe().