| 18 | Verbosity verbosity; |
| 19 | |
| 20 | Message::Message(Verbosity verbosity, const char *file, int line) : verbosity_(verbosity) { |
| 21 | using namespace llvm; |
| 22 | time_t tim = time(NULL); |
| 23 | struct tm t; |
| 24 | { |
| 25 | std::lock_guard<std::mutex> lock(mtx); |
| 26 | t = *localtime(&tim); |
| 27 | } |
| 28 | char buf[16]; |
| 29 | snprintf(buf, sizeof buf, "%02d:%02d:%02d ", t.tm_hour, t.tm_min, t.tm_sec); |
| 30 | stream_ << buf; |
| 31 | { |
| 32 | SmallString<32> name; |
| 33 | get_thread_name(name); |
| 34 | stream_ << std::left << std::setw(13) << name.c_str(); |
| 35 | } |
| 36 | { |
| 37 | const char *p = strrchr(file, '/'); |
| 38 | if (p) |
| 39 | file = p + 1; |
| 40 | stream_ << std::right << std::setw(15) << file << ':' << std::left << std::setw(3) << line; |
| 41 | } |
| 42 | stream_ << ' '; |
| 43 | // clang-format off |
| 44 | switch (verbosity_) { |
| 45 | case Verbosity_FATAL: stream_ << 'F'; break; |
| 46 | case Verbosity_ERROR: stream_ << 'E'; break; |
| 47 | case Verbosity_WARNING: stream_ << 'W'; break; |
| 48 | case Verbosity_INFO: stream_ << 'I'; break; |
| 49 | default: stream_ << "V(" << int(verbosity_) << ')'; |
| 50 | } |
| 51 | // clang-format on |
| 52 | stream_ << ' '; |
| 53 | } |
| 54 | |
| 55 | Message::~Message() { |
| 56 | if (!file) |
nothing calls this directly
no outgoing calls
no test coverage detected