29d28
< * Erik Hallnor
62a62
> #include "base/cast.hh"
88c88
< struct StatData
---
> class Info
89a90
> public:
99c100
< const StatData *prereq;
---
> const Info *prereq;
106,107c107,109
< StatData();
< virtual ~StatData();
---
> public:
> Info();
> virtual ~Info();
141c143
< static bool less(StatData *stat1, StatData *stat2);
---
> static bool less(Info *stat1, Info *stat2);
144c146
< class ScalarData : public StatData
---
> class ScalarInfoBase : public Info
154c156
< class ScalarStatData : public ScalarData
---
> class ScalarInfo : public ScalarInfoBase
160c162
< ScalarStatData(Stat &stat) : s(stat) {}
---
> ScalarInfo(Stat &stat) : s(stat) {}
170c172
< struct VectorData : public StatData
---
> class VectorInfoBase : public Info
171a174
> public:
175a179
> public:
196c200
< class VectorStatData : public VectorData
---
> class VectorInfo : public VectorInfoBase
204c208
< VectorStatData(Stat &stat) : s(stat) {}
---
> VectorInfo(Stat &stat) : s(stat) {}
237c241
< struct DistDataData
---
> struct DistData
255c259
< struct DistData : public StatData
---
> class DistInfoBase : public Info
256a261
> public:
258c263
< DistDataData data;
---
> DistData data;
262c267
< class DistStatData : public DistData
---
> class DistInfo : public DistInfoBase
268c273
< DistStatData(Stat &stat) : s(stat) {}
---
> DistInfo(Stat &stat) : s(stat) {}
282c287
< struct VectorDistData : public StatData
---
> class VectorDistInfoBase : public Info
284c289,290
< std::vector<DistDataData> data;
---
> public:
> std::vector<DistData> data;
289a296
> protected:
292a300
> public:
308c316
< class VectorDistStatData : public VectorDistData
---
> class VectorDistInfo : public VectorDistInfoBase
314c322
< VectorDistStatData(Stat &stat) : s(stat) {}
---
> VectorDistInfo(Stat &stat) : s(stat) {}
330c338
< struct Vector2dData : public StatData
---
> class Vector2dInfoBase : public Info
331a340
> public:
341a351
> public:
351c361
< class Vector2dStatData : public Vector2dData
---
> class Vector2dInfo : public Vector2dInfoBase
357c367
< Vector2dStatData(Stat &stat) : s(stat) {}
---
> Vector2dInfo(Stat &stat) : s(stat) {}
372c382
< class DataAccess
---
> class InfoAccess
375,380c385,388
< StatData *find() const;
< void map(StatData *data);
<
< StatData *statData();
< const StatData *statData() const;
<
---
> Info *find() const;
> /** Set up an info class for this statistic */
> void setInfo(Info *info);
> /** Save Storage class parameters if any */
382c390,392
< void setPrint();
---
>
> Info *info();
> const Info *info() const;
385c395
< template <class Parent, class Child, template <class> class Data>
---
> template <class Parent, class Child, template <class> class Info>
387a398,402
> public:
> typedef Parent ParentType;
> typedef Child ChildType;
> typedef Info<Child> InfoType;
>
392,393c407,408
< Data<Child> *
< statData()
---
> InfoType *
> info()
395,398c410
< StatData *__data = DataAccess::statData();
< Data<Child> *ptr = dynamic_cast<Data<Child> *>(__data);
< assert(ptr);
< return ptr;
---
> return safe_cast<InfoType *>(InfoAccess::info());
402,403c414,415
< const Data<Child> *
< statData() const
---
> const InfoType *
> info() const
405,408c417
< const StatData *__data = DataAccess::statData();
< const Data<Child> *ptr = dynamic_cast<const Data<Child> *>(__data);
< assert(ptr);
< return ptr;
---
> return safe_cast<const InfoType *>(InfoAccess::info());
425c434
< this->map(new Data<Child>(*this));
---
> this->setInfo(new InfoType(*this));
436,438c445,447
< Data<Child> *data = this->statData();
< data->name = _name;
< this->setPrint();
---
> InfoType *info = this->info();
> info->name = _name;
> info->flags |= print;
451c460
< this->statData()->desc = _desc;
---
> this->info()->desc = _desc;
463c472
< this->statData()->precision = _precision;
---
> this->info()->precision = _precision;
475c484
< this->statData()->flags |= _flags;
---
> this->info()->flags |= _flags;
489c498
< this->statData()->prereq = prereq.statData();
---
> this->info()->prereq = prereq.info();
494,495c503,504
< template <class Parent, class Child, template <class Child> class Data>
< class WrapVec : public Wrap<Parent, Child, Data>
---
> template <class Parent, class Child, template <class Child> class Info>
> class WrapVec : public Wrap<Parent, Child, Info>
497a507,511
> typedef Parent ParentType;
> typedef Child ChildType;
> typedef Info<Child> InfoType;
>
> public:
511c525
< std::vector<std::string> &subn = this->statData()->subnames;
---
> std::vector<std::string> &subn = this->info()->subnames;
528c542
< std::vector<std::string> &subd = this->statData()->subdescs;
---
> std::vector<std::string> &subd = this->info()->subdescs;
538,539c552,553
< template <class Parent, class Child, template <class Child> class Data>
< class WrapVec2d : public WrapVec<Parent, Child, Data>
---
> template <class Parent, class Child, template <class Child> class Info>
> class WrapVec2d : public WrapVec<Parent, Child, Info>
541a556,560
> typedef Parent ParentType;
> typedef Child ChildType;
> typedef Info<Child> InfoType;
>
> public:
549,550c568,569
< Data<Child> *data = this->statData();
< data->y_subnames.resize(this->y);
---
> InfoType *info = this->info();
> info->y_subnames.resize(this->y);
552c571
< data->y_subnames[i] = names[i];
---
> info->y_subnames[i] = names[i];
559c578
< Data<Child> *data = this->statData();
---
> InfoType *info = this->info();
561,562c580,581
< data->y_subnames.resize(this->y);
< data->y_subnames[index] = subname.c_str();
---
> info->y_subnames.resize(this->y);
> info->y_subnames[index] = subname.c_str();
576c595
< struct StatStor
---
> class StatStor
641c660
< struct AvgStor
---
> class AvgStor
668c687,688
< set(Counter val, Params &p) {
---
> set(Counter val, Params &p)
> {
729c749
< class ScalarBase : public DataAccess
---
> class ScalarBase : public InfoAccess
854c874
< class ProxyData : public ScalarData
---
> class ProxyInfo : public ScalarInfoBase
866c886
< class ValueProxy : public ProxyData
---
> class ValueProxy : public ProxyInfo
879c899
< class FunctorProxy : public ProxyData
---
> class FunctorProxy : public ProxyInfo
891c911
< class ValueBase : public DataAccess
---
> class ValueBase : public InfoAccess
894c914
< ProxyData *proxy;
---
> ProxyInfo *proxy;
986c1006,1007
< operator=(const ScalarProxy &sp) {
---
> operator=(const ScalarProxy &sp)
> {
1061c1082
< return csprintf("%s[%d]", stat->statData()->name, index);
---
> return csprintf("%s[%d]", stat->info()->name, index);
1070c1091
< class VectorBase : public DataAccess
---
> class VectorBase : public InfoAccess
1210c1231
< void update(StatData *data) {}
---
> void update(Info *data) {}
1295c1316
< class Vector2dBase : public DataAccess
---
> class Vector2dBase : public InfoAccess
1321c1342
< Vector2dData *statdata = dynamic_cast<Vector2dData *>(find());
---
> Vector2dInfoBase *info = dynamic_cast<Vector2dInfoBase *>(find());
1325,1326c1346,1347
< statdata->x = _x;
< statdata->y = _y;
---
> info->x = _x;
> info->y = _y;
1354c1375
< update(Vector2dData *newdata)
---
> update(Vector2dInfoBase *newinfo)
1357c1378
< newdata->cvec.resize(size);
---
> newinfo->cvec.resize(size);
1359c1380
< newdata->cvec[i] = data(i)->value(params);
---
> newinfo->cvec[i] = data(i)->value();
1417c1438
< struct DistStor
---
> class DistStor
1510c1531
< update(DistDataData *data, const Params &params)
---
> update(DistData *data, const Params &params)
1555c1576
< struct FancyStor
---
> class FancyStor
1598c1619
< update(DistDataData *data, const Params &params)
---
> update(DistData *data, const Params &params)
1633c1654
< struct AvgFancy
---
> class AvgFancy
1668c1689
< update(DistDataData *data, const Params &params)
---
> update(DistData *data, const Params &params)
1703c1724
< class DistBase : public DataAccess
---
> class DistBase : public InfoAccess
1769c1790
< update(DistData *base)
---
> update(DistInfoBase *base)
1795c1816
< class VectorDistBase : public DataAccess
---
> class VectorDistBase : public InfoAccess
1889c1910
< update(VectorDistData *base)
---
> update(VectorDistInfoBase *base)
2014c2035
< const ScalarData *data;
---
> const ScalarInfoBase *data;
2018c2039
< ScalarStatNode(const ScalarData *d) : data(d), vresult(1) {}
---
> ScalarStatNode(const ScalarInfoBase *d) : data(d), vresult(1) {}
2081c2102
< const VectorData *data;
---
> const VectorInfoBase *data;
2084c2105
< VectorStatNode(const VectorData *d) : data(d) { }
---
> VectorStatNode(const VectorInfoBase *d) : data(d) { }
2367c2388
< class Scalar : public Wrap<Scalar<N>, ScalarBase<StatStor>, ScalarStatData>
---
> class Scalar : public Wrap<Scalar<N>, ScalarBase<StatStor>, ScalarInfo>
2387c2408
< class Value : public Wrap<Value, ValueBase, ScalarStatData>
---
> class Value : public Wrap<Value, ValueBase, ScalarInfo>
2415c2436
< class Average : public Wrap<Average<N>, ScalarBase<AvgStor>, ScalarStatData>
---
> class Average : public Wrap<Average<N>, ScalarBase<AvgStor>, ScalarInfo>
2444c2465
< class Vector : public WrapVec<Vector<N>, VectorBase<StatStor>, VectorStatData>
---
> class Vector : public WrapVec<Vector<N>, VectorBase<StatStor>, VectorInfo>
2469c2490
< : public WrapVec<AverageVector<N>, VectorBase<AvgStor>, VectorStatData>
---
> : public WrapVec<AverageVector<N>, VectorBase<AvgStor>, VectorInfo>
2491c2512
< : public WrapVec2d<Vector2d<N>, Vector2dBase<StatStor>, Vector2dStatData>
---
> : public WrapVec2d<Vector2d<N>, Vector2dBase<StatStor>, Vector2dInfo>
2508c2529
< : public Wrap<Distribution<N>, DistBase<DistStor>, DistStatData>
---
> : public Wrap<Distribution<N>, DistBase<DistStor>, DistInfo>
2542c2563
< : public Wrap<StandardDeviation<N>, DistBase<FancyStor>, DistStatData>
---
> : public Wrap<StandardDeviation<N>, DistBase<FancyStor>, DistInfo>
2566c2587
< : public Wrap<AverageDeviation<N>, DistBase<AvgFancy>, DistStatData>
---
> : public Wrap<AverageDeviation<N>, DistBase<AvgFancy>, DistInfo>
2592c2613
< VectorDistStatData>
---
> VectorDistInfo>
2629c2650
< VectorDistStatData>
---
> VectorDistInfo>
2659c2680
< VectorDistStatData>
---
> VectorDistInfo>
2686c2707
< class FormulaBase : public DataAccess
---
> class FormulaBase : public InfoAccess
2735c2756
< void update(StatData *);
---
> void update(Info *);
2740c2761
< class FormulaData : public VectorData
---
> class FormulaInfoBase : public VectorInfoBase
2748c2769
< class FormulaStatData : public FormulaData
---
> class FormulaInfo : public FormulaInfoBase
2756c2777
< FormulaStatData(Stat &stat) : s(stat) {}
---
> FormulaInfo(Stat &stat) : s(stat) {}
2787c2808
< FormulaStatData>
---
> FormulaInfo>
2864c2885
< : node(new ScalarStatNode(s.statData()))
---
> : node(new ScalarStatNode(s.info()))
2872c2893
< : node(new ScalarStatNode(s.statData()))
---
> : node(new ScalarStatNode(s.info()))
2881c2902
< : node(new ScalarStatNode(s.statData()))
---
> : node(new ScalarStatNode(s.info()))
2890c2911
< : node(new VectorStatNode(s.statData()))
---
> : node(new VectorStatNode(s.info()))