summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/base/statistics.hh43
-rw-r--r--src/base/stats/text.cc16
-rw-r--r--src/unittest/stattest.cc14
3 files changed, 35 insertions, 38 deletions
diff --git a/src/base/statistics.hh b/src/base/statistics.hh
index 37bb1b90b..5fca376e3 100644
--- a/src/base/statistics.hh
+++ b/src/base/statistics.hh
@@ -401,7 +401,7 @@ class DataWrapVec2d : public DataWrapVec<Derived, InfoProxyType>
}
Derived &
- ysubname(off_type index, const std::string subname)
+ ysubname(off_type index, const std::string &subname)
{
Derived &self = this->self();
Info *info = this->info();
@@ -411,6 +411,13 @@ class DataWrapVec2d : public DataWrapVec<Derived, InfoProxyType>
info->y_subnames[index] = subname.c_str();
return self;
}
+
+ std::string
+ ysubname(off_type i) const
+ {
+ return this->info()->y_subnames[i];
+ }
+
};
//////////////////////////////////////////////////////////////////////
@@ -1197,8 +1204,6 @@ class Vector2dBase : public DataWrapVec2d<Derived, Vector2dInfoProxy>
return self;
}
- std::string ysubname(off_type i) const { return (*this->y_subnames)[i]; }
-
Proxy
operator[](off_type index)
{
@@ -1713,13 +1718,10 @@ class VectorDistBase : public DataWrapVec<Derived, VectorDistInfoProxy>
bool
zero() const
{
- return false;
-#if 0
for (off_type i = 0; i < size(); ++i)
if (!data(i)->zero())
return false;
return true;
-#endif
}
void
@@ -1792,27 +1794,6 @@ class DistProxy
*/
void reset() { }
};
-/*
-template <class Derived, class Stor>
-inline typename VectorDistBase<Derived, Stor>::Proxy
-VectorDistBase<Derived, Stor>::operator[](off_type index)
-{
- assert (index >= 0 && index < size());
- typedef typename VectorDistBase<Derived, Stor>::Proxy Proxy;
- return Proxy(this->self(), index);
-}
-*/
-
-#if 0
-template <class Storage>
-Result
-VectorDistBase<Storage>::total(off_type index) const
-{
- Result total = 0.0;
- for (off_type i = 0; i < x_size(); ++i)
- total += data(i)->result();
-}
-#endif
//////////////////////////////////////////////////////////////////////
//
@@ -2291,7 +2272,9 @@ class StandardDeviation : public DistBase<StandardDeviation, SampleStor>
*/
StandardDeviation()
{
+ SampleStor::Params *params = new SampleStor::Params;
this->doInit();
+ this->setParams(params);
}
};
@@ -2307,7 +2290,9 @@ class AverageDeviation : public DistBase<AverageDeviation, AvgSampleStor>
*/
AverageDeviation()
{
+ AvgSampleStor::Params *params = new AvgSampleStor::Params;
this->doInit();
+ this->setParams(params);
}
};
@@ -2356,7 +2341,9 @@ class VectorStandardDeviation
VectorStandardDeviation &
init(size_type size)
{
+ SampleStor::Params *params = new SampleStor::Params;
this->doInit(size);
+ this->setParams(params);
return this->self();
}
};
@@ -2377,7 +2364,9 @@ class VectorAverageDeviation
VectorAverageDeviation &
init(size_type size)
{
+ AvgSampleStor::Params *params = new AvgSampleStor::Params;
this->doInit(size);
+ this->setParams(params);
return this->self();
}
};
diff --git a/src/base/stats/text.cc b/src/base/stats/text.cc
index f3c4d1c58..87bb05323 100644
--- a/src/base/stats/text.cc
+++ b/src/base/stats/text.cc
@@ -348,10 +348,18 @@ DistPrint::init(const Text *text, const Info &info, const DistParams *params)
descriptions = text->descriptions;
type = params->type;
- min = params->min;
- max = params->max;
- bucket_size = params->bucket_size;
- size = params->buckets;
+ switch (type) {
+ case Dist:
+ min = params->min;
+ max = params->max;
+ bucket_size = params->bucket_size;
+ size = params->buckets;
+ break;
+ case Deviation:
+ break;
+ default:
+ panic("unknown distribution type");
+ }
}
void
diff --git a/src/unittest/stattest.cc b/src/unittest/stattest.cc
index 9c10d078c..7c7b116a8 100644
--- a/src/unittest/stattest.cc
+++ b/src/unittest/stattest.cc
@@ -38,6 +38,7 @@
#include "base/stats/text.hh"
#include "base/stats/mysql.hh"
#include "base/types.hh"
+#include "sim/stat_control.hh"
using namespace std;
using namespace Stats;
@@ -67,7 +68,6 @@ int
main(int argc, char *argv[])
{
bool descriptions = false;
- bool compat = false;
bool text = false;
#if USE_MYSQL
@@ -82,9 +82,6 @@ main(int argc, char *argv[])
progname = argv[0];
while ((c = getopt(argc, argv, "cD:dh:P:p:s:tu:")) != -1) {
switch (c) {
- case 'c':
- compat = true;
- break;
case 'd':
descriptions = true;
break;
@@ -113,9 +110,11 @@ main(int argc, char *argv[])
}
}
- if (!text && (compat || descriptions))
+ if (!text && descriptions)
usage();
+ initSimStats();
+
Scalar s1;
Scalar s2;
Average s3;
@@ -304,7 +303,7 @@ main(int argc, char *argv[])
f4 += s5[3];
f5 = constant(1);
- check();
+ enable();
reset();
s16[1][0] = 1;
@@ -545,10 +544,11 @@ main(int argc, char *argv[])
s12.sample(100);
+ prepare();
+
if (text) {
Text out(cout);
out.descriptions = descriptions;
- out.compat = compat;
out();
}