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

◆ Compare()

void System.Xml.Xsl.IlGen.XmlILVisitor.Compare ( QilBinary ndComp)
inlineprivate

Definition at line 1013 of file XmlILVisitor.cs.

1014 {
1015 QilNodeType nodeType = ndComp.NodeType;
1016 if ((nodeType == QilNodeType.Eq || nodeType == QilNodeType.Ne) && (TryZeroCompare(nodeType, ndComp.Left, ndComp.Right) || TryZeroCompare(nodeType, ndComp.Right, ndComp.Left) || TryNameCompare(nodeType, ndComp.Left, ndComp.Right) || TryNameCompare(nodeType, ndComp.Right, ndComp.Left)))
1017 {
1018 return;
1019 }
1021 XmlTypeCode typeCode = ndComp.Left.XmlType.TypeCode;
1022 switch (typeCode)
1023 {
1024 case XmlTypeCode.String:
1025 case XmlTypeCode.Decimal:
1026 case XmlTypeCode.QName:
1027 if (nodeType == QilNodeType.Eq || nodeType == QilNodeType.Ne)
1028 {
1029 _helper.CallCompareEquals(typeCode);
1030 ZeroCompare((nodeType == QilNodeType.Eq) ? QilNodeType.Ne : QilNodeType.Eq, isBoolVal: true);
1031 }
1032 else
1033 {
1034 _helper.CallCompare(typeCode);
1036 ClrCompare(nodeType, typeCode);
1037 }
1038 break;
1039 case XmlTypeCode.Boolean:
1040 case XmlTypeCode.Double:
1041 case XmlTypeCode.Integer:
1042 case XmlTypeCode.Int:
1043 ClrCompare(nodeType, typeCode);
1044 break;
1045 }
1046 }
static readonly OpCode Ldc_I4_0
Definition OpCodes.cs:49
void CallCompareEquals(XmlTypeCode code)
void ZeroCompare(QilNodeType relOp, bool isBoolVal)
bool TryZeroCompare(QilNodeType relOp, QilNode ndFirst, QilNode ndSecond)
bool TryNameCompare(QilNodeType relOp, QilNode ndFirst, QilNode ndSecond)
void ClrCompare(QilNodeType relOp, XmlTypeCode code)

References System.Xml.Xsl.IlGen.XmlILVisitor._helper, System.Xml.Xsl.IlGen.GenerateHelper.CallCompare(), System.Xml.Xsl.IlGen.GenerateHelper.CallCompareEquals(), System.Xml.Xsl.IlGen.XmlILVisitor.ClrCompare(), System.Xml.Dictionary, System.Xml.Xsl.IlGen.GenerateHelper.Emit(), System.Reflection.Emit.OpCodes.Ldc_I4_0, System.Xml.Xsl.IlGen.XmlILVisitor.NestedVisitEnsureStack(), System.Xml.Xsl.IlGen.XmlILVisitor.TryNameCompare(), System.Xml.Xsl.IlGen.XmlILVisitor.TryZeroCompare(), and System.Xml.Xsl.IlGen.XmlILVisitor.ZeroCompare().

Referenced by System.Xml.Xsl.IlGen.XmlILVisitor.VisitEq(), System.Xml.Xsl.IlGen.XmlILVisitor.VisitGe(), System.Xml.Xsl.IlGen.XmlILVisitor.VisitGt(), System.Xml.Xsl.IlGen.XmlILVisitor.VisitLe(), System.Xml.Xsl.IlGen.XmlILVisitor.VisitLt(), and System.Xml.Xsl.IlGen.XmlILVisitor.VisitNe().