System.Xml.Xsl.IlGen.XmlILVisitor.VisitAnd C# (CSharp) Метод

VisitAnd() защищенный Метод

Generate code for QilNodeType.And.
BranchingContext.OnFalse context: (expr1) and (expr2) ==> if (!expr1) goto LabelParent; if (!expr2) goto LabelParent; BranchingContext.OnTrue context: (expr1) and (expr2) ==> if (!expr1) goto LabelTemp; if (expr1) goto LabelParent; LabelTemp: BranchingContext.None context: (expr1) and (expr2) ==> if (!expr1) goto LabelTemp; if (!expr1) goto LabelTemp; push true(); goto LabelSkip; LabelTemp: push false(); LabelSkip:
protected VisitAnd ( QilBinary ndAnd ) : QilNode
ndAnd System.Xml.Xsl.Qil.QilBinary
Результат QilNode
        protected override QilNode VisitAnd(QilBinary ndAnd) {
            IteratorDescriptor iterParent = this.iterCurr;
            Label lblOnFalse;

            // Visit left branch
            StartNestedIterator(ndAnd.Left);
            lblOnFalse = StartConjunctiveTests(iterParent.CurrentBranchingContext, iterParent.LabelBranch);
            Visit(ndAnd.Left);
            EndNestedIterator(ndAnd.Left);

            // Visit right branch
            StartNestedIterator(ndAnd.Right);
            StartLastConjunctiveTest(iterParent.CurrentBranchingContext, iterParent.LabelBranch, lblOnFalse);
            Visit(ndAnd.Right);
            EndNestedIterator(ndAnd.Right);

            // End And expression
            EndConjunctiveTests(iterParent.CurrentBranchingContext, iterParent.LabelBranch, lblOnFalse);

            return ndAnd;
        }
XmlILVisitor