private void ShowArrays() { if (_dte.Mode == vsIDEMode.vsIDEModeDebug && _dte.Debugger.CurrentStackFrame != null) { if (_arraysPending && _toolActive) { _arraysPending = false; string language = _dte.Debugger.CurrentStackFrame.Language; switch (language) { case "C#": _arrayLoader = new CsArrayLoader(); break; case "F#": _arrayLoader = new FsArrayLoader(); break; case "Basic": _arrayLoader = new VbArrayLoader(); break; //case "C++": // arrayLoader = new CppArrayLoader(); // break; default: _arrayLoader = GetLanguageLoader(); if (_arrayLoader != null) { break; } ClearVisualizer(); Label msg = new Label { Content = string.Format("Sorry, currently {0} is not supported.", language) }; mainPanel.Children.Add(msg); return; } _parsers = new ParsersCollection(_arrayLoader, _loadedParsers); LoadScopeArrays(); } } }
public IEnumerable <ExpressionInfo> GetArrays(string section, Expression expression, ParsersCollection parsers, int sectionCode) { ThreadHelper.ThrowIfNotOnUIThread(); if (expression.Value == "Nothing" || expression.DataMembers.Count == 0) { yield break; } foreach (ITypeParser parser in parsers.Where(p => p.IsExpressionTypeSupported(expression))) { yield return(new ExpressionInfo(expression.Name, section, parser.GetDisplayName(expression), expression, sectionCode)); break; } if (expression.Name == "Me") { foreach (Expression subExpression in expression.DataMembers) { foreach (ExpressionInfo item in GetArrays("Me.", subExpression, parsers, -1)) { yield return(item); } } } }
public IEnumerable <ExpressionInfo> GetArrays(string section, Expression expression, ParsersCollection parsers, int sectionCode) { if (expression.DataMembers.Count == 0) { yield break; } foreach (ITypeParser parser in parsers.Where(P => P.IsExpressionTypeSupported(expression))) { yield return(new ExpressionInfo(expression.Name, section, parser.GetDisplayName(expression), expression, sectionCode)); break; } switch (expression.Name) { case "this": foreach (Expression subExpression in expression.DataMembers) { foreach (ExpressionInfo item in GetArrays("this.", subExpression, parsers, -1)) { yield return(item); } } break; case "Static members": foreach (Expression subExpression in expression.DataMembers) { foreach (ExpressionInfo item in GetArrays("(Static) ", subExpression, parsers, -2)) { yield return(item); } } break; } }
public IEnumerable <ExpressionInfo> GetArrays(string section, Expression expression, ParsersCollection parsers, int sectionCode) { ThreadHelper.ThrowIfNotOnUIThread(); if (expression.DataMembers.Count == 0) { yield break; } foreach (ITypeParser parser in parsers.Where(p => p.IsExpressionTypeSupported(expression))) { yield return(new ExpressionInfo(expression.Name, section, parser.GetDisplayName(expression), expression, sectionCode)); break; } }