| 74 | } |
| 75 | |
| 76 | string TablePrinter::ToString(const string& prefix) const { |
| 77 | vector<int> output_widths = max_col_widths_; |
| 78 | int total_width = 0; |
| 79 | for (int i = 0; i < output_widths.size(); ++i) { |
| 80 | if (max_output_width_ >= 0) { |
| 81 | output_widths[i] = std::min(output_widths[i], max_output_width_); |
| 82 | } |
| 83 | output_widths[i] += COLUMN_PAD; |
| 84 | total_width += output_widths[i]; |
| 85 | } |
| 86 | |
| 87 | stringstream ss; |
| 88 | ss << prefix; |
| 89 | |
| 90 | // Print the labels and line after. |
| 91 | PrintRow(&ss, labels_, output_widths); |
| 92 | ss << endl; |
| 93 | |
| 94 | // Print line after labels |
| 95 | for (int i = 0; i < total_width; ++i) { |
| 96 | ss << "-"; |
| 97 | } |
| 98 | ss << endl; |
| 99 | |
| 100 | // Print the rows |
| 101 | for (int i = 0; i < rows_.size(); ++i) { |
| 102 | PrintRow(&ss, rows_[i], output_widths); |
| 103 | if (i != rows_.size() - 1) ss << endl; |
| 104 | } |
| 105 | |
| 106 | return ss.str(); |
| 107 | } |