/* * 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 #include #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(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 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_*/