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

◆ VisitLength()

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

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

Definition at line 570 of file XmlILOptimizerVisitor.cs.

571 {
573 if (this[XmlILOptimization.FoldNone] && (object)qilNode.XmlType == XmlQueryTypeFactory.None && AllowReplace(XmlILOptimization.FoldNone, local0))
574 {
575 return Replace(XmlILOptimization.FoldNone, local0, VisitNop(f.Nop(qilNode)));
576 }
577 if (this[XmlILOptimization.EliminateLength] && qilNode.NodeType == QilNodeType.Sequence && qilNode.Count == 0 && AllowReplace(XmlILOptimization.EliminateLength, local0))
578 {
579 return Replace(XmlILOptimization.EliminateLength, local0, VisitLiteralInt32(f.LiteralInt32(0)));
580 }
581 if (this[XmlILOptimization.EliminateLength] && qilNode.XmlType.IsSingleton && !OptimizerPatterns.Read(qilNode).MatchesPattern(OptimizerPatternName.MaybeSideEffects) && AllowReplace(XmlILOptimization.EliminateLength, local0))
582 {
583 return Replace(XmlILOptimization.EliminateLength, local0, VisitLiteralInt32(f.LiteralInt32(1)));
584 }
585 if (this[XmlILOptimization.IntroducePrecedingDod] && !IsDocOrderDistinct(qilNode) && (IsStepPattern(qilNode, QilNodeType.XPathPreceding) || IsStepPattern(qilNode, QilNodeType.PrecedingSibling)) && AllowReplace(XmlILOptimization.IntroducePrecedingDod, local0))
586 {
588 }
589 return NoReplace(local0);
590 }
override QilNode VisitLength(QilUnary local0)
bool AllowReplace(XmlILOptimization pattern, QilNode original)
bool IsStepPattern(QilNode nd, QilNodeType stepType)
override QilNode VisitNop(QilUnary local0)
override QilNode VisitDocOrderDistinct(QilUnary local0)
QilUnary Length(QilNode child)
QilLiteral LiteralInt32(int value)
QilUnary Nop(QilNode child)
QilUnary DocOrderDistinct(QilNode child)
override QilNode VisitLiteralInt32(QilLiteral n)

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.IlGen.IsDocOrderDistinct, System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.IsStepPattern(), System.Xml.Xsl.Qil.QilFactory.Length(), System.Xml.Xsl.Qil.QilFactory.LiteralInt32(), 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.IlGen.XmlILOptimizerVisitor.VisitDocOrderDistinct(), System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitLength(), System.Xml.Xsl.Qil.QilPatternVisitor.VisitLiteralInt32(), and System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitNop().

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