Simplify the use of eina_benchmark:
authorcaro <caro@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Thu, 31 Dec 2009 09:17:28 +0000 (09:17 +0000)
committercaro <caro@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Thu, 31 Dec 2009 09:17:28 +0000 (09:17 +0000)
 * Free the inlined list returned by one (or several) calls of
   eina_benchmark_run() automatically in eina_benchmark_free()
   instead of letting the user doing it.

 * Update tutorial and benchmark binary accordingly

git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/eina@44830 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/eina_benchmark.c
src/tests/eina_bench.c

index 482346a..476023d 100644 (file)
  *
  *   ea = eina_benchmark_run(test);
  *
- *   if(ea)
- *     {
- *       Eina_Array_Iterator it;
- *       char *tmp;
- *       unsigned int i;
- *
- *       EINA_ARRAY_ITER_NEXT(ea, i, tmp, it)
- *         free(tmp);
- *
- *       eina_array_free(ea);
- *     }
- *
  *   eina_benchmark_free(test);
  *   eina_shutdown();
  *
  *       benchmarks[i].build(test);
  *
  *       ea = eina_benchmark_run(test);
- *       if(ea)
- *         {
- *           Eina_Array_Iterator it;
- *           char *tmp;
- *           unsigned int i;
- *
- *           EINA_ARRAY_ITER_NEXT(ea, i, tmp, it)
- *             free(tmp);
- *
- *           eina_array_free(ea);
- *         }
  *
- *       if (test)
- *         eina_benchmark_free(test);
+ *       eina_benchmark_free(test);
  *     }
  *
  *   eina_shutdown();
@@ -345,6 +321,7 @@ void *alloca (size_t);
 #include "eina_log.h"
 #include "eina_benchmark.h"
 #include "eina_inlist.h"
+#include "eina_list.h"
 #include "eina_counter.h"
 
 /*============================================================================*
@@ -376,6 +353,7 @@ struct _Eina_Benchmark
    const char *run;
 
    Eina_Inlist *runs;
+   Eina_List *names;
 };
 
 static int _eina_benchmark_log_dom = -1;
@@ -530,6 +508,25 @@ eina_benchmark_free(Eina_Benchmark *bench)
        free(run);
      }
 
+   while (bench->names)
+     {
+       Eina_Array *names;
+
+       names = eina_list_data_get(bench->names);
+       if (names)
+         {
+            Eina_Array_Iterator it;
+            char *tmp;
+            unsigned int i;
+            EINA_ARRAY_ITER_NEXT(names, i, tmp, it)
+            free(tmp);
+            eina_array_free(names);
+         }
+       bench->names = eina_list_remove_list(bench->names, bench->names);
+     }
+
    free(bench);
 }
 
@@ -709,6 +706,8 @@ eina_benchmark_run(Eina_Benchmark *bench)
 
    fclose(main_script);
 
+   bench->names = eina_list_append(bench->names, ea);
+
    return ea;
 }
 
index 684376f..9f327b4 100644 (file)
@@ -85,17 +85,6 @@ main(int argc, char **argv)
        etc[i].build(test);
 
        ea = eina_benchmark_run(test);
-       if (ea)
-         {
-            Eina_Array_Iterator it;
-            char *tmp;
-            unsigned int i;
-
-            EINA_ARRAY_ITER_NEXT(ea, i, tmp, it)
-              free(tmp);
-
-            eina_array_free(ea);
-         }
 
        eina_benchmark_free(test);
      }