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

◆ VisitUnion()

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

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

Definition at line 618 of file XmlILOptimizerVisitor.cs.

619 {
622 if (this[XmlILOptimization.FoldNone] && (object)qilNode.XmlType == XmlQueryTypeFactory.None && AllowReplace(XmlILOptimization.FoldNone, local0))
623 {
624 return Replace(XmlILOptimization.FoldNone, local0, VisitNop(f.Nop(qilNode)));
625 }
626 if (this[XmlILOptimization.FoldNone] && (object)qilNode2.XmlType == XmlQueryTypeFactory.None && AllowReplace(XmlILOptimization.FoldNone, local0))
627 {
629 }
630 if (this[XmlILOptimization.EliminateUnion] && qilNode2 == qilNode && AllowReplace(XmlILOptimization.EliminateUnion, local0))
631 {
633 }
634 if (this[XmlILOptimization.EliminateUnion] && qilNode.NodeType == QilNodeType.Sequence && qilNode.Count == 0 && AllowReplace(XmlILOptimization.EliminateUnion, local0))
635 {
637 }
638 if (this[XmlILOptimization.EliminateUnion] && qilNode2.NodeType == QilNodeType.Sequence && qilNode2.Count == 0 && AllowReplace(XmlILOptimization.EliminateUnion, local0))
639 {
641 }
642 if (this[XmlILOptimization.EliminateUnion] && qilNode.NodeType == QilNodeType.XmlContext && qilNode2.NodeType == QilNodeType.XmlContext && AllowReplace(XmlILOptimization.EliminateUnion, local0))
643 {
644 return Replace(XmlILOptimization.EliminateUnion, local0, qilNode);
645 }
646 if (this[XmlILOptimization.NormalizeUnion] && (!IsDocOrderDistinct(qilNode) || !IsDocOrderDistinct(qilNode2)) && AllowReplace(XmlILOptimization.NormalizeUnion, local0))
647 {
649 }
650 if (this[XmlILOptimization.AnnotateUnion] && AllowReplace(XmlILOptimization.AnnotateUnion, local0))
651 {
652 OptimizerPatterns.Write(local0).AddPattern(OptimizerPatternName.IsDocOrderDistinct);
653 }
654 if (this[XmlILOptimization.AnnotateUnionContent] && (IsStepPattern(qilNode, QilNodeType.Content) || IsStepPattern(qilNode, QilNodeType.Union)) && (IsStepPattern(qilNode2, QilNodeType.Content) || IsStepPattern(qilNode2, QilNodeType.Union)) && OptimizerPatterns.Read(qilNode).GetArgument(OptimizerPatternArgument.StepInput) == OptimizerPatterns.Read(qilNode2).GetArgument(OptimizerPatternArgument.StepInput) && AllowReplace(XmlILOptimization.AnnotateUnionContent, local0))
655 {
656 AddStepPattern(local0, (QilNode)OptimizerPatterns.Read(qilNode).GetArgument(OptimizerPatternArgument.StepInput));
657 OptimizerPatterns.Write(local0).AddPattern(OptimizerPatternName.SameDepth);
658 }
659 return NoReplace(local0);
660 }
override QilNode VisitUnion(QilBinary local0)
bool AllowReplace(XmlILOptimization pattern, QilNode original)
bool IsStepPattern(QilNode nd, QilNodeType stepType)
override QilNode VisitNop(QilUnary local0)
override QilNode VisitDocOrderDistinct(QilUnary local0)
QilBinary Union(QilNode left, QilNode right)
QilUnary Nop(QilNode child)
QilUnary DocOrderDistinct(QilNode child)

References System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.AddStepPattern(), 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.IlGen.IsDocOrderDistinct, System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.IsStepPattern(), System.Xml.Xsl.XmlQueryTypeFactory.None, System.Xml.Xsl.Qil.QilFactory.Nop(), System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.NoReplace(), System.Xml.Xsl.IlGen.OptimizerPatterns.Read(), System.Xml.Replace, System.Xml.Xsl.Qil.QilFactory.Union(), System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitDocOrderDistinct(), System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitNop(), System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitUnion(), and System.Xml.Xsl.IlGen.OptimizerPatterns.Write().

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