Esempio n. 1
0
        private void RedirectOutput(TextWriter /*!*/ output, Action f)
        {
            // TODO:
            if (Runtime == null)
            {
                f();
            }
            else
            {
                MemoryStream stream = new MemoryStream();
                Runtime.IO.SetOutput(stream, StringUtils.DefaultEncoding);
                Runtime.IO.SetErrorOutput(Driver.OpenOutputStream(), Driver.Output);

                try {
                    f();
                } finally {
                    var bytes = stream.ToArray();
                    output.Write(StringUtils.DefaultEncoding.GetString(bytes, 0, bytes.Length));
                    output.Flush();
                    Runtime.IO.RedirectToConsole();
                }
            }
        }