예제 #1
0
        DebuggerScriptResultList ZipWith(string[] args)
        {
            string func = args[0];
            DebuggerScriptResultList newResults = new DebuggerScriptResultList();

            DebuggerScriptResultList[] inputResults;
            int minResults;

            GetInputResultsForZip(args, 1, out inputResults, out minResults);

            for (int resultIndex = 0; resultIndex < minResults; ++resultIndex)
            {
                string[] formatArgs = new string[inputResults.Count()];
                for (int inputIndex = 0; inputIndex < inputResults.Count(); ++inputIndex)
                {
                    formatArgs[inputIndex] = "(" + inputResults[inputIndex].GetResults()[resultIndex].Expression + ")";
                }
                int sourceIndex = 0;
                if (inputResults.Count() > 0)
                {
                    sourceIndex = inputResults[0].GetResults()[resultIndex].Index;
                }
                string exprString = string.Format(func, formatArgs);
                newResults.Add(exprString, exprString, sourceIndex);
            }

            return(newResults);
        }
예제 #2
0
        public DebuggerScriptResultList GetVariable(string name)
        {
            ThreadHelper.ThrowIfNotOnUIThread();
            DebuggerScriptResultList results = new DebuggerScriptResultList();

            results.Add(name, name, 0);

            return(results);
        }
        public DebuggerScriptResultList Rename(string name)
        {
            DebuggerScriptResultList newResults = new DebuggerScriptResultList();

            foreach (var result in Results)
            {
                newResults.Add(name, result.Expression, result.Index);
            }

            return(newResults);
        }
        public DebuggerScriptResultList RenameWithIndex(string name)
        {
            DebuggerScriptResultList newResults = new DebuggerScriptResultList();

            foreach (var result in Results)
            {
                newResults.Add(string.Format("{0}[{1}]", name, result.Index), result.Expression, result.Index);
            }

            return(newResults);
        }
        public DebuggerScriptResultList Pointer()
        {
            DebuggerScriptResultList newResults = new DebuggerScriptResultList();

            foreach (var result in Results)
            {
                newResults.Add(PointerString(result.Name), PointerString(result.Expression), result.Index);
            }

            return(newResults);
        }
        public DebuggerScriptResultList Reference()
        {
            DebuggerScriptResultList newResults = new DebuggerScriptResultList();

            foreach (var result in Results)
            {
                newResults.Add(ReferenceString(result.Name), ReferenceString(result.Expression), result.Index);
            }

            return(newResults);
        }
        public DebuggerScriptResultList Cast(string newType)
        {
            DebuggerScriptResultList newResults = new DebuggerScriptResultList();

            foreach (var result in Results)
            {
                newResults.Add(CastString(newType, result.Name), CastString(newType, result.Expression), result.Index);
            }

            return(newResults);
        }
        public DebuggerScriptResultList Members(params string[] memberNames)
        {
            DebuggerScriptResultList newResults = new DebuggerScriptResultList();

            foreach (var result in Results)
            {
                foreach (string member in memberNames)
                {
                    newResults.Add("(" + result.Name + ")" + member, "(" + result.Expression + ")" + member, result.Index);
                }
            }
            return(newResults);
        }
        public DebuggerScriptResultList ArrayRange(int firstIndex, int count)
        {
            DebuggerScriptResultList newResults = new DebuggerScriptResultList();

            foreach (var result in Results)
            {
                for (int i = 0; i < count; ++i)
                {
                    newResults.Add("(" + result.Name + ")[" + (firstIndex + i) + "]", "(" + result.Expression + ")[" + (firstIndex + i) + "]", firstIndex + i);
                }
            }

            return(newResults);
        }
        public DebuggerScriptResultList FilterNotString(string filter, string ExpectedValue, EnvDTE.Debugger debugger)
        {
            ThreadHelper.ThrowIfNotOnUIThread();

            DebuggerScriptResultList newResults = new DebuggerScriptResultList();

            foreach (var result in Results)
            {
                var expr = debugger.GetExpression(string.Format(filter, "(" + result.Expression + ")"), true);
                if (expr != null && ExtractString(expr.Value) != ExpectedValue)
                {
                    newResults.Add(result.Name, result.Expression, result.Index);
                }
            }
            return(newResults);
        }
        public DebuggerScriptResultList Fold(string op)
        {
            DebuggerScriptResultList newResults = new DebuggerScriptResultList();

            if (Results.Count >= 1)
            {
                string name = Results[0].Name;
                string expr = Results[0].Expression;
                for (int resultIndex = 1; resultIndex < Results.Count; ++resultIndex)
                {
                    name = string.Format(op, name, Results[resultIndex].Name);
                    expr = string.Format(op, expr, Results[resultIndex].Expression);
                }
                newResults.Add(name, expr, 0);
            }

            return(newResults);
        }
예제 #12
0
        DebuggerScriptResultList Zip(string[] args)
        {
            DebuggerScriptResultList newResults = new DebuggerScriptResultList();

            DebuggerScriptResultList[] inputResults;
            int minResults;

            GetInputResultsForZip(args, 0, out inputResults, out minResults);

            for (int resultIndex = 0; resultIndex < minResults; ++resultIndex)
            {
                for (int inputIndex = 0; inputIndex < inputResults.Count(); ++inputIndex)
                {
                    string exprString = inputResults[inputIndex].GetResults()[resultIndex].Expression;
                    string nameString = inputResults[inputIndex].GetResults()[resultIndex].Name;
                    newResults.Add(exprString, nameString, inputResults[inputIndex].GetResults()[resultIndex].Index);
                }
            }

            return(newResults);
        }
예제 #13
0
        DebuggerScriptResultList Concat(string[] args)
        {
            DebuggerScriptResultList newResults = new DebuggerScriptResultList();

            for (int inputIndex = 0; inputIndex < args.Count(); ++inputIndex)
            {
                if (!SavedResults.ContainsKey(args[inputIndex]))
                {
                    throw new Exception(String.Format("Using unknown variable {0}", args[inputIndex]));
                }
                var inputResults = SavedResults[args[inputIndex]];

                for (int resultIndex = 0; resultIndex < inputResults.GetResults().Count(); ++resultIndex)
                {
                    string exprString = inputResults.GetResults()[resultIndex].Expression;
                    string nameString = inputResults.GetResults()[resultIndex].Name;
                    newResults.Add(exprString, nameString, inputResults.GetResults()[resultIndex].Index);
                }
            }

            return(newResults);
        }