diff -r df8e64db0fd8 -r af90dcb69c0c src/base/stats/info.hh --- a/src/base/stats/info.hh Tue Apr 23 15:21:32 2013 -0500 +++ b/src/base/stats/info.hh Sun Apr 28 00:08:44 2013 -0500 @@ -57,6 +57,8 @@ const FlagsType nozero = 0x0100; /** Don't print if this is NAN */ const FlagsType nonan = 0x0200; +/** Print all values on a single line. Useful only for histograms. */ +const FlagsType oneline = 0x0400; /** Mask of flags that can't be set directly */ const FlagsType __reserved = init | display; diff -r df8e64db0fd8 -r af90dcb69c0c src/base/stats/text.cc --- a/src/base/stats/text.cc Tue Apr 23 15:21:32 2013 -0500 +++ b/src/base/stats/text.cc Sun Apr 28 00:08:44 2013 -0500 @@ -194,7 +194,7 @@ Result cdf; void update(Result val, Result total); - void operator()(ostream &stream) const; + void operator()(ostream &stream, bool oneLine = false) const; }; void @@ -208,7 +208,7 @@ } void -ScalarPrint::operator()(ostream &stream) const +ScalarPrint::operator()(ostream &stream, bool oneLine) const { if ((flags.isSet(nozero) && value == 0.0) || (flags.isSet(nonan) && std::isnan(value))) @@ -222,14 +222,18 @@ if (!std::isnan(cdf)) ccprintf(cdfstr, "%.2f%%", cdf * 100.0); - ccprintf(stream, "%-40s %12s %10s %10s", name, - ValueToString(value, precision), pdfstr.str(), cdfstr.str()); + if (oneLine) { + ccprintf(stream, "%12s ", ValueToString(value, precision)); + } else { + ccprintf(stream, "%-40s %12s %10s %10s", name, + ValueToString(value, precision), pdfstr.str(), cdfstr.str()); - if (descriptions) { - if (!desc.empty()) - ccprintf(stream, " # %s", desc); + if (descriptions) { + if (!desc.empty()) + ccprintf(stream, " # %s", desc); + } + stream << endl; } - stream << endl; } struct VectorPrint @@ -384,6 +388,20 @@ if (data.type == Deviation) return; + if (flags.isSet(oneline)) { + print.name = base + "lower_bound"; + print.value = data.min; + print(stream); + + print.name = base + "upper_bound"; + print.value = data.max; + print(stream); + + print.name = base + "bucket_size"; + print.value = data.bucket_size; + print(stream); + } + size_t size = data.cvec.size(); Result total = 0.0; @@ -405,6 +423,10 @@ print(stream); } + if (flags.isSet(oneline)) { + stream << base + "data"; + } + for (off_type i = 0; i < size; ++i) { stringstream namestr; namestr << base; @@ -417,7 +439,11 @@ print.name = namestr.str(); print.update(data.cvec[i], total); - print(stream); + print(stream, flags.isSet(oneline)); + } + + if (flags.isSet(oneline)) { + stream << endl; } if (data.type == Dist && data.overflow != NAN) {