diff options
author | Brad Danofsky <bradley.danofsky@amd.com> | 2011-04-20 11:14:52 -0700 |
---|---|---|
committer | Brad Danofsky <bradley.danofsky@amd.com> | 2011-04-20 11:14:52 -0700 |
commit | 46a538ceab12c89f1806293f6e5f4e89f6605da4 (patch) | |
tree | 5785b1f6dbac1aa3a06ff5569e8bc17cc9463d52 | |
parent | dd38b4b83e6c8bf7a9031dfeead13a5ef354f46c (diff) | |
download | gem5-46a538ceab12c89f1806293f6e5f4e89f6605da4.tar.xz |
stats: add user settable separator string for arrayed stats
Default is '::', so no visible change unless it is overridden
-rw-r--r-- | src/base/statistics.cc | 1 | ||||
-rw-r--r-- | src/base/statistics.hh | 17 | ||||
-rw-r--r-- | src/base/stats/info.hh | 3 | ||||
-rw-r--r-- | src/base/stats/text.cc | 9 |
4 files changed, 28 insertions, 2 deletions
diff --git a/src/base/statistics.cc b/src/base/statistics.cc index fa3a4a0c9..8bbc4bf36 100644 --- a/src/base/statistics.cc +++ b/src/base/statistics.cc @@ -48,6 +48,7 @@ using namespace std; namespace Stats { +std::string Info::separatorString = "::"; typedef map<const void *, Info *> MapType; // We wrap these in a function to make sure they're built in time. diff --git a/src/base/statistics.hh b/src/base/statistics.hh index de5540272..f139bce61 100644 --- a/src/base/statistics.hh +++ b/src/base/statistics.hh @@ -256,6 +256,23 @@ class DataWrap : public InfoAccess const std::string &name() const { return this->info()->name; } /** + * Set the character(s) used between the name and vector number + * on vectors, dist, etc. + * @param _sep The new separator string + * @return A reference to this stat. + */ + Derived & + setSeparator(const std::string &_sep) + { + this->info()->setSeparator(_sep); + return this->self(); + } + const std::string &setSeparator() const + { + return this->info()->separatorString; + } + + /** * Set the description and marks this stat to print at the end of * simulation. * @param desc The new description. diff --git a/src/base/stats/info.hh b/src/base/stats/info.hh index 9c81442ee..1759b4796 100644 --- a/src/base/stats/info.hh +++ b/src/base/stats/info.hh @@ -69,6 +69,8 @@ class Info public: /** The name of the stat. */ std::string name; + /** The separator string used for vectors, dist, etc. */ + static std::string separatorString; /** The description of the stat. */ std::string desc; /** The formatting flags. */ @@ -93,6 +95,7 @@ class Info /** Set the name of this statistic */ void setName(const std::string &name); + void setSeparator(std::string _sep) { separatorString = _sep;} /** * Check that this stat has been set up properly and is ready for diff --git a/src/base/stats/text.cc b/src/base/stats/text.cc index ab5c7e8a9..f1ba59f0e 100644 --- a/src/base/stats/text.cc +++ b/src/base/stats/text.cc @@ -234,6 +234,7 @@ ScalarPrint::operator()(ostream &stream) const struct VectorPrint { string name; + string separatorString; string desc; vector<string> subnames; vector<string> subdescs; @@ -258,7 +259,7 @@ VectorPrint::operator()(std::ostream &stream) const } } - string base = name + "::"; + string base = name + separatorString; ScalarPrint print; print.name = name; @@ -301,6 +302,7 @@ VectorPrint::operator()(std::ostream &stream) const struct DistPrint { string name; + string separatorString; string desc; Flags flags; bool descriptions; @@ -336,6 +338,7 @@ void DistPrint::init(const Text *text, const Info &info) { name = info.name; + separatorString = info.separatorString; desc = info.desc; flags = info.flags; precision = info.precision; @@ -345,7 +348,7 @@ DistPrint::init(const Text *text, const Info &info) void DistPrint::operator()(ostream &stream) const { - string base = name + "::"; + string base = name + separatorString; ScalarPrint print; print.precision = precision; @@ -465,6 +468,7 @@ Text::visit(const VectorInfo &info) VectorPrint print; print.name = info.name; + print.separatorString = info.separatorString; print.desc = info.desc; print.flags = info.flags; print.descriptions = descriptions; @@ -504,6 +508,7 @@ Text::visit(const Vector2dInfo &info) print.subnames = info.y_subnames; print.flags = info.flags; + print.separatorString = info.separatorString; print.descriptions = descriptions; print.precision = info.precision; |