names = []
stats_dict = {}
stats_list = []
-raw_stats_list = []
def enable():
'''Enable the statistics package. Before the statistics package is
enabled, all statistics must be created and initialized and once
the package is enabled, no more statistics can be created.'''
- __dynamic_cast = []
- for k, v in internal.stats.__dict__.iteritems():
- if k.startswith('dynamic_'):
- __dynamic_cast.append(v)
-
- for stat in internal.stats.statsList():
- for cast in __dynamic_cast:
- val = cast(stat)
- if val is not None:
- stats_list.append(val)
- raw_stats_list.append(val)
- break
- else:
- fatal("unknown stat type %s", stat)
+
+ global stats_list
+ stats_list = list(internal.stats.statsList())
for stat in stats_list:
if not stat.check() or not stat.baseCheck():
if output.valid():
output.begin()
for stat in stats_list:
- output.visit(stat)
+ stat.visit(output)
output.end()
def reset():
#include "sim/stat_register.hh"
namespace Stats {
-template <class T>
-inline T
-cast_info(Info *info)
-{
- return dynamic_cast<T>(info);
-}
inline FlagsType
Stats_Info_flags_get(Info *info)
namespace Stats {
-template <class T> T cast_info(Info *info);
-
-%template(dynamic_ScalarInfo) cast_info<ScalarInfo *>;
-%template(dynamic_VectorInfo) cast_info<VectorInfo *>;
-%template(dynamic_DistInfo) cast_info<DistInfo *>;
-%template(dynamic_VectorDistInfo) cast_info<VectorDistInfo *>;
-%template(dynamic_Vector2dInfo) cast_info<Vector2dInfo *>;
-%template(dynamic_FormulaInfo) cast_info<FormulaInfo *>;
-%template(dynamic_SparseHistInfo) cast_info<SparseHistInfo *>;
-
void initSimStats();
Output *initText(const std::string &filename, bool desc);