1

templates for << chaining + new manipulators

This commit is contained in:
churl
2022-05-06 16:51:41 +02:00
parent ab7a9c2ecb
commit 12513926d8
6 changed files with 187 additions and 184 deletions

View File

@ -25,16 +25,21 @@
*****************************************************************************/
void CGA_Stream::flush() {
print(buffer, pos, attribute(this->color_bg, this->color_fg, this->blink));
// Flushing resets attributes
this->blink = false;
this->color_bg = CGA::BLACK;
this->color_fg = CGA::LIGHT_GREY;
pos = 0;
}
// NOTE: I added this
// TODO
// CGA_Stream& CGA_Stream::operator<<(const fgc& fg) {
// this->color_fg = fg.fg;
// return *this;
// }
// CGA_Stream& CGA_Stream::operator<<(const bgc& bg) {
// this->color_bg = bg.bg;
// return *this;
// Alternative way to write the templates which keeps definition separated
// Usable for our case but somehow defeats the purpose of templates
// template<typename T>
// T& operator<<(T& os, const fgc& fg) {
// os.color_fg = fg.fg;
// return os;
// }
// template CGA_Stream& operator<<<CGA_Stream>(CGA_Stream&, const fgc&);