48 template <
typename ... T>
57 template <
typename ... TT>
58 void write(std::ostream & ostr,
const TT &... args)
const{
60 append(ostr, args...);
66 void startWrite(std::ostream & ostr)
const {
70 void endWrite(std::ostream & ostr)
const {
74 template <
typename ... TT>
75 void append(std::ostream & ostr,
const TT &... args)
const{
80 typedef std::map<drain::TextStyle::Colour,int> color_codemap_t;
81 typedef std::map<drain::TextStyle::Style,int> style_codemap_t;
82 typedef std::map<drain::TextStyle::Line,int> line_codemap_t;
85 const color_codemap_t color_codemap;
88 const style_codemap_t style_codemap;
91 const line_codemap_t line_codemap;
95 const std::map<T,int> & getCodeMap();
103 typedef std::map<E,int> codemap_t;
105 const codemap_t & map = getCodeMap<E>();
107 typename codemap_t::const_iterator it = map.find(enumCode);
108 if (it != map.end()){
113 for (
const auto & entry: map){
114 std::cerr << entry.first <<
'=' << (int)entry.first <<
" VT100=" << entry.second << std::endl;
118 std::cerr << StringBuilder<>(
TypeName<E>::str(),
": no such enumCode: ", enumCode) << std::endl;
120 std::cerr << __FILE__ <<
'/' << __FUNCTION__ <<
": no such enumCode: " << enumCode << std::endl;
121 throw std::runtime_error(
"No such enumCode: ");
132 template <
typename T,
typename ... TT>
134 void _append(std::ostream & ostr,
bool init,
const T & arg,
const TT &... args)
const{
136 _appendControlSuffix(ostr);
142 template <
typename ... TT>
144 void _append(std::ostream & ostr,
bool start,
const Colour & colour,
const TT &... args)
const{
145 _appendControlPrefix(ostr, start);
150 template <
typename ... TT>
152 void _append(std::ostream & ostr,
bool start,
const Line & line,
const TT &... args)
const{
153 _appendControlPrefix(ostr, start);
158 template <
typename ... TT>
160 void _append(std::ostream & ostr,
bool start,
const Style & style,
const TT &... args)
const{
161 _appendControlPrefix(ostr, start);
167 void _append(std::ostream & ostr,
bool init)
const{
169 _appendControlSuffix(ostr);
174 void _appendControlPrefix(std::ostream & ostr,
bool start)
const {
184 void _appendControlSuffix(std::ostream & ostr)
const {
Definition TextStyleVT100.h:44
void _append(std::ostream &ostr, bool init, const T &arg, const TT &... args) const
Definition TextStyleVT100.h:134
static int getIntCode(const E &enumCode)
Given an enum value, returns the corresponding numeric VT100 code.
Definition TextStyleVT100.h:101
Utility for scanning text segments.
Definition TextStyle.h:49