void OnCompilationSuccess(VCFile file) { OnCompilationEnd("Asm compilation successful."); VCProject project = file.project; string dir = project.ActiveConfiguration.Evaluate(OutputAsmDir); string filename = Path.ChangeExtension(file.Name, "asm"); string solutionDir = Path.GetDirectoryName(m_dte.Solution.FullName); string path = Path.Combine(solutionDir, dir, filename); string text = File.ReadAllText(path); CLx64AsmParser parser = new CLx64AsmParser(); AsmUnit asmUnit = parser.Parse(text); foreach (KeyValuePair <string, AsmFile> filePair in asmUnit.Files) { string fileName = filePair.Key; AsmFile asmFile = filePair.Value; if (m_asm.ContainsKey(fileName)) { UpdateFile(m_asm[fileName], asmFile); } else { m_asm[fileName] = asmFile; } } m_view.OnDocumentChanged(); }
AsmUnit BuildUnit(Dictionary <string, AsmFile> files) { AsmUnit unit = new AsmUnit { Files = new Dictionary <string, AsmFile>() }; foreach (KeyValuePair <string, AsmFile> file in files) { AsmFile builder = file.Value; builder.Functions.Sort(); unit.Files[file.Key] = new AsmFile { Path = file.Key, Functions = builder.Functions }; } return(unit); }