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

◆ VisitIsEmpty()

override QilNode System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitIsEmpty ( QilUnary local0)
inlineprotectedvirtual

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

Definition at line 2639 of file XmlILOptimizerVisitor.cs.

2640 {
2641 QilNode qilNode = local0[0];
2642 if (this[XmlILOptimization.FoldNone] && (object)qilNode.XmlType == XmlQueryTypeFactory.None && AllowReplace(XmlILOptimization.FoldNone, local0))
2643 {
2644 return Replace(XmlILOptimization.FoldNone, local0, VisitNop(f.Nop(qilNode)));
2645 }
2646 if (this[XmlILOptimization.EliminateIsEmpty] && qilNode.NodeType == QilNodeType.Sequence && qilNode.Count == 0 && AllowReplace(XmlILOptimization.EliminateIsEmpty, local0))
2647 {
2648 return Replace(XmlILOptimization.EliminateIsEmpty, local0, VisitTrue(f.True()));
2649 }
2650 if (this[XmlILOptimization.EliminateIsEmpty] && !qilNode.XmlType.MaybeEmpty && !OptimizerPatterns.Read(qilNode).MatchesPattern(OptimizerPatternName.MaybeSideEffects) && AllowReplace(XmlILOptimization.EliminateIsEmpty, local0))
2651 {
2652 return Replace(XmlILOptimization.EliminateIsEmpty, local0, VisitFalse(f.False()));
2653 }
2654 if (this[XmlILOptimization.EliminateIsEmpty] && !qilNode.XmlType.MaybeEmpty && AllowReplace(XmlILOptimization.EliminateIsEmpty, local0))
2655 {
2656 return Replace(XmlILOptimization.EliminateIsEmpty, local0, VisitLoop(f.Loop(VisitLet(f.Let(qilNode)), VisitFalse(f.False()))));
2657 }
2658 return NoReplace(local0);
2659 }
bool AllowReplace(XmlILOptimization pattern, QilNode original)
override QilNode VisitLet(QilIterator local0)
override QilNode VisitNop(QilUnary local0)
QilIterator Let(QilNode binding)
QilUnary Nop(QilNode child)
QilLoop Loop(QilNode variable, QilNode body)
override QilNode VisitFalse(QilNode n)
override QilNode VisitTrue(QilNode n)

References System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.AllowReplace(), System.Collections.Generic.Dictionary< TKey, TValue >.Count, System.Xml.Xsl.Qil.QilReplaceVisitor.f, System.Xml.Xsl.Qil.QilFactory.False(), System.Xml.Xsl.Qil.QilFactory.Let(), System.Xml.Xsl.Qil.QilFactory.Loop(), 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.True(), System.Xml.Xsl.Qil.QilPatternVisitor.VisitFalse(), System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitLet(), System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitLoop(), System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitNop(), and System.Xml.Xsl.Qil.QilPatternVisitor.VisitTrue().

Referenced by System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitEq(), System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitGt(), System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitIsType(), System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitNe(), and System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitTypeAssert().