[llvm-commits] [llvm] r154800 - in /llvm/trunk: include/llvm/Support/Process.h include/llvm/Support/raw_ostream.h lib/Support/Unix/Process.inc lib/Support/Windows/Process.inc lib/Support/raw_ostream.cpp
Seth Cantrell
seth.cantrell at gmail.com
Mon Apr 16 04:50:21 PDT 2012
I think I've fixed the issue. (a microsoft style __in on a parameter to GetConsoleTextAttribute)
On Apr 16, 2012, at 4:00 AM, Argyrios Kyrtzidis wrote:
> On Apr 16, 2012, at 12:51 AM, Chandler Carruth wrote:
>
>> On Mon, Apr 16, 2012 at 9:07 AM, Argyrios Kyrtzidis <akyrtzi at gmail.com> wrote:
>> Author: akirtzidis
>> Date: Mon Apr 16 02:07:38 2012
>> New Revision: 154800
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=154800&view=rev
>> Log:
>> Add reverseColor to raw_ostream.
>>
>> To be used in printing unprintable source in clang diagnostics.
>> Patch by Seth Cantrell!
>>
>> Ugh, this broke windows builders:
>>
>> http://bb.pgr.jp/builders/clang-i686-msys/builds/729/steps/compile/logs/stdio
>
> Reverted.
>
>>
>>
>> Modified:
>> llvm/trunk/include/llvm/Support/Process.h
>> llvm/trunk/include/llvm/Support/raw_ostream.h
>> llvm/trunk/lib/Support/Unix/Process.inc
>> llvm/trunk/lib/Support/Windows/Process.inc
>> llvm/trunk/lib/Support/raw_ostream.cpp
>>
>> Modified: llvm/trunk/include/llvm/Support/Process.h
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/Process.h?rev=154800&r1=154799&r2=154800&view=diff
>> ==============================================================================
>> --- llvm/trunk/include/llvm/Support/Process.h (original)
>> +++ llvm/trunk/include/llvm/Support/Process.h Mon Apr 16 02:07:38 2012
>> @@ -136,6 +136,10 @@
>> /// Same as OutputColor, but only enables the bold attribute.
>> static const char *OutputBold(bool bg);
>>
>> + /// This function returns the escape sequence to reverse forground and
>> + /// background colors.
>> + static const char *OutputReverse();
>> +
>> /// Resets the terminals colors, or returns an escape sequence to do so.
>> static const char *ResetColor();
>> /// @}
>>
>> Modified: llvm/trunk/include/llvm/Support/raw_ostream.h
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/raw_ostream.h?rev=154800&r1=154799&r2=154800&view=diff
>> ==============================================================================
>> --- llvm/trunk/include/llvm/Support/raw_ostream.h (original)
>> +++ llvm/trunk/include/llvm/Support/raw_ostream.h Mon Apr 16 02:07:38 2012
>> @@ -222,6 +222,9 @@
>> /// outputting colored text, or before program exit.
>> virtual raw_ostream &resetColor() { return *this; }
>>
>> + /// Reverses the forground and background colors.
>> + virtual raw_ostream &reverseColor() { return *this; }
>> +
>> /// This function determines if this stream is connected to a "tty" or
>> /// "console" window. That is, the output would be displayed to the user
>> /// rather than being put on a pipe or stored in a file.
>> @@ -379,6 +382,8 @@
>> bool bg=false);
>> virtual raw_ostream &resetColor();
>>
>> + virtual raw_ostream &reverseColor();
>> +
>> virtual bool is_displayed() const;
>>
>> /// has_error - Return the value of the flag in this raw_fd_ostream indicating
>>
>> Modified: llvm/trunk/lib/Support/Unix/Process.inc
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/Unix/Process.inc?rev=154800&r1=154799&r2=154800&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/Support/Unix/Process.inc (original)
>> +++ llvm/trunk/lib/Support/Unix/Process.inc Mon Apr 16 02:07:38 2012
>> @@ -290,6 +290,10 @@
>> return "\033[1m";
>> }
>>
>> +const char *Process::OutputReverse() {
>> + return "\033[7m";
>> +}
>> +
>> const char *Process::ResetColor() {
>> return "\033[0m";
>> }
>>
>> Modified: llvm/trunk/lib/Support/Windows/Process.inc
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/Windows/Process.inc?rev=154800&r1=154799&r2=154800&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/Support/Windows/Process.inc (original)
>> +++ llvm/trunk/lib/Support/Windows/Process.inc Mon Apr 16 02:07:38 2012
>> @@ -215,6 +215,39 @@
>> return 0;
>> }
>>
>> +WORD GetConsoleTextAttribute(__in HANDLE hConsoleOutput)
>> +{
>> + CONSOLE_SCREEN_BUFFER_INFO info;
>> + GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE),&info);
>> + return info.wAttributes;
>> +}
>> +
>> +const char *Process::OutputReverse() {
>> + const WORD attributes
>> + = GetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE));
>> +
>> + const WORD foreground_mask = FOREGROUND_BLUE | FOREGROUND_GREEN |
>> + FOREGROUND_RED | FOREGROUND_INTENSITY;
>> + const WORD background_mask = BACKGROUND_BLUE | BACKGROUND_GREEN |
>> + BACKGROUND_RED | BACKGROUND_INTENSITY;
>> + const WORD color_mask = foreground_mask | background_mask;
>> +
>> + WORD new_attributes =
>> + ((attributes & FOREGROUND_BLUE )?BACKGROUND_BLUE :0) |
>> + ((attributes & FOREGROUND_GREEN )?BACKGROUND_GREEN :0) |
>> + ((attributes & FOREGROUND_RED )?BACKGROUND_RED :0) |
>> + ((attributes & FOREGROUND_INTENSITY)?BACKGROUND_INTENSITY:0) |
>> + ((attributes & BACKGROUND_BLUE )?FOREGROUND_BLUE :0) |
>> + ((attributes & BACKGROUND_GREEN )?FOREGROUND_GREEN :0) |
>> + ((attributes & BACKGROUND_RED )?FOREGROUND_RED :0) |
>> + ((attributes & BACKGROUND_INTENSITY)?FOREGROUND_INTENSITY:0) |
>> + 0;
>> + new_attributes = (attributes & ~color_mask) | (new_attributes & color_mask);
>> +
>> + SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),new_attributes);
>> + return 0;
>> +}
>> +
>> const char *Process::ResetColor() {
>> SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), defaultColors());
>> return 0;
>>
>> Modified: llvm/trunk/lib/Support/raw_ostream.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/raw_ostream.cpp?rev=154800&r1=154799&r2=154800&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/Support/raw_ostream.cpp (original)
>> +++ llvm/trunk/lib/Support/raw_ostream.cpp Mon Apr 16 02:07:38 2012
>> @@ -633,6 +633,19 @@
>> return *this;
>> }
>>
>> +raw_ostream &raw_fd_ostream::reverseColor() {
>> + if (sys::Process::ColorNeedsFlush())
>> + flush();
>> + const char *colorcode = sys::Process::OutputReverse();
>> + if (colorcode) {
>> + size_t len = strlen(colorcode);
>> + write(colorcode, len);
>> + // don't account colors towards output characters
>> + pos -= len;
>> + }
>> + return *this;
>> +}
>> +
>> bool raw_fd_ostream::is_displayed() const {
>> return sys::Process::FileDescriptorIsDisplayed(FD);
>> }
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20120416/694a7adb/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Add-reverseColor-to-raw_ostream.patch
Type: application/octet-stream
Size: 5044 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20120416/694a7adb/attachment.obj>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20120416/694a7adb/attachment-0001.html>
More information about the llvm-commits
mailing list