HomePhabricator

Improve raw_ostream so that you can "write" colors using operator<<

Authored by ruiu on Aug 1 2019, 9:48 PM.

Description

Improve raw_ostream so that you can "write" colors using operator<<

  1. raw_ostream supports ANSI colors so that you can write messages to

the termina with colors. Previously, in order to change and reset
color, you had to call changeColor and resetColor functions,
respectively.

So, if you print out "error: " in red, for example, you had to do
something like this:

OS.changeColor(raw_ostream::RED);
OS << "error: ";
OS.resetColor();

With this patch, you can write the same code as follows:

OS << raw_ostream::RED << "error: " << raw_ostream::RESET;
  1. Add a boolean flag to raw_ostream so that you can disable colored

output. If you disable colors, changeColor, operator<<(Color),
resetColor and other color-related functions have no effect.

Most LLVM tools automatically prints out messages using colors, and
you can disable it by passing a flag such as --disable-colors.
This new flag makes it easy to write code that works that way.

Differential Revision: https://reviews.llvm.org/D65564

llvm-svn: 367649