Cleaning up Statistics::copyFrom to avoid casts.
authorTim King <taking@google.com>
Fri, 2 Dec 2016 23:10:17 +0000 (15:10 -0800)
committerTim King <taking@google.com>
Fri, 2 Dec 2016 23:10:17 +0000 (15:10 -0800)
src/util/statistics.cpp

index 8384a7bb1574836a36b02eb14261fd08ba21e78d..368335f7e24b568296f409ffc1513d494c785b16 100644 (file)
@@ -52,10 +52,10 @@ StatisticsBase& StatisticsBase::operator=(const StatisticsBase& stats) {
 void Statistics::copyFrom(const StatisticsBase& stats) {
   // This is ugly, but otherwise we have to introduce a "friend" relation for
   // Base to its derived class (really obnoxious).
-  StatSet::const_iterator i_begin = ((const Statistics*) &stats)->d_stats.begin();
-  StatSet::const_iterator i_end = ((const Statistics*) &stats)->d_stats.end();
-  for(StatSet::const_iterator i = i_begin; i != i_end; ++i) {
-    SExprStat* p = new SExprStat((*i)->getName(), (*i)->getValue());
+  const StatisticsBase::const_iterator i_begin = stats.begin();
+  const StatisticsBase::const_iterator i_end = stats.end();
+  for(StatisticsBase::const_iterator i = i_begin; i != i_end; ++i) {
+    SExprStat* p = new SExprStat((*i).first, (*i).second);
     d_stats.insert(p);
   }
 }