Factor out common condition into an easier to understand helper function (NFC).

llvm-svn: 324935
This commit is contained in:
Adrian Prantl 2018-02-12 21:11:14 +00:00
parent a6716d9d81
commit baf9c20b02
2 changed files with 12 additions and 2 deletions

View File

@ -20,9 +20,17 @@ static cl::opt<cl::boolOrDefault>
cl::desc("use colored syntax highlighting (default=autodetect)"), cl::desc("use colored syntax highlighting (default=autodetect)"),
cl::init(cl::BOU_UNSET)); cl::init(cl::BOU_UNSET));
bool WithColor::colorsEnabled(raw_ostream &OS) {
switch (UseColor) {
case cl::BOU_UNSET: return OS.has_colors();
case cl::BOU_TRUE: return true;
case cl::BOU_FALSE: return false;
}
}
WithColor::WithColor(raw_ostream &OS, enum HighlightColor Type) : OS(OS) { WithColor::WithColor(raw_ostream &OS, enum HighlightColor Type) : OS(OS) {
// Detect color from terminal type unless the user passed the --color option. // Detect color from terminal type unless the user passed the --color option.
if (UseColor == cl::BOU_UNSET ? OS.has_colors() : UseColor == cl::BOU_TRUE) { if (colorsEnabled(OS)) {
switch (Type) { switch (Type) {
case Address: OS.changeColor(raw_ostream::YELLOW); break; case Address: OS.changeColor(raw_ostream::YELLOW); break;
case String: OS.changeColor(raw_ostream::GREEN); break; case String: OS.changeColor(raw_ostream::GREEN); break;
@ -38,6 +46,6 @@ WithColor::WithColor(raw_ostream &OS, enum HighlightColor Type) : OS(OS) {
} }
WithColor::~WithColor() { WithColor::~WithColor() {
if (UseColor == cl::BOU_UNSET ? OS.has_colors() : UseColor == cl::BOU_TRUE) if (colorsEnabled(OS))
OS.resetColor(); OS.resetColor();
} }

View File

@ -34,6 +34,8 @@ enum HighlightColor {
/// specific color. /// specific color.
class WithColor { class WithColor {
raw_ostream &OS; raw_ostream &OS;
/// Determine whether colors should be displayed.
bool colorsEnabled(raw_ostream &OS);
public: public:
/// To be used like this: WithColor(OS, syntax::String) << "text"; /// To be used like this: WithColor(OS, syntax::String) << "text";