From 30753c76af479e3a5aaeb7719756e5fb194c880c Mon Sep 17 00:00:00 2001 From: Roland Conybeare Date: Mon, 18 Sep 2023 13:01:44 -0400 Subject: [PATCH] indentlog: refactor: color_encoding -> strongly-typed --- include/indentlog/color.hpp | 26 +++++++++++++------------- include/indentlog/log_level.hpp | 2 +- include/indentlog/tag_config.hpp | 2 +- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/include/indentlog/color.hpp b/include/indentlog/color.hpp index 6d0ee749..32661d9b 100644 --- a/include/indentlog/color.hpp +++ b/include/indentlog/color.hpp @@ -7,10 +7,10 @@ #include namespace xo { - enum color_encoding { - CE_None, - CE_Ansi, - CE_Xterm, + enum class color_encoding : std::uint8_t { + none, + ansi, + xterm, }; /* specify a color (consistent with ANSI escape sequences - the Select Graphics Rendition subset @@ -32,8 +32,8 @@ namespace xo { : encoding_{encoding}, code_{code} {} static color_spec none() { return color_spec(); } - static color_spec ansi(std::uint32_t code) { return color_spec(CE_Ansi, code); } - static color_spec xterm(std::uint32_t code) { return color_spec(CE_Xterm, code); } + static color_spec ansi(std::uint32_t code) { return color_spec(color_encoding::ansi, code); } + static color_spec xterm(std::uint32_t code) { return color_spec(color_encoding::xterm, code); } static color_spec rgb(std::uint8_t red, std::uint8_t green, std::uint8_t blue) { return none(); //return color_spec(CE_Rgb, (red << 16 | green << 8 | blue)); @@ -62,12 +62,12 @@ namespace xo { void print_fg_color_on (std::ostream & os) const { switch (encoding_) { - case CE_None: + case color_encoding::none: break; - case CE_Ansi: + case color_encoding::ansi: os << "\033[31;" << code_ << "m"; break; - case CE_Xterm: + case color_encoding::xterm: os << "\033[38;5;" << code_ << "m"; break; } @@ -76,10 +76,10 @@ namespace xo { /* escape to reverse effect of .print_on() */ void print_fg_color_off (std::ostream & os) const { switch (encoding_) { - case CE_None: + case color_encoding::none: break; - case CE_Ansi: - case CE_Xterm: + case color_encoding::ansi: + case color_encoding::xterm: os << "\033[0m"; break; } @@ -87,7 +87,7 @@ namespace xo { private: /* none | ansi | xterm | rgb */ - color_encoding encoding_ = CE_None; + color_encoding encoding_ = color_encoding::none; /* ansi : 30..37, 90..97 * xterm : 0..255 * see [[https://i.stack.imgur.com/KTSQa.png]] diff --git a/include/indentlog/log_level.hpp b/include/indentlog/log_level.hpp index 55c4f2a4..8b470891 100644 --- a/include/indentlog/log_level.hpp +++ b/include/indentlog/log_level.hpp @@ -3,7 +3,7 @@ #include namespace xo { - enum class log_level : std::uint32_t { + enum class log_level : std::uint8_t { /* control log message severity * silent > always > severe > error > warning > info > chatty > never * diff --git a/include/indentlog/tag_config.hpp b/include/indentlog/tag_config.hpp index d4a67cb7..8b9643e6 100644 --- a/include/indentlog/tag_config.hpp +++ b/include/indentlog/tag_config.hpp @@ -22,7 +22,7 @@ namespace xo { template color_encoding - tag_config_impl::encoding = CE_Xterm; + tag_config_impl::encoding = color_encoding::xterm; template std::uint32_t