31 std::ostream &
out = std::cout;
41 cols.emplace_back(std::forward<T>(arg)...);
48 template <
class... Ts>
51 printRow(
static_cast<size_t>(0), args...);
55 template <
class T,
class... Ts>
58 out <<
padding << std::setw(
cols[index].width) << std::setprecision(
cols[index].precision)
64 template <
class Rep,
class Period,
class... Ts>
65 void printRow(
size_t index, std::chrono::duration<Rep, Period> duration, Ts... args)
67 double ms = std::chrono::duration_cast<std::chrono::milliseconds>(duration).count();
68 out <<
padding << std::setw(
cols[index].width) << std::setprecision(
cols[index].precision)
77 out <<
padding << std::setw(
cols[index].width) << std::setprecision(
cols[index].precision)
std::vector< Column > cols
void addColumn(T &&...arg)
Adds a column of given name, width and float precision.
void printRow(size_t index, std::chrono::duration< Rep, Period > duration, Ts... args)
Prints a duration as milliseconds.
void printRow(size_t index, T a, Ts... args)
Prints a ostream convertible type.
void printRow(size_t index, T a)
Recursion anchor, prints the last entry and the endl.
void printHeader()
Prints the formatted header.
void printRow(Ts... args)
Prints a line, accepting arbitrary arguments.
Column(std::string const &name)