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

◆ VisitIntersection()

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

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

Definition at line 662 of file XmlILOptimizerVisitor.cs.

663 {
666 if (this[XmlILOptimization.FoldNone] && (object)qilNode.XmlType == XmlQueryTypeFactory.None && AllowReplace(XmlILOptimization.FoldNone, local0))
667 {
668 return Replace(XmlILOptimization.FoldNone, local0, VisitNop(f.Nop(qilNode)));
669 }
670 if (this[XmlILOptimization.FoldNone] && (object)qilNode2.XmlType == XmlQueryTypeFactory.None && AllowReplace(XmlILOptimization.FoldNone, local0))
671 {
673 }
674 if (this[XmlILOptimization.EliminateIntersection] && qilNode2 == qilNode && AllowReplace(XmlILOptimization.EliminateIntersection, local0))
675 {
677 }
678 if (this[XmlILOptimization.EliminateIntersection] && qilNode.NodeType == QilNodeType.Sequence && qilNode.Count == 0 && AllowReplace(XmlILOptimization.EliminateIntersection, local0))
679 {
680 return Replace(XmlILOptimization.EliminateIntersection, local0, qilNode);
681 }
682 if (this[XmlILOptimization.EliminateIntersection] && qilNode2.NodeType == QilNodeType.Sequence && qilNode2.Count == 0 && AllowReplace(XmlILOptimization.EliminateIntersection, local0))
683 {
684 return Replace(XmlILOptimization.EliminateIntersection, local0, qilNode2);
685 }
686 if (this[XmlILOptimization.EliminateIntersection] && qilNode.NodeType == QilNodeType.XmlContext && qilNode2.NodeType == QilNodeType.XmlContext && AllowReplace(XmlILOptimization.EliminateIntersection, local0))
687 {
688 return Replace(XmlILOptimization.EliminateIntersection, local0, qilNode);
689 }
690 if (this[XmlILOptimization.NormalizeIntersect] && (!IsDocOrderDistinct(qilNode) || !IsDocOrderDistinct(qilNode2)) && AllowReplace(XmlILOptimization.NormalizeIntersect, local0))
691 {
693 }
694 if (this[XmlILOptimization.AnnotateIntersect] && AllowReplace(XmlILOptimization.AnnotateIntersect, local0))
695 {
696 OptimizerPatterns.Write(local0).AddPattern(OptimizerPatternName.IsDocOrderDistinct);
697 }
698 return NoReplace(local0);
699 }
bool AllowReplace(XmlILOptimization pattern, QilNode original)
override QilNode VisitIntersection(QilBinary local0)
override QilNode VisitNop(QilUnary local0)
override QilNode VisitDocOrderDistinct(QilUnary local0)
QilBinary Intersection(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.DocOrderDistinct(), System.Xml.Xsl.Qil.QilReplaceVisitor.f, System.Xml.Xsl.Qil.QilFactory.Intersection(), 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.IlGen.XmlILOptimizerVisitor.VisitDocOrderDistinct(), System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitIntersection(), System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitNop(), and System.Xml.Xsl.IlGen.OptimizerPatterns.Write().

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