diff options
Diffstat (limited to 'llvm/lib/DebugInfo/DWARF')
| -rw-r--r-- | llvm/lib/DebugInfo/DWARF/SyntaxHighlighting.cpp | 12 | ||||
| -rw-r--r-- | llvm/lib/DebugInfo/DWARF/SyntaxHighlighting.h | 2 |
2 files changed, 12 insertions, 2 deletions
diff --git a/llvm/lib/DebugInfo/DWARF/SyntaxHighlighting.cpp b/llvm/lib/DebugInfo/DWARF/SyntaxHighlighting.cpp index 65d66fc8f51..46c19bcc451 100644 --- a/llvm/lib/DebugInfo/DWARF/SyntaxHighlighting.cpp +++ b/llvm/lib/DebugInfo/DWARF/SyntaxHighlighting.cpp @@ -20,9 +20,17 @@ static cl::opt<cl::boolOrDefault> cl::desc("use colored syntax highlighting (default=autodetect)"), 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) { // 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) { case Address: OS.changeColor(raw_ostream::YELLOW); 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() { - if (UseColor == cl::BOU_UNSET ? OS.has_colors() : UseColor == cl::BOU_TRUE) + if (colorsEnabled(OS)) OS.resetColor(); } diff --git a/llvm/lib/DebugInfo/DWARF/SyntaxHighlighting.h b/llvm/lib/DebugInfo/DWARF/SyntaxHighlighting.h index 686cf2c7760..9aa060472b1 100644 --- a/llvm/lib/DebugInfo/DWARF/SyntaxHighlighting.h +++ b/llvm/lib/DebugInfo/DWARF/SyntaxHighlighting.h @@ -34,6 +34,8 @@ enum HighlightColor { /// specific color. class WithColor { raw_ostream &OS; + /// Determine whether colors should be displayed. + bool colorsEnabled(raw_ostream &OS); public: /// To be used like this: WithColor(OS, syntax::String) << "text"; |

