bool CLSComplianceChecker::ContainerIsPartOfRootNamespace(BCSYM_Container * Container) { if (!Container->IsNamespace()) { return false; } SourceFile *ContainingSourceFile = Container->GetSourceFile(); VSASSERT( ContainingSourceFile, "Non source container unexpected!!!"); // RootNamespace can be NULL for non-existent files specified in project files // BCSYM_Namespace *RootNamespace = ContainingSourceFile->GetRootNamespace() ? ContainingSourceFile->GetRootNamespace() : ContainingSourceFile->GetUnnamedNamespace(); VSASSERT( RootNamespace, "NULL rootnamespace unexpected!!!"); for(BCSYM_Container *NextContaineraboveRootNamespace = RootNamespace; NextContaineraboveRootNamespace; NextContaineraboveRootNamespace = NextContaineraboveRootNamespace->GetContainer()) { if (NextContaineraboveRootNamespace == Container) { return true; } VSASSERT( !NextContaineraboveRootNamespace->IsSameContainer(Container), "How can there be multiple instances per file for namespaces above the rootnamespace ?"); } return false; }