예제 #1
0
        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();
                }
            }
        }
예제 #2
0
        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);
                    }
                }
            }
        }
예제 #3
0
        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;
            }
        }
예제 #4
0
        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;
            }
        }