27 #include <boost/lexical_cast.hpp>
42 : m_stream_holder(
std::move(stream_holder)) {
48 <<
"has started is not allowed";
50 if (indicator.
empty()) {
60 <<
"has started is not allowed";
69 <<
"format is not allowed";
74 while (!message_stream.eof()) {
92 auto& info = *table.getColumnInfo();
94 for (
size_t i=0; i<info.size(); ++i) {
95 auto& desc = info.getDescription(i);
97 if (!desc.unit.empty()) {
98 out <<
" (" << desc.unit <<
")";
100 if (!desc.description.empty()) {
101 out <<
" - " << desc.description;
111 for (
size_t i=0; i<info.size(); ++i) {
112 out <<
std::setw(column_lengths[i]) << info.getDescription(i).name;
123 for (
auto row : table) {
124 for (
size_t i=0; i<row.size(); ++i) {
125 out << std::setw(column_lengths[i]) << boost::lexical_cast<std::string>(row[i]);