update compat
[lttv.git] / ltt / branches / poly / lttv / modules / text / batchAnalysis.c
index 188c222156f6ea269c0917f4fe1266eed47856b6..12dea8d53bc2c0b1992651ee500f3123372b7cc8 100644 (file)
 /* This module inserts a hook in the program main loop. This hook processes 
    all the events in the main tracefile. */
 
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
 
+#include <glib.h>
 #include <lttv/lttv.h>
 #include <lttv/attribute.h>
 #include <lttv/hook.h>
@@ -47,8 +51,6 @@ static char *a_trace;
 
 static gboolean a_stats;
 
-LttvFilter *a_lttv_filter;
-
 void lttv_trace_option(void *hook_data)
 { 
   LttTrace *trace;
@@ -61,7 +63,7 @@ void lttv_trace_option(void *hook_data)
 
 static gboolean process_traceset(void *hook_data, void *call_data)
 {
-  LttvAttributeValue value;
+  LttvAttributeValue value_expression, value_filter;
 
   LttvIAttribute *attributes = LTTV_IATTRIBUTE(lttv_global_attributes());
 
@@ -83,12 +85,15 @@ static gboolean process_traceset(void *hook_data, void *call_data)
   if(a_stats) lttv_stats_add_event_hooks(tscs);
 
   g_assert(lttv_iattribute_find_by_path(attributes, "filter/expression",
-      LTTV_POINTER, &value));
+      LTTV_POINTER, &value_expression));
+
+  g_assert(lttv_iattribute_find_by_path(attributes, "filter/lttv_filter",
+      LTTV_POINTER, &value_filter));
+
+  *(value_filter.v_pointer) = lttv_filter_new();
+  //g_debug("Filter string: %s",((GString*)*(value_expression.v_pointer))->str);
 
-  a_lttv_filter = lttv_filter_new();
-  g_debug("Filter string: %s",((GString*)*(value.v_pointer))->str);
-  g_assert(lttv_filter_append_expression(a_lttv_filter,((GString*)*(value.v_pointer))->str));
-  g_debug("Filter updated");
+  lttv_filter_append_expression(*(value_filter.v_pointer),((GString*)*(value_expression.v_pointer))->str);
   
   //lttv_traceset_context_add_hooks(tc,
   //before_traceset, after_traceset, NULL, before_trace, after_trace,
@@ -113,7 +118,6 @@ static gboolean process_traceset(void *hook_data, void *call_data)
                                G_MAXULONG,
                                NULL);
 
-  g_info("BatchAnalysis destroy context");
 
   //lttv_traceset_context_remove_hooks(tc,
   //before_traceset, after_traceset, NULL, before_trace, after_trace,
@@ -125,7 +129,9 @@ static gboolean process_traceset(void *hook_data, void *call_data)
                             event_hook,
                             NULL);
 
-  lttv_filter_destroy(a_lttv_filter);
+  g_info("BatchAnalysis destroy context");
+
+  lttv_filter_destroy(*(value_filter.v_pointer));
   lttv_state_remove_event_hooks(&tscs->parent);
   if(a_stats) lttv_stats_remove_event_hooks(tscs);
   lttv_context_fini(tc);
@@ -202,7 +208,6 @@ static void init()
   lttv_hooks_add(main_hooks, process_traceset, NULL, LTTV_PRIO_DEFAULT);
 }
 
-
 static void destroy()
 {
   guint i, nb;
@@ -236,7 +241,6 @@ static void destroy()
   lttv_traceset_destroy(traceset); 
 }
 
-
 LTTV_MODULE("batchAnalysis", "Batch processing of a trace", \
     "Run through a trace calling all the registered hooks", \
     init, destroy, "state", "stats", "option","textFilter")
This page took 0.023224 seconds and 4 git commands to generate.