Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(568)

Unified Diff: experimental/visual_studio_plugin/src/SymbolDBViewer/NexeLoader.cs

Issue 10928195: First round of dead file removal (Closed) Base URL: https://github.com/samclegg/nativeclient-sdk.git@master
Patch Set: Created 8 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: experimental/visual_studio_plugin/src/SymbolDBViewer/NexeLoader.cs
diff --git a/experimental/visual_studio_plugin/src/SymbolDBViewer/NexeLoader.cs b/experimental/visual_studio_plugin/src/SymbolDBViewer/NexeLoader.cs
deleted file mode 100644
index 1175ad64ad35950c29f538e28f0b8802a1cf770f..0000000000000000000000000000000000000000
--- a/experimental/visual_studio_plugin/src/SymbolDBViewer/NexeLoader.cs
+++ /dev/null
@@ -1,296 +0,0 @@
-// Copyright (c) 2011 The Native Client Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#region
-
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Windows.Forms;
-using Google.NaClVsx.DebugSupport.DWARF;
-using NaClVsx;
-
-#endregion
-
-namespace SymbolDBViewer {
- /// <summary>
- /// So far, this is the only real class in this app. It contains a few
- /// controls and a TreeView of the contents of SymbolDatabase.
- /// The display components are:
- /// - A status display which is used to indicate load progress to the
- /// user (Bottom).
- /// - A fileName label which shows the name of the nexe file that is
- /// currently loaded (Top Left).
- /// The controls are:
- /// - A "Load Nexe" button to pick a file to examine.
- /// - A textfield and "Search" button to search through the Symbol Data.
- /// - A "Close All" button to close any expanded nodes.
- /// - A set of navigation controls to make iterating through search
- /// results easier, consiting of a back button, forward button, and a
- /// label to indicate the currently selected entry and the total number
- /// of hits.
- /// </summary>
- public partial class NexeLoader : Form {
- /// <summary>
- /// The constructor initializes the data fields for the loadStatus
- /// indicator.
- /// </summary>
- public NexeLoader() {
- InitializeComponent();
- dieLoader_.DictionaryName = "DIEs";
- fileLoader_.DictionaryName = "Files";
- locationLoader_.DictionaryName = "Locations";
- scopeTransitionLoader_.DictionaryName = "Scope Transitions";
- locListLoader_.DictionaryName = "LocLists";
- callFrameLoader_.DictionaryName = "Call Frames";
- }
-
- #region Private Implementation
-
- /// <summary>
- /// A Container used to store nodes that match the user's search.
- /// </summary>
- private List<TreeNode> matchingNodes_;
-
- /// <summary>
- /// The index that the searchNav control cluster is currently on.
- /// </summary>
- private int searchIndex_ = -1;
-
- #endregion
-
- #region Private Implementation
-
- /// <summary>
- /// Searches through the tree and expands and collects any nodes that
- /// match the search string. The parents of any nodes that match are
- /// also expanded to ensure that the search results are all visible.
- /// </summary>
- /// <param name = "nodes">The set of starting nodes to examine.</param>
- /// <param name = "searchString">The string to match against.</param>
- /// <returns>A collection of nodes that have already been expanded and
- /// that match the search results. In cases where parents and children
- /// both match, only the matching children are returned.</returns>
- private static List<TreeNode> FindAndExpandMatchingNodes(
- TreeNodeCollection nodes, string searchString) {
- var matchingNodes = new List<TreeNode>();
- for (var i = 0; i < nodes.Count; i++) {
- var node = nodes[i];
- // Doesn't add itself if it already has a matching child.
- var matchingChildren = FindAndExpandMatchingNodes(
- node.Nodes, searchString);
- if (matchingChildren.Count > 0) {
- matchingNodes.AddRange(matchingChildren);
- node.Expand();
- } else if (node.Text.Contains(searchString)) {
- matchingNodes.Add(node);
- node.Expand();
- }
- }
- return matchingNodes;
- }
-
- /// <summary>
- /// An event handler that can be called when the users wants to close
- /// any open nodes in the TreeView.
- /// </summary>
- /// <param name = "sender">Unused.</param>
- /// <param name = "e">Unused.</param>
- private void CloseAllButtonClick(object sender, EventArgs e) {
- symbolDbTreeView_.CollapseAll();
- }
-
- /// <summary>
- /// An event handler that can be called when the user wants to load a
- /// new nexe into the SymbolDBViewer.
- /// </summary>
- /// <param name = "sender">Unused.</param>
- /// <param name = "e">Unused.</param>
- private void HandleLoadButtonClick(object sender, EventArgs e) {
- searchNavLabel_.Text = @"0/0";
- nexeChooserDialog_.InitialDirectory =
- Environment.GetEnvironmentVariable("NACL_VSX_ROOT");
- // Show the dialog and get result.
- var result = nexeChooserDialog_.ShowDialog();
- if (result == DialogResult.OK) {
- statusLabel_.Text = string.Format(
- "Loading :" + nexeChooserDialog_.SafeFileName);
- LoadNexeFile();
- symbolDbTreeView_.BeginUpdate();
- symbolDbTreeView_.Nodes.Clear();
- symbolDbTreeView_.EndUpdate();
-
- dieLoader_.Content = symbolDatabase_.Entries;
- fileLoader_.Content = symbolDatabase_.Files;
- locationLoader_.Content = symbolDatabase_.Locations;
- scopeTransitionLoader_.Content = symbolDatabase_.ScopeTransitions;
- callFrameLoader_.Content = symbolDatabase_.CallFrames;
- locListLoader_.Content = symbolDatabase_.LocLists;
-
- dieLoader_.RunWorkerAsync();
- fileLoader_.RunWorkerAsync();
- locationLoader_.RunWorkerAsync();
- scopeTransitionLoader_.RunWorkerAsync();
- callFrameLoader_.RunWorkerAsync();
- locListLoader_.RunWorkerAsync();
- }
- Console.WriteLine(result); // <-- For debugging use only.
- }
-
- /// <summary>
- /// Checks all statuses to see if the nexe has finished loading.
- /// </summary>
- /// <returns>True if the TreeView is complete. False, otherwise.
- /// </returns>
- private bool IsLoadingComplete() {
- return (dieLoader_.DoneLoading() &&
- fileLoader_.DoneLoading() &&
- locationLoader_.DoneLoading() &&
- scopeTransitionLoader_.DoneLoading() &&
- callFrameLoader_.DoneLoading() &&
- locListLoader_.DoneLoading());
- }
-
-
- /// <summary>
- /// Initializes a new SymbolDatabase with a given nexe.
- /// </summary>
- /// <param name = "filePath">Location of the nexe to use.</param>
- /// <returns>true unless the nexe failed to load for some reason.
- /// </returns>
- bool LoadNexe(string filePath) {
- try {
- symbolDatabase_ = new SymbolDatabase();
- DwarfParser.DwarfParseElf(
- filePath, new DwarfReaderImpl(symbolDatabase_));
- symbolDatabase_.BuildIndices();
- return true;
- }
- catch (Exception) {
- return false;
- }
- }
-
- /// <summary>
- /// Loads the file most recently selected by the user in the
- /// FileChooser.
- /// </summary>
- void LoadNexeFile() {
- var filePath = nexeChooserDialog_.FileName;
- var fileName = nexeChooserDialog_.SafeFileName;
- if (LoadNexe(filePath)) {
- fileNameLabel_.Text = fileName + @": ";
- Refresh();
- }
- }
-
- /// <summary>
- /// Updates that status area on the bottom of the screen with the
- /// current progress in loading the SymbolData into the TreeView.
- /// </summary>
- /// <param name = "sender">The BackgroundWorker that is reporting progress.
- /// </param>
- /// <param name = "e">The progress report.</param>
- private void PopulateNodesProgressChanged(object sender,
- ProgressChangedEventArgs e) {
- ReprintLoadProgress();
- }
-
- /// <summary>
- /// Prints the current load status for each of the tables that is]
- /// represented in our TreeView.
- /// </summary>
- private void ReprintLoadProgress() {
- statusLabel_.Text = string.Format(
- "Loading Progress: DIEs: {0}% Files: {1}% Locations: {2}% Scope Transitions: {3}% Call Frames: {4}% Loc Lists: {5}%",
- dieLoader_.LoadPercentage,
- fileLoader_.LoadPercentage,
- locationLoader_.LoadPercentage,
- scopeTransitionLoader_.LoadPercentage,
- callFrameLoader_.LoadPercentage,
- locListLoader_.LoadPercentage);
- }
-
- /// <summary>
- /// Runs a search on the symbolDbTreeView_ for any text the user has
- /// entered in the search text box.
- /// </summary>
- /// <param name = "sender">Unused.</param>
- /// <param name = "e">Unused.</param>
- private void SearchButtonClick(object sender, EventArgs e) {
- var searchString = searchTextBox_.Text;
- symbolDbTreeView_.BeginUpdate();
- matchingNodes_ = FindAndExpandMatchingNodes(
- symbolDbTreeView_.Nodes, searchString);
- symbolDbTreeView_.EndUpdate();
- if (matchingNodes_.Count > 0) {
- searchIndex_ = 0;
- UpdateSearchNavLabel();
- } else {
- searchNavLabel_.Text = @"0/0";
- }
- }
-
- /// <summary>
- /// Navigates one step forward in the search results.
- /// </summary>
- /// <param name = "sender">Unused.</param>
- /// <param name = "e">Unused.</param>
- private void SearchNavBackButtonClick(object sender, EventArgs e) {
- if (searchIndex_ > 0) {
- --searchIndex_;
- UpdateSearchNavLabel();
- }
- }
-
- /// <summary>
- /// Navigates one step backward in the search results.
- /// </summary>
- /// <param name = "sender">Unused.</param>
- /// <param name = "e">Unused.</param>
- private void SearchNavForwardButtonClick(object sender, EventArgs e) {
- if (searchIndex_ + 1 < matchingNodes_.Count) {
- ++searchIndex_;
- UpdateSearchNavLabel();
- }
- }
-
- /// <summary>
- /// Updates the Display to indicate which search result is currently
- /// selected.
- /// </summary>
- private void UpdateSearchNavLabel() {
- symbolDbTreeView_.SelectedNode = matchingNodes_[searchIndex_];
- searchNavLabel_.Text = string.Format(
- "{0}/{1}", searchIndex_ + 1, matchingNodes_.Count);
- }
-
- /// <summary>
- /// Updates the TreeView when a DictionaryLoader worker finishes
- /// creating the subtree it is responsible for.
- /// </summary>
- /// <param name = "sender">The DictionaryLoader that has just finished.
- /// </param>
- /// <param name = "e">The output of the DictionaryLoader, which contains
- /// the finished subtree.</param>
- private void UpdateTreeView(object sender,
- RunWorkerCompletedEventArgs e) {
- ReprintLoadProgress();
- var node = e.Result as TreeNode;
- if (node != null) {
- symbolDbTreeView_.BeginUpdate();
- symbolDbTreeView_.Nodes.Add(node);
- symbolDbTreeView_.EndUpdate();
- if (IsLoadingComplete()) {
- statusLabel_.Text = @"Loading Complete.";
- }
- } else {
- throw new Exception(
- "UpdateTreeView Failed because node was null!");
- }
- }
-
- #endregion
- }
-}

Powered by Google App Engine
This is Rietveld 408576698