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

◆ VisitStrConcat()

override QilNode System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitStrConcat ( QilStrConcat local0)
inlineprotectedvirtual

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

Definition at line 959 of file XmlILOptimizerVisitor.cs.

960 {
963 if (this[XmlILOptimization.FoldNone] && (object)qilNode.XmlType == XmlQueryTypeFactory.None && AllowReplace(XmlILOptimization.FoldNone, local0))
964 {
965 return Replace(XmlILOptimization.FoldNone, local0, VisitNop(f.Nop(qilNode)));
966 }
967 if (this[XmlILOptimization.FoldNone] && (object)qilNode2.XmlType == XmlQueryTypeFactory.None && AllowReplace(XmlILOptimization.FoldNone, local0))
968 {
970 }
971 if (qilNode2.XmlType.IsSingleton && this[XmlILOptimization.EliminateStrConcatSingle] && AllowReplace(XmlILOptimization.EliminateStrConcatSingle, local0))
972 {
973 return Replace(XmlILOptimization.EliminateStrConcatSingle, local0, VisitNop(f.Nop(qilNode2)));
974 }
975 if (this[XmlILOptimization.EliminateStrConcat] && qilNode.NodeType == QilNodeType.LiteralString)
976 {
977 string delimiter = (string)((QilLiteral)qilNode).Value;
978 if (qilNode2.NodeType == QilNodeType.Sequence && AreLiteralArgs(qilNode2) && AllowReplace(XmlILOptimization.EliminateStrConcat, local0))
979 {
982 foreach (QilLiteral item in qilNode2)
983 {
984 stringConcat.Concat(item);
985 }
986 return Replace(XmlILOptimization.EliminateStrConcat, local0, VisitLiteralString(f.LiteralString(stringConcat.GetResult())));
987 }
988 }
989 return NoReplace(local0);
990 }
bool AllowReplace(XmlILOptimization pattern, QilNode original)
override QilNode VisitNop(QilUnary local0)
QilLiteral LiteralString(string value)
QilUnary Nop(QilNode child)
override QilNode VisitLiteralString(QilLiteral n)

References System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.AllowReplace(), System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.AreLiteralArgs(), System.Xml.Dictionary, System.Xml.Xsl.Qil.QilReplaceVisitor.f, System.item, System.Xml.Xsl.Qil.QilFactory.LiteralString(), System.Xml.Xsl.XmlQueryTypeFactory.None, System.Xml.Xsl.Qil.QilFactory.Nop(), System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.NoReplace(), System.Xml.Replace, System.Xml.Xsl.Qil.QilPatternVisitor.VisitLiteralString(), and System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitNop().