System.Xml.Xsl.IlGen.XmlILNamespaceAnalyzer.AnalyzeContent C# (CSharp) Method

AnalyzeContent() private method

Recursively analyze content. Return "nd" or a replacement for it.
private AnalyzeContent ( QilNode nd ) : void
nd QilNode
return void
        private void AnalyzeContent(QilNode nd) {
            int cntNmspSave;

            switch (nd.NodeType) {
                case QilNodeType.Loop:
                    this.addInScopeNmsp = false;
                    AnalyzeContent((nd as QilLoop).Body);
                    break;

                case QilNodeType.Sequence:
                    foreach (QilNode ndContent in nd)
                        AnalyzeContent(ndContent);
                    break;

                case QilNodeType.Conditional:
                    this.addInScopeNmsp = false;
                    AnalyzeContent((nd as QilTernary).Center);
                    AnalyzeContent((nd as QilTernary).Right);
                    break;

                case QilNodeType.Choice:
                    this.addInScopeNmsp = false;
                    QilList ndBranches = (nd as QilChoice).Branches;
                    for (int idx = 0; idx < ndBranches.Count; idx++)
                        AnalyzeContent(ndBranches[idx]);

                    break;

                case QilNodeType.ElementCtor:
                    // Start a new namespace scope
                    this.addInScopeNmsp = true;
                    this.nsmgr.PushScope();
                    cntNmspSave = this.cntNmsp;

                    if (CheckNamespaceInScope(nd as QilBinary))
                        AnalyzeContent((nd as QilBinary).Right);

                    this.nsmgr.PopScope();
                    this.addInScopeNmsp = false;
                    this.cntNmsp = cntNmspSave;
                    break;

                case QilNodeType.AttributeCtor:
                    this.addInScopeNmsp = false;
                    CheckNamespaceInScope(nd as QilBinary);
                    break;

                case QilNodeType.NamespaceDecl:
                    CheckNamespaceInScope(nd as QilBinary);
                    break;

                case QilNodeType.Nop:
                    AnalyzeContent((nd as QilUnary).Child);
                    break;

                default:
                    this.addInScopeNmsp = false;
                    break;
            }
        }