mirror of
https://github.com/RPCS3/llvm.git
synced 2025-04-14 12:01:21 +00:00

Move the DWARF syntax highlighting into support. This has several advantages, most notably that this makes the WithColor RAII wrapper available outside libDebugInfo. Furthermore, several projects all have their own code for handling colored output. This provides a place to centralize it. Differential revision: https://reviews.llvm.org/D44215 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@327108 91177308-0d34-0410-b5e6-96231b3b80d8
66 lines
1.9 KiB
C++
66 lines
1.9 KiB
C++
//===- WithColor.cpp ------------------------------------------------------===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "llvm/Support/WithColor.h"
|
|
#include "llvm/Support/CommandLine.h"
|
|
#include "llvm/Support/raw_ostream.h"
|
|
|
|
using namespace llvm;
|
|
|
|
static cl::opt<cl::boolOrDefault>
|
|
UseColor("color",
|
|
cl::desc("use colored syntax highlighting (default=autodetect)"),
|
|
cl::init(cl::BOU_UNSET));
|
|
|
|
bool WithColor::colorsEnabled(raw_ostream &OS) {
|
|
if (UseColor == cl::BOU_UNSET)
|
|
return OS.has_colors();
|
|
return UseColor == cl::BOU_TRUE;
|
|
}
|
|
|
|
WithColor::WithColor(raw_ostream &OS, HighlightColor Color) : OS(OS) {
|
|
// Detect color from terminal type unless the user passed the --color option.
|
|
if (colorsEnabled(OS)) {
|
|
switch (Color) {
|
|
case HighlightColor::Address:
|
|
OS.changeColor(raw_ostream::YELLOW);
|
|
break;
|
|
case HighlightColor::String:
|
|
OS.changeColor(raw_ostream::GREEN);
|
|
break;
|
|
case HighlightColor::Tag:
|
|
OS.changeColor(raw_ostream::BLUE);
|
|
break;
|
|
case HighlightColor::Attribute:
|
|
OS.changeColor(raw_ostream::CYAN);
|
|
break;
|
|
case HighlightColor::Enumerator:
|
|
OS.changeColor(raw_ostream::MAGENTA);
|
|
break;
|
|
case HighlightColor::Macro:
|
|
OS.changeColor(raw_ostream::RED);
|
|
break;
|
|
case HighlightColor::Error:
|
|
OS.changeColor(raw_ostream::RED, true);
|
|
break;
|
|
case HighlightColor::Warning:
|
|
OS.changeColor(raw_ostream::MAGENTA, true);
|
|
break;
|
|
case HighlightColor::Note:
|
|
OS.changeColor(raw_ostream::BLACK, true);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
WithColor::~WithColor() {
|
|
if (colorsEnabled(OS))
|
|
OS.resetColor();
|
|
}
|