| /* | |
| * Debug.h -- OMP debug | |
| */ | |
| //===----------------------------------------------------------------------===// | |
| // | |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | |
| // See https://llvm.org/LICENSE.txt for license information. | |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #include <iostream> | |
| #include <ostream> | |
| #ifndef GDB_DEBUG_H_ | |
| #define GDB_DEBUG_H_ | |
| namespace GdbColor { | |
| enum Code { | |
| FG_RED = 31, | |
| FG_GREEN = 32, | |
| FG_BLUE = 34, | |
| FG_DEFAULT = 39, | |
| BG_RED = 41, | |
| BG_GREEN = 42, | |
| BG_BLUE = 44, | |
| BG_DEFAULT = 49 | |
| }; | |
| inline std::ostream &operator<<(std::ostream &os, Code code) { | |
| return os << "\033[" << static_cast<int>(code) << "m"; | |
| } | |
| } // namespace GdbColor | |
| class ColorOut { | |
| private: | |
| std::ostream &out; | |
| GdbColor::Code color; | |
| public: | |
| ColorOut(std::ostream &_out, GdbColor::Code _color) | |
| : out(_out), color(_color) {} | |
| template <typename T> const ColorOut &operator<<(const T &val) const { | |
| out << color << val << GdbColor::FG_DEFAULT; | |
| return *this; | |
| } | |
| const ColorOut &operator<<(std::ostream &(*pf)(std::ostream &)) const { | |
| out << color << pf << GdbColor::FG_DEFAULT; | |
| return *this; | |
| } | |
| }; | |
| static ColorOut dout(std::cout, GdbColor::FG_RED); | |
| static ColorOut sout(std::cout, GdbColor::FG_GREEN); | |
| static ColorOut hout(std::cout, GdbColor::FG_BLUE); | |
| #endif /*GDB_DEBUG_H_*/ |