MCPcopy Create free account
hub / github.com/MegEngine/MegEngine / show

Method show

lite/load_and_run/src/helpers/text_table.cpp:31–107  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

29}
30
31void TextTable::show(std::ostream& os) {
32 if (m_rows.empty())
33 return;
34 auto& last_row = m_rows.front();
35 bool first = true;
36 for (auto& row : m_rows) {
37 auto& lrow =
38 (last_row.values.size() * char_length(last_row.params.horizontal)) >
39 (row.values.size() * char_length(row.params.horizontal))
40 ? last_row
41 : row;
42 // line before row
43 if (lrow.params.horizontal) {
44 if (not first)
45 os << std::endl;
46 os << m_prefix;
47 if (lrow.params.corner)
48 os << lrow.params.corner;
49 size_t skip_size = 0;
50 // table name
51 if (first) {
52 os << m_name;
53 skip_size = m_name.length();
54 }
55 for (size_t i = 0; i < lrow.values.size(); ++i) {
56 auto max_w = m_cols_max_w.at(i) + m_padding * 2;
57 if (max_w + char_length(lrow.params.corner) <= skip_size) {
58 skip_size = skip_size - max_w - char_length(lrow.params.corner);
59 continue;
60 }
61 size_t rest = max_w + char_length(lrow.params.corner) - skip_size;
62 skip_size = 0;
63 if (rest > char_length(lrow.params.corner)) {
64 os << std::string(
65 rest - char_length(lrow.params.corner),
66 lrow.params.horizontal);
67 rest = char_length(lrow.params.corner);
68 }
69 if (rest > 0 && lrow.params.corner)
70 os << lrow.params.corner;
71 }
72 } else if (first) {
73 os << m_prefix << ' ' << m_name;
74 }
75 first = false;
76 os << std::endl << m_prefix;
77 if (row.params.vertical)
78 os << row.params.vertical;
79 // row
80 for (size_t i = 0; i < row.values.size(); ++i) {
81 auto& str = row.values.at(i);
82 auto max_w = m_cols_max_w.at(i) + 2 * m_padding;
83 if (row.params.align == Align::Mid) {
84 mid(os, str, max_w);
85 } else if (row.params.align == Align::Left) {
86 os << std::setw(max_w) << std::left << str;
87 } else {
88 os << std::setw(max_w) << std::right << str;

Callers 1

text_table.hFile · 0.80

Calls 6

char_lengthFunction · 0.85
midFunction · 0.85
frontMethod · 0.80
emptyMethod · 0.45
sizeMethod · 0.45
atMethod · 0.45

Tested by

no test coverage detected