bechordal: Cleanup.
[libfirm] / ir / stat / distrib.c
index 02e60d1..bd4299e 100644 (file)
  * @file
  * @brief   Statistics for Firm. Distribution tables.
  * @author  Michael Beck
- * @version $Id$
  */
 #include "config.h"
 
 #include "hashptr.h"
-#include "irtools.h"
+#include "util.h"
 #include "xmalloc.h"
 #include "firmstat_t.h"
 
@@ -35,7 +34,7 @@
  */
 static unsigned addr_hash(const void *object)
 {
-       return HASH_PTR(object);
+       return hash_ptr(object);
 }
 
 /**
@@ -187,10 +186,9 @@ void stat_insert_int_distrib_tbl(distrib_tbl_t *tbl, int key)
  */
 int stat_get_count_distrib_tbl(distrib_tbl_t *tbl)
 {
-       distrib_entry_t *entry;
        counter_t cnt = ZERO_CNT;
 
-       foreach_pset(tbl->hash_map, distrib_entry_t*, entry)
+       foreach_pset(tbl->hash_map, distrib_entry_t, entry)
                cnt_add(&cnt, &entry->cnt);
        return cnt_to_uint(&cnt);
 }
@@ -200,26 +198,19 @@ int stat_get_count_distrib_tbl(distrib_tbl_t *tbl)
  */
 double stat_calc_mean_distrib_tbl(distrib_tbl_t *tbl)
 {
-       distrib_entry_t *entry;
        size_t count;
        double sum;
 
        if (tbl->int_dist) {
                /* integer distribution, need min, max */
-               int min, max;
-
-               entry = (distrib_entry_t*)pset_first(tbl->hash_map);
-
-               if (! entry)
+               if (pset_count(tbl->hash_map) == 0)
                        return 0.0;
 
-               min =
-               max = PTR_TO_INT(entry->object);
-               sum = cnt_to_dbl(&entry->cnt);
-
+               int min = INT_MAX;
+               int max = INT_MIN;
+               sum = 0.0;
 
-               for (entry = (distrib_entry_t*)pset_next(tbl->hash_map); entry != NULL;
-                    entry = (distrib_entry_t*)pset_next(tbl->hash_map)) {
+               foreach_pset(tbl->hash_map, distrib_entry_t, entry) {
                        int value = PTR_TO_INT(entry->object);
 
                        if (value < min)
@@ -233,7 +224,7 @@ double stat_calc_mean_distrib_tbl(distrib_tbl_t *tbl)
        } else {
                sum = 0.0;
                count = 0;
-               foreach_pset(tbl->hash_map, distrib_entry_t*, entry) {
+               foreach_pset(tbl->hash_map, distrib_entry_t, entry) {
                        sum += cnt_to_dbl(&entry->cnt);
                        ++count;
                }
@@ -247,20 +238,19 @@ double stat_calc_mean_distrib_tbl(distrib_tbl_t *tbl)
  */
 double stat_calc_avg_distrib_tbl(distrib_tbl_t *tbl)
 {
-       distrib_entry_t *entry;
-       size_t          count = 0;
-       double          sum   = 0.0;
+       size_t count = 0;
+       double sum   = 0.0;
 
        if (tbl->int_dist) {
                if (pset_count(tbl->hash_map) <= 0)
                        return 0.0;
 
-               foreach_pset(tbl->hash_map, distrib_entry_t*, entry) {
+               foreach_pset(tbl->hash_map, distrib_entry_t, entry) {
                        sum   += cnt_to_dbl(&entry->cnt) * PTR_TO_INT(entry->object);
                        count += cnt_to_uint(&entry->cnt);
                }
        } else {
-               foreach_pset(tbl->hash_map, distrib_entry_t*, entry) {
+               foreach_pset(tbl->hash_map, distrib_entry_t, entry) {
                        sum += cnt_to_dbl(&entry->cnt);
                        ++count;
                }
@@ -274,8 +264,6 @@ double stat_calc_avg_distrib_tbl(distrib_tbl_t *tbl)
  */
 void stat_iterate_distrib_tbl(const distrib_tbl_t *tbl, eval_distrib_entry_fun eval, void *env)
 {
-       distrib_entry_t *entry;
-
-       foreach_pset(tbl->hash_map, distrib_entry_t*, entry)
+       foreach_pset(tbl->hash_map, distrib_entry_t, entry)
                eval(entry, env);
 }