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

◆ VisitDifference()

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

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

Definition at line 701 of file XmlILOptimizerVisitor.cs.

702 {
705 if (this[XmlILOptimization.FoldNone] && (object)qilNode.XmlType == XmlQueryTypeFactory.None && AllowReplace(XmlILOptimization.FoldNone, local0))
706 {
707 return Replace(XmlILOptimization.FoldNone, local0, VisitNop(f.Nop(qilNode)));
708 }
709 if (this[XmlILOptimization.FoldNone] && (object)qilNode2.XmlType == XmlQueryTypeFactory.None && AllowReplace(XmlILOptimization.FoldNone, local0))
710 {
712 }
713 if (this[XmlILOptimization.EliminateDifference] && qilNode.NodeType == QilNodeType.Sequence && qilNode.Count == 0 && AllowReplace(XmlILOptimization.EliminateDifference, local0))
714 {
715 return Replace(XmlILOptimization.EliminateDifference, local0, qilNode);
716 }
717 if (this[XmlILOptimization.EliminateDifference] && qilNode2.NodeType == QilNodeType.Sequence && qilNode2.Count == 0 && AllowReplace(XmlILOptimization.EliminateDifference, local0))
718 {
720 }
721 if (this[XmlILOptimization.EliminateDifference] && qilNode2 == qilNode && AllowReplace(XmlILOptimization.EliminateDifference, local0))
722 {
723 return Replace(XmlILOptimization.EliminateDifference, local0, VisitSequence(f.Sequence()));
724 }
725 if (this[XmlILOptimization.EliminateDifference] && qilNode.NodeType == QilNodeType.XmlContext && qilNode2.NodeType == QilNodeType.XmlContext && AllowReplace(XmlILOptimization.EliminateDifference, local0))
726 {
727 return Replace(XmlILOptimization.EliminateDifference, local0, VisitSequence(f.Sequence()));
728 }
729 if (this[XmlILOptimization.NormalizeDifference] && (!IsDocOrderDistinct(qilNode) || !IsDocOrderDistinct(qilNode2)) && AllowReplace(XmlILOptimization.NormalizeDifference, local0))
730 {
732 }
733 if (this[XmlILOptimization.AnnotateDifference] && AllowReplace(XmlILOptimization.AnnotateDifference, local0))
734 {
735 OptimizerPatterns.Write(local0).AddPattern(OptimizerPatternName.IsDocOrderDistinct);
736 }
737 return NoReplace(local0);
738 }
bool AllowReplace(XmlILOptimization pattern, QilNode original)
override QilNode VisitNop(QilUnary local0)
override QilNode VisitDocOrderDistinct(QilUnary local0)
override QilNode VisitDifference(QilBinary local0)
override QilNode VisitSequence(QilList local0)
QilList Sequence(IList< QilNode > values)
Definition QilFactory.cs:44
QilBinary Difference(QilNode left, QilNode right)
QilUnary Nop(QilNode child)
QilUnary DocOrderDistinct(QilNode child)

References System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.AllowReplace(), System.Collections.Generic.Dictionary< TKey, TValue >.Count, System.Xml.Xsl.Qil.QilFactory.Difference(), System.Xml.Xsl.Qil.QilFactory.DocOrderDistinct(), System.Xml.Xsl.Qil.QilReplaceVisitor.f, System.Xml.Xsl.IlGen.IsDocOrderDistinct, System.Xml.Xsl.XmlQueryTypeFactory.None, System.Xml.Xsl.Qil.QilFactory.Nop(), System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.NoReplace(), System.Xml.Replace, System.Xml.Xsl.Qil.QilFactory.Sequence(), System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitDifference(), System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitDocOrderDistinct(), System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitNop(), System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitSequence(), and System.Xml.Xsl.IlGen.OptimizerPatterns.Write().

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