System.Xml.Xsl.IlGen.XmlILVisitor.StartConjunctiveTests C# (CSharp) Method

StartConjunctiveTests() private method

Fixup branching context for all but the last test in a conjunctive (Logical And) expression. Return a temporary label which will be passed to StartLastAndBranch() and EndAndBranch().
private StartConjunctiveTests ( BranchingContext brctxt, Label lblBranch ) : Label
brctxt BranchingContext
lblBranch System.Reflection.Emit.Label
return System.Reflection.Emit.Label
        private Label StartConjunctiveTests(BranchingContext brctxt, Label lblBranch) {
            Label lblOnFalse;

            switch (brctxt) {
                case BranchingContext.OnFalse:
                    // If condition evaluates to false, branch to false label
                    this.iterCurr.SetBranching(BranchingContext.OnFalse, lblBranch);
                    return lblBranch;

                default:
                    // If condition evaluates to false:
                    //   1. Jump to new false label that will be fixed just beyond the second condition
                    //   2. Or, jump to code that pushes "false"
                    lblOnFalse = this.helper.DefineLabel();
                    this.iterCurr.SetBranching(BranchingContext.OnFalse, lblOnFalse);
                    return lblOnFalse;
            }
        }
XmlILVisitor