mmCEsim 0.3.0
mmWave Channel Estimation Simulation
term.h
Go to the documentation of this file.
1
12#ifndef _TERM_H_
13#define _TERM_H_
14
15#include <cstdlib>
16#include <iostream>
17#include <string>
18
24class TermOpt {
25 public:
31 TermOpt(const std::string& val) : v(val) {}
32
38 TermOpt(const char* val) : v(val) {}
39
41 std::string v;
42
44 bool vld = true;
45};
46
54static inline std::ostream& operator<<(std::ostream& out, const TermOpt& opt) {
55 if (opt.vld) out << "\033[" + opt.v + "m";
56 return out;
57}
58
66static inline TermOpt operator+(const TermOpt& o1, const TermOpt& o2) {
67 if (o1.vld && o2.vld) return o1.v + ";" + o2.v;
68 else if (o1.vld) return o1;
69 else return o2;
70}
71
81static inline TermOpt operator|(const TermOpt& o1, const TermOpt& o2) { return o1 + o2; }
82
87class Term {
88 public:
89 /* color and style definitions */
90 static inline TermOpt BLACK = "30";
91 static inline TermOpt RED = "31";
92 static inline TermOpt GREEN = "32";
93 static inline TermOpt YELLOW = "33";
94 static inline TermOpt BLUE = "34";
95 static inline TermOpt MAGENTA = "35";
96 static inline TermOpt CYAN = "36";
97 static inline TermOpt WHITE = "37";
98 static inline TermOpt DEFAULT = "39";
99 static inline TermOpt BG_BLACK = "40";
100 static inline TermOpt BG_RED = "41";
101 static inline TermOpt BG_GREEN = "42";
102 static inline TermOpt BG_YELLOW = "43";
103 static inline TermOpt BG_BLUE = "44";
104 static inline TermOpt BG_MAGENTA = "45";
105 static inline TermOpt BG_CYAN = "46";
106 static inline TermOpt BG_WHITE = "47";
107 static inline TermOpt BG_DEFAULT = "49";
108 static inline TermOpt RESET = "0";
109 static inline TermOpt BF = "1";
110 static inline TermOpt DIM = "2";
111 static inline TermOpt IT = "3";
112 static inline TermOpt UL = "4";
113 static inline TermOpt BLINK = "5";
114 static inline TermOpt INV = "7";
115 static inline TermOpt OFF_BF = "21";
116 static inline TermOpt OFF_DIM = "22";
117 static inline TermOpt OFF_IT = "23";
118 static inline TermOpt OFF_UL = "24";
119 static inline TermOpt OFF_BLINK = "25";
120 static inline TermOpt OFF_INV = "27";
122 /* some additional compound definitions */
123 static inline TermOpt ERR = RED | BF;
124 static inline TermOpt MSG = YELLOW;
125 static inline TermOpt WAR = YELLOW | BF;
131 static void disable();
132
138 static void enable();
139
146 template <typename T>
147 static void error(const T& msg);
148
155 template <typename T>
156 static void message(const T& msg);
157
164 template <typename T>
165 static void warning(const T& msg);
166
174 static void detectEnv();
175};
176
177template <typename T>
178inline void Term::error(const T& msg) {
179 std::cerr << Term::ERR << "[ERROR] " << msg << Term::RESET << std::endl;
180}
181
182template <typename T>
183inline void Term::message(const T& msg) {
184 std::cerr << Term::MSG << "[MESSAGE] " << msg << Term::RESET << std::endl;
185}
186
187template <typename T>
188inline void Term::warning(const T& msg) {
189 std::cerr << Term::WAR << "[WARNING] " << msg << Term::RESET << std::endl;
190}
191
192#endif
Control terminal colors and styles.
Definition: term.h:87
static TermOpt BF
Definition: term.h:109
static TermOpt OFF_DIM
Definition: term.h:116
static TermOpt DIM
Definition: term.h:110
static TermOpt DEFAULT
Definition: term.h:98
static TermOpt OFF_UL
Definition: term.h:118
static TermOpt BLUE
Definition: term.h:94
static TermOpt BG_MAGENTA
Definition: term.h:104
static TermOpt BG_DEFAULT
Definition: term.h:107
static TermOpt OFF_BF
Definition: term.h:115
static TermOpt RED
Definition: term.h:91
static TermOpt BG_YELLOW
Definition: term.h:102
static TermOpt CYAN
Definition: term.h:96
static TermOpt BG_CYAN
Definition: term.h:105
static void message(const T &msg)
Print a message.
Definition: term.h:183
static TermOpt INV
Definition: term.h:114
static TermOpt GREEN
Definition: term.h:92
static TermOpt MAGENTA
Definition: term.h:95
static TermOpt YELLOW
Definition: term.h:93
static TermOpt BG_BLUE
Definition: term.h:103
static TermOpt WAR
Definition: term.h:125
static void enable()
Enable terminal color and style.
Definition: term.cpp:51
static void detectEnv()
Detect environment variable of NO_COLOR.
Definition: term.cpp:87
static void disable()
Disable terminal color and style.
Definition: term.cpp:15
static void warning(const T &msg)
Print a warning message.
Definition: term.h:188
static TermOpt BG_RED
Definition: term.h:100
static TermOpt BG_BLACK
Definition: term.h:99
static TermOpt BLINK
Definition: term.h:113
static TermOpt RESET
Definition: term.h:108
static void error(const T &msg)
Print error message.
Definition: term.h:178
static TermOpt OFF_IT
Definition: term.h:117
static TermOpt MSG
Definition: term.h:124
static TermOpt ERR
Definition: term.h:123
static TermOpt UL
Definition: term.h:112
static TermOpt WHITE
Definition: term.h:97
static TermOpt BG_GREEN
Definition: term.h:101
static TermOpt OFF_INV
Definition: term.h:120
static TermOpt BG_WHITE
Definition: term.h:106
static TermOpt OFF_BLINK
Definition: term.h:119
static TermOpt BLACK
Definition: term.h:90
static TermOpt IT
Definition: term.h:111
Terminal option.
Definition: term.h:24
TermOpt(const char *val)
Construct a new TermOpt object.
Definition: term.h:38
bool vld
valid status (whether a colorful terminal is used)
Definition: term.h:44
TermOpt(const std::string &val)
Construct a new TermOpt object.
Definition: term.h:31
std::string v
ANSI color code.
Definition: term.h:41
static std::ostream & operator<<(std::ostream &out, const TermOpt &opt)
Use the TermOpt in ostream.
Definition: term.h:54
static TermOpt operator+(const TermOpt &o1, const TermOpt &o2)
Combine two TermOpt configurations.
Definition: term.h:66
static TermOpt operator|(const TermOpt &o1, const TermOpt &o2)
Combine two TermOpt configurations.
Definition: term.h:81