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

◆ VisitXsltConvert()

override QilNode System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitXsltConvert ( QilTargetType local0)
inlineprotectedvirtual

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

Definition at line 2762 of file XmlILOptimizerVisitor.cs.

2763 {
2764 QilNode qilNode = local0[0];
2765 QilNode qilNode2 = local0[1];
2766 if (this[XmlILOptimization.FoldNone] && (object)qilNode.XmlType == XmlQueryTypeFactory.None && AllowReplace(XmlILOptimization.FoldNone, local0))
2767 {
2768 return Replace(XmlILOptimization.FoldNone, local0, VisitNop(f.Nop(qilNode)));
2769 }
2770 if (this[XmlILOptimization.FoldXsltConvertLiteral] && IsLiteral(qilNode) && qilNode2.NodeType == QilNodeType.LiteralType)
2771 {
2772 XmlQueryType typTarget = (XmlQueryType)((QilLiteral)qilNode2).Value;
2773 if (CanFoldXsltConvert(qilNode, typTarget) && AllowReplace(XmlILOptimization.FoldXsltConvertLiteral, local0))
2774 {
2775 return Replace(XmlILOptimization.FoldXsltConvertLiteral, local0, FoldXsltConvert(qilNode, typTarget));
2776 }
2777 }
2778 if (this[XmlILOptimization.EliminateXsltConvert] && qilNode2.NodeType == QilNodeType.LiteralType)
2779 {
2780 XmlQueryType xmlQueryType = (XmlQueryType)((QilLiteral)qilNode2).Value;
2781 if (qilNode.XmlType == xmlQueryType && AllowReplace(XmlILOptimization.EliminateXsltConvert, local0))
2782 {
2783 return Replace(XmlILOptimization.EliminateXsltConvert, local0, qilNode);
2784 }
2785 }
2786 return NoReplace(local0);
2787 }
bool CanFoldXsltConvert(QilNode ndLiteral, XmlQueryType typTarget)
bool AllowReplace(XmlILOptimization pattern, QilNode original)
QilNode FoldXsltConvert(QilNode ndLiteral, XmlQueryType typTarget)
override QilNode VisitNop(QilUnary local0)
QilUnary Nop(QilNode child)

References System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.AllowReplace(), System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.CanFoldXsltConvert(), System.Xml.Dictionary, System.Xml.Xsl.Qil.QilReplaceVisitor.f, System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.FoldXsltConvert(), System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.IsLiteral(), System.Xml.Xsl.XmlQueryTypeFactory.None, System.Xml.Xsl.Qil.QilFactory.Nop(), System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.NoReplace(), System.Xml.Replace, and System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitNop().