/// <summary> /// Gets all type declarations made in the current codebase that is being compiled. /// This is a tool method to be used in more complex achievements. /// This method is caching and can be called without discretion, and is thread safe. /// </summary> /// <param name="staticAnalysisManifest">StaticAnalysisManifest object used to locate the codebase</param> /// <returns>Cached collection of DeclarationInfo</returns> public IEnumerable<DeclarationInfo> GetCodebaseDeclarations(StaticAnalysisManifest staticAnalysisManifest) { lock (codebaseTypeDefinitionPadLock) { if (codebaseDeclarations == null) { codebaseDeclarations = new List<DeclarationInfo>(); foreach (var filename in staticAnalysisManifest.CodeFiles) { var compilationUnit = GetCompilationUnit(filename); var typeDeclarationInfoVisitor = new CodebaseAnalysisVisitor(); compilationUnit.AcceptVisitor(typeDeclarationInfoVisitor, null); codebaseDeclarations.AddRange(typeDeclarationInfoVisitor.TypeDeclarations); } } return codebaseDeclarations; } }
/// <summary> /// Gets all type declarations made in the current codebase that is being compiled. /// This is a tool method to be used in more complex achievements. /// This method is caching and can be called without discretion, and is thread safe. /// </summary> /// <param name="staticAnalysisManifest">StaticAnalysisManifest object used to locate the codebase</param> /// <returns>Cached collection of DeclarationInfo</returns> public IEnumerable <DeclarationInfo> GetCodebaseDeclarations(StaticAnalysisManifest staticAnalysisManifest) { lock (codebaseTypeDefinitionPadLock) { if (codebaseDeclarations == null) { codebaseDeclarations = new List <DeclarationInfo>(); foreach (var filename in staticAnalysisManifest.CodeFiles) { var compilationUnit = GetCompilationUnit(filename); var typeDeclarationInfoVisitor = new CodebaseAnalysisVisitor(); compilationUnit.AcceptVisitor(typeDeclarationInfoVisitor, null); codebaseDeclarations.AddRange(typeDeclarationInfoVisitor.TypeDeclarations); } } return(codebaseDeclarations); } }