/// <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="buildInformation">BuildInformation object used to locate the codebase</param> /// <returns>Cached collection of TypeDeclarationInfo</returns> public IEnumerable <TypeDeclarationInfo> GetCodebaseTypeDeclarations(BuildInformation buildInformation) { lock (codebaseTypeDefinitionPadLock) { if (codebaseTypeDefinitions == null) { codebaseTypeDefinitions = new List <TypeDeclarationInfo>(); foreach (var filename in buildInformation.CodeFiles) { var parser = GetParser(filename); var typeDeclarationInfoVisitor = new TypeDeclarationVisitor(); parser.CompilationUnit.AcceptVisitor(typeDeclarationInfoVisitor, null); codebaseTypeDefinitions.AddRange(typeDeclarationInfoVisitor.TypeDeclarations); } } return(codebaseTypeDefinitions); } }
public override R Accept <R>(TypeDeclarationVisitor <R> vis) { return(vis.Visit(this)); }
public override void Accept(TypeDeclarationVisitor vis) { vis.Visit(this); }
public abstract R Accept <R>(TypeDeclarationVisitor <R> vis);
public abstract void Accept(TypeDeclarationVisitor vis);