summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrad Danofsky <bradley.danofsky@amd.com>2011-04-20 11:14:52 -0700
committerBrad Danofsky <bradley.danofsky@amd.com>2011-04-20 11:14:52 -0700
commit46a538ceab12c89f1806293f6e5f4e89f6605da4 (patch)
tree5785b1f6dbac1aa3a06ff5569e8bc17cc9463d52
parentdd38b4b83e6c8bf7a9031dfeead13a5ef354f46c (diff)
downloadgem5-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.cc1
-rw-r--r--src/base/statistics.hh17
-rw-r--r--src/base/stats/info.hh3
-rw-r--r--src/base/stats/text.cc9
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;