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

CreateFilteredIterator() private method

Generate boiler-plate code to create an Xml iterator that uses an XmlNavigatorFilter to filter items.
Iterator iter; iter.Create(navCtxt, filter [, orSelf] [, navEnd]); LabelNext: if (!iter.MoveNext()) goto LabelNextCtxt;
private CreateFilteredIterator ( QilNode ndCtxt, string iterName, Type iterType, MethodInfo methCreate, MethodInfo methNext, XmlNodeKindFlags kinds, QilName ndName, TriState orSelf, QilNode ndEnd ) : void
ndCtxt QilNode
iterName string
iterType System.Type
methCreate System.Reflection.MethodInfo
methNext System.Reflection.MethodInfo
kinds XmlNodeKindFlags
ndName System.Xml.Xsl.Qil.QilName
orSelf TriState
ndEnd QilNode
return void
        private void CreateFilteredIterator(QilNode ndCtxt, string iterName, Type iterType, MethodInfo methCreate, MethodInfo methNext,
                                                XmlNodeKindFlags kinds, QilName ndName, TriState orSelf, QilNode ndEnd) {
            // Iterator iter;
            LocalBuilder locIter = this.helper.DeclareLocal(iterName, iterType);

            // iter.Create(navCtxt, filter [, orSelf], [, navEnd]);
            this.helper.Emit(OpCodes.Ldloca, locIter);
            NestedVisitEnsureStack(ndCtxt);
            LoadSelectFilter(kinds, ndName);
            if (orSelf != TriState.Unknown)
                this.helper.LoadBoolean(orSelf == TriState.True);
            if (ndEnd != null)
                NestedVisitEnsureStack(ndEnd);
            this.helper.Call(methCreate);

            GenerateSimpleIterator(typeof(XPathNavigator), locIter, methNext);
        }
XmlILVisitor