[sim] color up your simulator
[calu.git] / 3b_sim / ccolor.h
diff --git a/3b_sim/ccolor.h b/3b_sim/ccolor.h
new file mode 100644 (file)
index 0000000..aabf4a3
--- /dev/null
@@ -0,0 +1,65 @@
+#ifndef COLOR_H
+#define COLOR_H
+
+//
+//taken from
+//http://www.velocityreviews.com/forums/t279115-design-question-a-little-c-header-for-colorizing-text-in-linux-comments-ideas.html
+
+#include <iostream>
+using namespace std;
+
+enum ColorName
+{
+       black,
+       red,
+       green,
+       brown,
+       blue,
+       magenta,
+       cyan,
+       gray,
+
+       darkgray,
+       lightred,
+       lightgreen,
+       yellow,
+       lightblue,
+       lightmagenta,
+       lightcyan,
+       white
+};
+
+
+struct color
+{
+       color(ColorName f = white, ColorName b = black) : fore(f), back(b) {}
+
+       ColorName fore;
+       ColorName back;
+};
+
+
+inline ostream& operator<<(ostream& o, const color& c)
+{
+       o << "\033[";
+
+       if(c.back != black) {
+               o << "4" << c.back << ";";
+       }
+       else {
+               o << "0;";
+       }
+
+       if(c.fore > gray) {
+               // bold color
+               o << "1;3" << c.fore - gray - 1;
+       }
+       else {
+               o << "0;3" << c.fore ;
+       }
+
+       return o << "m";
+
+}
+
+#endif