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

◆ ComparePosition()

virtual XmlNodeOrder System.Xml.XPath.XPathNavigator.ComparePosition ( XPathNavigator? nav)
inlinevirtualinherited

Definition at line 1132 of file XPathNavigator.cs.

1133 {
1134 if (nav == null)
1135 {
1136 return XmlNodeOrder.Unknown;
1137 }
1138 if (IsSamePosition(nav))
1139 {
1140 return XmlNodeOrder.Same;
1141 }
1142 XPathNavigator xPathNavigator = Clone();
1143 XPathNavigator xPathNavigator2 = nav.Clone();
1144 int num = GetDepth(xPathNavigator.Clone());
1145 int num2 = GetDepth(xPathNavigator2.Clone());
1146 if (num > num2)
1147 {
1148 while (num > num2)
1149 {
1150 xPathNavigator.MoveToParent();
1151 num--;
1152 }
1153 if (xPathNavigator.IsSamePosition(xPathNavigator2))
1154 {
1155 return XmlNodeOrder.After;
1156 }
1157 }
1158 if (num2 > num)
1159 {
1160 while (num2 > num)
1161 {
1162 xPathNavigator2.MoveToParent();
1163 num2--;
1164 }
1165 if (xPathNavigator.IsSamePosition(xPathNavigator2))
1166 {
1167 return XmlNodeOrder.Before;
1168 }
1169 }
1170 XPathNavigator xPathNavigator3 = xPathNavigator.Clone();
1171 XPathNavigator xPathNavigator4 = xPathNavigator2.Clone();
1172 while (true)
1173 {
1174 if (!xPathNavigator3.MoveToParent() || !xPathNavigator4.MoveToParent())
1175 {
1176 return XmlNodeOrder.Unknown;
1177 }
1178 if (xPathNavigator3.IsSamePosition(xPathNavigator4))
1179 {
1180 break;
1181 }
1182 xPathNavigator.MoveToParent();
1183 xPathNavigator2.MoveToParent();
1184 }
1185 _ = xPathNavigator.GetType().ToString() != "Microsoft.VisualStudio.Modeling.StoreNavigator";
1187 }
bool IsSamePosition(XPathNavigator other)
static int GetDepth(XPathNavigator nav)
XmlNodeOrder CompareSiblings(XPathNavigator n1, XPathNavigator n2)

References System.Xml.XPath.XPathNavigator.Clone(), System.Xml.XPath.XPathNavigator.CompareSiblings(), System.Xml.XPath.XPathNavigator.GetDepth(), and System.Xml.XPath.XPathNavigator.IsSamePosition().

Referenced by System.Xml.Xsl.Runtime.ContentMergeIterator.DocOrderMerge(), System.Xml.Xsl.Runtime.PrecedingSiblingDocOrderIterator.MoveNext(), System.Xml.Xsl.Runtime.XPathFollowingMergeIterator.MoveNext(), and System.Xml.Xsl.Runtime.XPathPrecedingMergeIterator.MoveNext().