Began to work on the guifilter module
authorsiboud <siboud@04897980-b3bd-0310-b5e0-8ef037075253>
Thu, 24 Feb 2005 20:37:14 +0000 (20:37 +0000)
committersiboud <siboud@04897980-b3bd-0310-b5e0-8ef037075253>
Thu, 24 Feb 2005 20:37:14 +0000 (20:37 +0000)
- added a new directory filter/ in lttv/modules/gui
- modified configure.in
- modified lttv/modules/gui/Makefile.in

git-svn-id: http://ltt.polymtl.ca/svn@875 04897980-b3bd-0310-b5e0-8ef037075253

ltt/branches/poly/Makefile.am
ltt/branches/poly/configure.in
ltt/branches/poly/lttv/lttv/filter.c
ltt/branches/poly/lttv/lttv/filter.h
ltt/branches/poly/lttv/modules/gui/Makefile.am
ltt/branches/poly/lttv/modules/gui/filter/.deps/filter.Plo [new file with mode: 0644]
ltt/branches/poly/lttv/modules/gui/filter/.deps/libguifilter.la.Plo [new file with mode: 0644]
ltt/branches/poly/lttv/modules/gui/filter/Makefile.am [new file with mode: 0644]
ltt/branches/poly/lttv/modules/gui/filter/filter.c [new file with mode: 0644]
ltt/branches/poly/lttv/modules/gui/filter/hGuiFilterInsert.xpm [new file with mode: 0644]
ltt/branches/poly/lttv/modules/text/textFilter.c

index 9b5e422fec6a65c807d2f257be1f69d2a7074725..94f12c427e9f980e22fb9cc0a2ad8d697ae553e9 100644 (file)
@@ -1,6 +1,6 @@
 # WARNING : ltt must come before lttv, so that the traceread library is
 # up to date
 
-SUBDIRS = ltt lttv lttd doc
+SUBDIRS = ltt lttv lttd doc 
 
 
index b6d0dcca247b7ba9cd6f906ec954aebc8e2012db..1f825bbf2b75833359dc3f88a400577be403bc2d 100644 (file)
@@ -109,6 +109,7 @@ AC_CONFIG_FILES([Makefile
                 lttv/modules/gui/controlflow/Makefile
                 lttv/modules/gui/detailedevents/Makefile
                 lttv/modules/gui/statistics/Makefile
+     lttv/modules/gui/filter/Makefile
                 lttd/Makefile
                 ltt/Makefile
                 ltt/convert/Makefile
index 4ed2eb1b289966432658fba6314a6c00f692b355..3e098016f4abbd790ed615dd36aebb2291dbde6a 100644 (file)
@@ -25,7 +25,7 @@
 
 /*
  *  YET TO BE ANSWERED
- *  - should all the structures and field types be associated with GQuarks
+ *  - nothing for now
  */
 
 #include <lttv/filter.h>
@@ -58,7 +58,21 @@ GQuark
   LTTV_FILTER_TRACESET,
   LTTV_FILTER_TRACEFILE,
   LTTV_FILTER_STATE,
-  LTTV_FILTER_EVENT;
+  LTTV_FILTER_EVENT,
+  LTTV_FILTER_NAME,
+  LTTV_FILTER_CATEGORY,
+  LTTV_FILTER_TIME,
+  LTTV_FILTER_TSC,
+  LTTV_FILTER_PID,
+  LTTV_FILTER_PPID,
+  LTTV_FILTER_C_TIME,
+  LTTV_FILTER_I_TIME,
+  LTTV_FILTER_P_NAME,
+  LTTV_FILTER_EX_MODE,
+  LTTV_FILTER_EX_SUBMODE,
+  LTTV_FILTER_P_STATUS,
+  LTTV_FILTER_CPU;
+  
 
 /**
  *  Parse through filtering field hierarchy as specified 
@@ -72,27 +86,20 @@ parse_field_path(GList* fp) {
 
   GString* f = g_list_first(fp)->data; 
   
-  switch(g_quark_try_string(f->str)) {
-//    case LTTV_FILTER_TRACE:
-//
-//    break;
-//    case LTTV_FILTER_TRACEFILE:
-//
-//      break;
-//    case LTTV_FILTER_TRACESET:
-//
-//      break;
-//    case LTTV_FILTER_STATE:
-//
-//      break;
-//    case LTTV_FILTER_EVENT:
-//
-//      break;
-    default:    /* Quark value unrecognized or equal to 0 */
-      g_warning("Unrecognized field in filter string");
-      return FALSE;
+  if(g_quark_try_string(f->str) == LTTV_FILTER_EVENT) {
+//    parse_subfield(fp, LTTV_FILTER_EVENT);   
+
+  } else if(g_quark_try_string(f->str) == LTTV_FILTER_TRACEFILE) {
+    
+  } else if(g_quark_try_string(f->str) == LTTV_FILTER_TRACE) {
+
+  } else if(g_quark_try_string(f->str) == LTTV_FILTER_STATE) {
+
+  } else {
+    g_warning("Unrecognized field in filter string");
+    return FALSE;
   }
-  return TRUE;
+  return TRUE;  
 }
 
 /**
@@ -116,19 +123,16 @@ parse_simple_expression(GString* expression) {
  *     @param t pointer to the current LttvTrace
  *     @return the current lttv_filter or NULL if error
  */
-lttv_filter*
+lttv_filter_t*
 lttv_filter_new(char *expression, LttvTraceState *tcs) {
 
   g_print("filter::lttv_filter_new()\n");              /* debug */
 
   unsigned     
     i, 
-    p=0,       /* parenthesis nesting value */
+    p_nesting=0,       /* parenthesis nesting value */
     b=0;       /* current breakpoint in expression string */
        
-    
-  gpointer tree = NULL;
-  
   /* temporary values */
   GString *a_field_component = g_string_new(""); 
   GList *a_field_path = NULL;
@@ -144,8 +148,8 @@ lttv_filter_new(char *expression, LttvTraceState *tcs) {
    *   Binary tree memory allocation
    *   - based upon a preliminary block size
    */
-  gulong size = (strlen(expression)/AVERAGE_EXPRESSION_LENGTH)*MAX_FACTOR;
-  tree = g_malloc(size*sizeof(lttv_filter_tree));
+//  gulong size = (strlen(expression)/AVERAGE_EXPRESSION_LENGTH)*MAX_FACTOR;
+//  tree = g_malloc(size*sizeof(lttv_filter_tree));
     
   /*
    *   Parse entire expression and construct
@@ -182,10 +186,14 @@ lttv_filter_new(char *expression, LttvTraceState *tcs) {
         }
         break;
       case '(':   /* start of parenthesis */
-        p++;      /* incrementing parenthesis nesting value */
+      case '[':
+      case '{':
+        p_nesting++;      /* incrementing parenthesis nesting value */
         break;
       case ')':   /* end of parenthesis */
-        p--;      /* decrementing parenthesis nesting value */
+      case ']':
+      case '}':
+        p_nesting--;      /* decrementing parenthesis nesting value */
         break;
 
       /*       
@@ -220,7 +228,7 @@ lttv_filter_new(char *expression, LttvTraceState *tcs) {
 
 
   
-  if( p>0 ) { 
+  if( p_nesting>0 ) { 
     g_warning("Wrong filtering options, the string\n\"%s\"\n\
         is not valid due to parenthesis incorrect use",expression);    
     return NULL;
@@ -234,7 +242,7 @@ lttv_filter_new(char *expression, LttvTraceState *tcs) {
  *     @return success/failure of operation
  */
 gboolean
-lttv_filter_tracefile(lttv_filter *filter, LttTracefile *tracefile) {
+lttv_filter_tracefile(lttv_filter_t *filter, LttTracefile *tracefile) {
 
   
   
@@ -265,7 +273,7 @@ lttv_filter_tracefile(lttv_filter *filter, LttTracefile *tracefile) {
 }
 
 gboolean
-lttv_filter_tracestate(lttv_filter *filter, LttvTraceState *tracestate) {
+lttv_filter_tracestate(lttv_filter_t *filter, LttvTraceState *tracestate) {
 
 }
 
@@ -276,28 +284,61 @@ lttv_filter_tracestate(lttv_filter *filter, LttvTraceState *tracestate) {
  *     @return success/failure of operation
  */
 gboolean
-lttv_filter_event(lttv_filter *filter, LttEvent *event) {
+lttv_filter_event(lttv_filter_t *filter, LttEvent *event) {
 
 }
 
+/**
+ *  Initializes the filter module and specific values
+ */
 static void module_init()
 {
-  LTTV_FILTER_EVENT = g_quark_from_string("event");
-  LTTV_FILTER_TRACE = g_quark_from_string("trace");
-  LTTV_FILTER_TRACESET = g_quark_from_string("traceset");
-  LTTV_FILTER_STATE = g_quark_from_string("state");
-  LTTV_FILTER_TRACEFILE = g_quark_from_string("tracefile");
+
+  /* 
+   *  Quarks initialization
+   *  for hardcoded filtering options
+   *
+   *  TODO: traceset has no yet been defined
+   */
+  
+  /* top fields */
+  LTTV_FILTER_EVENT = g_quark_from_string("event"); 
+  LTTV_FILTER_TRACE = g_quark_from_string("trace"); 
+  LTTV_FILTER_TRACESET = g_quark_from_string("traceset"); 
+  LTTV_FILTER_STATE = g_quark_from_string("state"); 
+  LTTV_FILTER_TRACEFILE = g_quark_from_string("tracefile"); 
  
+  /* event.name, tracefile.name, trace.name */
+  LTTV_FILTER_NAME = g_quark_from_string("name");
+
+  /* event sub fields */
+  LTTV_FILTER_CATEGORY = g_quark_from_string("category"); 
+  LTTV_FILTER_TIME = g_quark_from_string("time"); 
+  LTTV_FILTER_TSC = g_quark_from_string("tsc"); 
+
+  /* state sub fields */
+  LTTV_FILTER_PID = g_quark_from_string("pid"); 
+  LTTV_FILTER_PPID = g_quark_from_string("ppid"); 
+  LTTV_FILTER_C_TIME = g_quark_from_string("creation_time");  
+  LTTV_FILTER_I_TIME = g_quark_from_string("insertion_time"); 
+  LTTV_FILTER_P_NAME = g_quark_from_string("process_name"); 
+  LTTV_FILTER_EX_MODE = g_quark_from_string("execution_mode");  
+  LTTV_FILTER_EX_SUBMODE = g_quark_from_string("execution_submode");
+  LTTV_FILTER_P_STATUS = g_quark_from_string("process_status");
+  LTTV_FILTER_CPU = g_quark_from_string("cpu");
+  
 }
 
+/**
+ *  Destroys the filter module and specific values
+ */
 static void module_destroy() 
 {
 }
 
 
-//LTTV_MODULE("filter", \
-    "", \
-    "", \
+LTTV_MODULE("filter", "Filters traceset and events", \
+    "Filters traceset and events specifically to user input", \
     module_init, module_destroy)
 
 
index ab5b695856b216fc7176e6ad392810ae28b5c865..29ff2a40dae81c9626aad0f6221c8bf69998d50a 100644 (file)
@@ -22,6 +22,7 @@
 #include <lttv/traceset.h>
 #include <lttv/tracecontext.h>
 #include <lttv/state.h>
+#include <lttv/module.h>
 #include <ltt/ltt.h>
 #include <ltt/event.h>
 
@@ -57,8 +58,21 @@ extern GQuark
   LTTV_FILTER_TRACESET,
   LTTV_FILTER_TRACEFILE,
   LTTV_FILTER_STATE,
-  LTTV_FILTER_EVENT;
-
+  LTTV_FILTER_EVENT,
+  LTTV_FILTER_NAME,
+  LTTV_FILTER_CATEGORY,
+  LTTV_FILTER_TIME,
+  LTTV_FILTER_TSC,
+  LTTV_FILTER_PID,
+  LTTV_FILTER_PPID,
+  LTTV_FILTER_C_TIME,
+  LTTV_FILTER_I_TIME,
+  LTTV_FILTER_P_NAME,
+  LTTV_FILTER_EX_MODE,
+  LTTV_FILTER_EX_SUBMODE,
+  LTTV_FILTER_P_STATUS,
+  LTTV_FILTER_CPU;
+  
 /**
  *     @enum lttv_expression_op
  */
@@ -86,10 +100,10 @@ typedef struct _lttv_simple_expression
 } lttv_simple_expression;
 
 typedef enum _lttv_logical_op {
-    OR = 1,
-    AND = 1<<1,
-    NOT = 1<<2,
-    XOR = 1<<3
+    OR = 1,         /* 1 */
+    AND = 1<<1,     /* 2 */
+    NOT = 1<<2,     /* 4 */
+    XOR = 1<<3      /* 8 */
 } lttv_logical_op;
     
 /*
@@ -97,12 +111,8 @@ typedef enum _lttv_logical_op {
  */
 typedef struct _lttv_expression 
 { 
-//  gboolean or;
-//  gboolean not;
-//  gboolean and;
-//  gboolean xor;
 //  gboolean simple_expression;
-  lttv_logical_op op;
+  int op;
   lttv_expression_type type;
   union {
     struct lttv_expression *e;
@@ -126,26 +136,28 @@ typedef struct _lttv_filter_tree {
  * @struct lttv_filter
  * ( will later contain a binary tree of filtering options )
  */
-typedef struct _lttv_filter {
+typedef struct _lttv_filter_t {
        lttv_filter_tree* tree; 
-} lttv_filter;
+} lttv_filter_t;
 
+/* Parse field path contained in list */
 gboolean parse_field_path(GList* fp);
 
+
 gboolean parse_simple_expression(GString* expression);
 
 /* Compile the filter expression into an efficient data structure */
-lttv_filter *lttv_filter_new(char *expression, LttvTraceState *tfs);
+lttv_filter_t *lttv_filter_new(char *expression, LttvTraceState *tfs);
 
 
 /* Check if the tracefile or event satisfies the filter. The arguments are
    declared as void * to allow these functions to be used as hooks. */
 
-gboolean lttv_filter_tracefile(lttv_filter *filter, LttTracefile *tracefile);
+gboolean lttv_filter_tracefile(lttv_filter_t *filter, LttTracefile *tracefile);
 
-gboolean lttv_filter_tracestate(lttv_filter *filter, LttvTraceState *tracestate);
+gboolean lttv_filter_tracestate(lttv_filter_t *filter, LttvTraceState *tracestate);
 
-gboolean lttv_filter_event(lttv_filter *filter, LttEvent *event);
+gboolean lttv_filter_event(lttv_filter_t *filter, LttEvent *event);
 
 #endif // FILTER_H
 
index 039dae0624d9e2be59fd26dd92d0b351846dab74..0a9c97bc81ea2f616e33d5096cbcafd989145529 100644 (file)
@@ -6,5 +6,5 @@
 
 # WARNING : subdirs order is important : mainWin depends on API
 
-SUBDIRS = lttvwindow controlflow detailedevents statistics
+SUBDIRS = lttvwindow controlflow detailedevents statistics filter
 
diff --git a/ltt/branches/poly/lttv/modules/gui/filter/.deps/filter.Plo b/ltt/branches/poly/lttv/modules/gui/filter/.deps/filter.Plo
new file mode 100644 (file)
index 0000000..a78cdee
--- /dev/null
@@ -0,0 +1,1009 @@
+filter.lo filter.o: filter.c /usr/include/glib-2.0/glib.h \
+  /usr/include/glib-2.0/glib/galloca.h \
+  /usr/include/glib-2.0/glib/gtypes.h \
+  /usr/lib/glib-2.0/include/glibconfig.h \
+  /usr/include/glib-2.0/glib/gmacros.h \
+  /usr/lib/gcc-lib/i486-linux/3.3.5/include/stddef.h \
+  /usr/lib/gcc-lib/i486-linux/3.3.5/include/limits.h \
+  /usr/lib/gcc-lib/i486-linux/3.3.5/include/syslimits.h \
+  /usr/include/limits.h /usr/include/features.h /usr/include/sys/cdefs.h \
+  /usr/include/gnu/stubs.h /usr/include/bits/posix1_lim.h \
+  /usr/include/bits/local_lim.h /usr/include/linux/limits.h \
+  /usr/include/bits/posix2_lim.h \
+  /usr/lib/gcc-lib/i486-linux/3.3.5/include/float.h \
+  /usr/include/glib-2.0/glib/garray.h \
+  /usr/include/glib-2.0/glib/gasyncqueue.h \
+  /usr/include/glib-2.0/glib/gthread.h \
+  /usr/include/glib-2.0/glib/gerror.h /usr/include/glib-2.0/glib/gquark.h \
+  /usr/include/glib-2.0/glib/gatomic.h \
+  /usr/include/glib-2.0/glib/gbacktrace.h \
+  /usr/include/glib-2.0/glib/gcache.h /usr/include/glib-2.0/glib/glist.h \
+  /usr/include/glib-2.0/glib/gmem.h \
+  /usr/include/glib-2.0/glib/gcompletion.h \
+  /usr/include/glib-2.0/glib/gconvert.h \
+  /usr/include/glib-2.0/glib/gdataset.h \
+  /usr/include/glib-2.0/glib/gdate.h /usr/include/glib-2.0/glib/gdir.h \
+  /usr/include/glib-2.0/glib/gfileutils.h \
+  /usr/include/glib-2.0/glib/ghash.h /usr/include/glib-2.0/glib/ghook.h \
+  /usr/include/glib-2.0/glib/giochannel.h \
+  /usr/include/glib-2.0/glib/gmain.h /usr/include/glib-2.0/glib/gslist.h \
+  /usr/include/glib-2.0/glib/gstring.h \
+  /usr/include/glib-2.0/glib/gunicode.h \
+  /usr/include/glib-2.0/glib/gutils.h \
+  /usr/lib/gcc-lib/i486-linux/3.3.5/include/stdarg.h \
+  /usr/include/glib-2.0/glib/gmarkup.h \
+  /usr/include/glib-2.0/glib/gmessages.h \
+  /usr/include/glib-2.0/glib/gnode.h \
+  /usr/include/glib-2.0/glib/gpattern.h \
+  /usr/include/glib-2.0/glib/gprimes.h \
+  /usr/include/glib-2.0/glib/gqsort.h /usr/include/glib-2.0/glib/gqueue.h \
+  /usr/include/glib-2.0/glib/grand.h /usr/include/glib-2.0/glib/grel.h \
+  /usr/include/glib-2.0/glib/gscanner.h \
+  /usr/include/glib-2.0/glib/gshell.h /usr/include/glib-2.0/glib/gspawn.h \
+  /usr/include/glib-2.0/glib/gstrfuncs.h \
+  /usr/include/glib-2.0/glib/gthreadpool.h \
+  /usr/include/glib-2.0/glib/gtimer.h /usr/include/glib-2.0/glib/gtree.h \
+  /usr/include/string.h /usr/include/bits/string.h \
+  /usr/include/bits/string2.h /usr/include/endian.h \
+  /usr/include/bits/endian.h /usr/include/bits/types.h \
+  /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h \
+  /usr/include/stdlib.h /usr/include/gtk-2.0/gtk/gtk.h \
+  /usr/include/gtk-2.0/gdk/gdk.h /usr/include/gtk-2.0/gdk/gdkcolor.h \
+  /usr/include/gtk-2.0/gdk/gdktypes.h \
+  /usr/include/pango-1.0/pango/pango.h \
+  /usr/include/pango-1.0/pango/pango-attributes.h \
+  /usr/include/pango-1.0/pango/pango-font.h \
+  /usr/include/pango-1.0/pango/pango-coverage.h \
+  /usr/include/pango-1.0/pango/pango-types.h \
+  /usr/include/glib-2.0/glib-object.h \
+  /usr/include/glib-2.0/gobject/gboxed.h \
+  /usr/include/glib-2.0/gobject/gtype.h \
+  /usr/include/glib-2.0/gobject/genums.h \
+  /usr/include/glib-2.0/gobject/gobject.h \
+  /usr/include/glib-2.0/gobject/gvalue.h \
+  /usr/include/glib-2.0/gobject/gparam.h \
+  /usr/include/glib-2.0/gobject/gclosure.h \
+  /usr/include/glib-2.0/gobject/gsignal.h \
+  /usr/include/glib-2.0/gobject/gmarshal.h \
+  /usr/include/glib-2.0/gobject/gparamspecs.h \
+  /usr/include/glib-2.0/gobject/gsourceclosure.h \
+  /usr/include/glib-2.0/gobject/gtypemodule.h \
+  /usr/include/glib-2.0/gobject/gtypeplugin.h \
+  /usr/include/glib-2.0/gobject/gvaluearray.h \
+  /usr/include/glib-2.0/gobject/gvaluetypes.h \
+  /usr/include/pango-1.0/pango/pango-break.h \
+  /usr/include/pango-1.0/pango/pango-item.h \
+  /usr/include/pango-1.0/pango/pango-context.h \
+  /usr/include/pango-1.0/pango/pango-fontmap.h \
+  /usr/include/pango-1.0/pango/pango-fontset.h \
+  /usr/include/pango-1.0/pango/pango-engine.h \
+  /usr/include/pango-1.0/pango/pango-glyph.h \
+  /usr/include/pango-1.0/pango/pango-script.h \
+  /usr/include/pango-1.0/pango/pango-enum-types.h \
+  /usr/include/pango-1.0/pango/pango-layout.h \
+  /usr/include/pango-1.0/pango/pango-glyph-item.h \
+  /usr/include/pango-1.0/pango/pango-tabs.h \
+  /usr/lib/gtk-2.0/include/gdkconfig.h \
+  /usr/include/gtk-2.0/gdk/gdkcursor.h \
+  /usr/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf.h \
+  /usr/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf-features.h \
+  /usr/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf-loader.h \
+  /usr/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf-enum-types.h \
+  /usr/include/gtk-2.0/gdk/gdkdisplay.h \
+  /usr/include/gtk-2.0/gdk/gdkevents.h /usr/include/gtk-2.0/gdk/gdkdnd.h \
+  /usr/include/gtk-2.0/gdk/gdkinput.h \
+  /usr/include/gtk-2.0/gdk/gdkdrawable.h /usr/include/gtk-2.0/gdk/gdkgc.h \
+  /usr/include/gtk-2.0/gdk/gdkrgb.h \
+  /usr/include/gtk-2.0/gdk/gdkenumtypes.h \
+  /usr/include/gtk-2.0/gdk/gdkfont.h /usr/include/gtk-2.0/gdk/gdkimage.h \
+  /usr/include/gtk-2.0/gdk/gdkkeys.h \
+  /usr/include/gtk-2.0/gdk/gdkdisplaymanager.h \
+  /usr/include/gtk-2.0/gdk/gdkpango.h \
+  /usr/include/gtk-2.0/gdk/gdkpixbuf.h \
+  /usr/include/gtk-2.0/gdk/gdkpixmap.h \
+  /usr/include/gtk-2.0/gdk/gdkproperty.h \
+  /usr/include/gtk-2.0/gdk/gdkregion.h \
+  /usr/include/gtk-2.0/gdk/gdkscreen.h \
+  /usr/include/gtk-2.0/gdk/gdkselection.h \
+  /usr/include/gtk-2.0/gdk/gdkspawn.h \
+  /usr/include/gtk-2.0/gdk/gdkvisual.h \
+  /usr/include/gtk-2.0/gdk/gdkwindow.h \
+  /usr/include/gtk-2.0/gtk/gtkaccelgroup.h \
+  /usr/include/gtk-2.0/gtk/gtkenums.h \
+  /usr/include/gtk-2.0/gtk/gtkaccellabel.h \
+  /usr/include/gtk-2.0/gtk/gtklabel.h /usr/include/gtk-2.0/gtk/gtkmisc.h \
+  /usr/include/gtk-2.0/gtk/gtkwidget.h \
+  /usr/include/gtk-2.0/gtk/gtkobject.h \
+  /usr/include/gtk-2.0/gtk/gtktypeutils.h \
+  /usr/include/gtk-2.0/gtk/gtktypebuiltins.h \
+  /usr/include/gtk-2.0/gtk/gtkdebug.h \
+  /usr/include/gtk-2.0/gtk/gtkadjustment.h \
+  /usr/include/gtk-2.0/gtk/gtkstyle.h \
+  /usr/include/gtk-2.0/gtk/gtksettings.h /usr/include/gtk-2.0/gtk/gtkrc.h \
+  /usr/include/atk-1.0/atk/atkobject.h \
+  /usr/include/atk-1.0/atk/atkstate.h \
+  /usr/include/atk-1.0/atk/atkrelationtype.h \
+  /usr/include/gtk-2.0/gtk/gtkwindow.h /usr/include/gtk-2.0/gtk/gtkbin.h \
+  /usr/include/gtk-2.0/gtk/gtkcontainer.h \
+  /usr/include/gtk-2.0/gtk/gtkmenu.h \
+  /usr/include/gtk-2.0/gtk/gtkmenushell.h \
+  /usr/include/gtk-2.0/gtk/gtkaccelmap.h \
+  /usr/include/gtk-2.0/gtk/gtkaccessible.h /usr/include/atk-1.0/atk/atk.h \
+  /usr/include/atk-1.0/atk/atkaction.h \
+  /usr/include/atk-1.0/atk/atkcomponent.h \
+  /usr/include/atk-1.0/atk/atkutil.h \
+  /usr/include/atk-1.0/atk/atkdocument.h \
+  /usr/include/atk-1.0/atk/atkeditabletext.h \
+  /usr/include/atk-1.0/atk/atktext.h \
+  /usr/include/atk-1.0/atk/atkgobjectaccessible.h \
+  /usr/include/atk-1.0/atk/atkhyperlink.h \
+  /usr/include/atk-1.0/atk/atkhypertext.h \
+  /usr/include/atk-1.0/atk/atkimage.h \
+  /usr/include/atk-1.0/atk/atknoopobject.h \
+  /usr/include/atk-1.0/atk/atknoopobjectfactory.h \
+  /usr/include/atk-1.0/atk/atkobjectfactory.h \
+  /usr/include/atk-1.0/atk/atkregistry.h \
+  /usr/include/atk-1.0/atk/atkrelation.h \
+  /usr/include/atk-1.0/atk/atkrelationset.h \
+  /usr/include/atk-1.0/atk/atkselection.h \
+  /usr/include/atk-1.0/atk/atkstateset.h \
+  /usr/include/atk-1.0/atk/atkstreamablecontent.h \
+  /usr/include/atk-1.0/atk/atktable.h /usr/include/atk-1.0/atk/atkvalue.h \
+  /usr/include/gtk-2.0/gtk/gtkaction.h \
+  /usr/include/gtk-2.0/gtk/gtkactiongroup.h \
+  /usr/include/gtk-2.0/gtk/gtkitemfactory.h \
+  /usr/include/gtk-2.0/gtk/gtkalignment.h \
+  /usr/include/gtk-2.0/gtk/gtkarrow.h \
+  /usr/include/gtk-2.0/gtk/gtkaspectframe.h \
+  /usr/include/gtk-2.0/gtk/gtkframe.h /usr/include/gtk-2.0/gtk/gtkbbox.h \
+  /usr/include/gtk-2.0/gtk/gtkbox.h \
+  /usr/include/gtk-2.0/gtk/gtkbindings.h \
+  /usr/include/gtk-2.0/gtk/gtkbutton.h \
+  /usr/include/gtk-2.0/gtk/gtkcalendar.h \
+  /usr/include/gtk-2.0/gtk/gtksignal.h \
+  /usr/include/gtk-2.0/gtk/gtkmarshal.h \
+  /usr/include/gtk-2.0/gtk/gtkcelllayout.h \
+  /usr/include/gtk-2.0/gtk/gtkcellrenderer.h \
+  /usr/include/gtk-2.0/gtk/gtkcelleditable.h \
+  /usr/include/gtk-2.0/gtk/gtktreeviewcolumn.h \
+  /usr/include/gtk-2.0/gtk/gtktreemodel.h \
+  /usr/include/gtk-2.0/gtk/gtktreesortable.h \
+  /usr/include/gtk-2.0/gtk/gtkcellrendererpixbuf.h \
+  /usr/include/gtk-2.0/gtk/gtkcellrenderertext.h \
+  /usr/include/gtk-2.0/gtk/gtkcellrenderertoggle.h \
+  /usr/include/gtk-2.0/gtk/gtkcheckbutton.h \
+  /usr/include/gtk-2.0/gtk/gtktogglebutton.h \
+  /usr/include/gtk-2.0/gtk/gtkcheckmenuitem.h \
+  /usr/include/gtk-2.0/gtk/gtkmenuitem.h \
+  /usr/include/gtk-2.0/gtk/gtkitem.h \
+  /usr/include/gtk-2.0/gtk/gtkclipboard.h \
+  /usr/include/gtk-2.0/gtk/gtkselection.h \
+  /usr/include/gtk-2.0/gtk/gtkclist.h \
+  /usr/include/gtk-2.0/gtk/gtkhscrollbar.h \
+  /usr/include/gtk-2.0/gtk/gtkscrollbar.h \
+  /usr/include/gtk-2.0/gtk/gtkrange.h \
+  /usr/include/gtk-2.0/gtk/gtkvscrollbar.h \
+  /usr/include/gtk-2.0/gtk/gtkcolorbutton.h \
+  /usr/include/gtk-2.0/gtk/gtkcolorsel.h \
+  /usr/include/gtk-2.0/gtk/gtkdialog.h /usr/include/gtk-2.0/gtk/gtkvbox.h \
+  /usr/include/gtk-2.0/gtk/gtkcolorseldialog.h \
+  /usr/include/gtk-2.0/gtk/gtkcombo.h /usr/include/gtk-2.0/gtk/gtkhbox.h \
+  /usr/include/gtk-2.0/gtk/gtkcombobox.h \
+  /usr/include/gtk-2.0/gtk/gtktreeview.h \
+  /usr/include/gtk-2.0/gtk/gtkdnd.h \
+  /usr/include/gtk-2.0/gtk/gtkcomboboxentry.h \
+  /usr/include/gtk-2.0/gtk/gtkctree.h /usr/include/gtk-2.0/gtk/gtkcurve.h \
+  /usr/include/gtk-2.0/gtk/gtkdrawingarea.h \
+  /usr/include/gtk-2.0/gtk/gtkeditable.h \
+  /usr/include/gtk-2.0/gtk/gtkentry.h \
+  /usr/include/gtk-2.0/gtk/gtkimcontext.h \
+  /usr/include/gtk-2.0/gtk/gtkentrycompletion.h \
+  /usr/include/gtk-2.0/gtk/gtkliststore.h \
+  /usr/include/gtk-2.0/gtk/gtktreemodelfilter.h \
+  /usr/include/gtk-2.0/gtk/gtkeventbox.h \
+  /usr/include/gtk-2.0/gtk/gtkexpander.h \
+  /usr/include/gtk-2.0/gtk/gtkfilesel.h \
+  /usr/include/gtk-2.0/gtk/gtkfixed.h \
+  /usr/include/gtk-2.0/gtk/gtkfilechooserdialog.h \
+  /usr/include/gtk-2.0/gtk/gtkfilechooser.h \
+  /usr/include/gtk-2.0/gtk/gtkfilefilter.h \
+  /usr/include/gtk-2.0/gtk/gtkfilechooserwidget.h \
+  /usr/include/gtk-2.0/gtk/gtkfontbutton.h \
+  /usr/include/gtk-2.0/gtk/gtkfontsel.h \
+  /usr/include/gtk-2.0/gtk/gtkgamma.h /usr/include/gtk-2.0/gtk/gtkgc.h \
+  /usr/include/gtk-2.0/gtk/gtkhandlebox.h \
+  /usr/include/gtk-2.0/gtk/gtkhbbox.h \
+  /usr/include/gtk-2.0/gtk/gtkhpaned.h \
+  /usr/include/gtk-2.0/gtk/gtkpaned.h \
+  /usr/include/gtk-2.0/gtk/gtkhruler.h \
+  /usr/include/gtk-2.0/gtk/gtkruler.h \
+  /usr/include/gtk-2.0/gtk/gtkhscale.h \
+  /usr/include/gtk-2.0/gtk/gtkscale.h \
+  /usr/include/gtk-2.0/gtk/gtkhseparator.h \
+  /usr/include/gtk-2.0/gtk/gtkseparator.h \
+  /usr/include/gtk-2.0/gtk/gtkiconfactory.h \
+  /usr/include/gtk-2.0/gtk/gtkicontheme.h \
+  /usr/include/gtk-2.0/gtk/gtkimage.h \
+  /usr/include/gtk-2.0/gtk/gtkimagemenuitem.h \
+  /usr/include/gtk-2.0/gtk/gtkimcontextsimple.h \
+  /usr/include/gtk-2.0/gtk/gtkimmulticontext.h \
+  /usr/include/gtk-2.0/gtk/gtkinputdialog.h \
+  /usr/include/gtk-2.0/gtk/gtkinvisible.h \
+  /usr/include/gtk-2.0/gtk/gtklayout.h /usr/include/gtk-2.0/gtk/gtklist.h \
+  /usr/include/gtk-2.0/gtk/gtklistitem.h \
+  /usr/include/gtk-2.0/gtk/gtkmain.h \
+  /usr/include/gtk-2.0/gtk/gtkmenubar.h \
+  /usr/include/gtk-2.0/gtk/gtkmessagedialog.h \
+  /usr/include/gtk-2.0/gtk/gtknotebook.h \
+  /usr/include/gtk-2.0/gtk/gtkoldeditable.h \
+  /usr/include/gtk-2.0/gtk/gtkoptionmenu.h \
+  /usr/include/gtk-2.0/gtk/gtkpixmap.h /usr/include/gtk-2.0/gtk/gtkplug.h \
+  /usr/include/gtk-2.0/gtk/gtksocket.h \
+  /usr/include/gtk-2.0/gtk/gtkpreview.h \
+  /usr/include/gtk-2.0/gtk/gtkprogress.h \
+  /usr/include/gtk-2.0/gtk/gtkprogressbar.h \
+  /usr/include/gtk-2.0/gtk/gtkradioaction.h \
+  /usr/include/gtk-2.0/gtk/gtktoggleaction.h \
+  /usr/include/gtk-2.0/gtk/gtkradiobutton.h \
+  /usr/include/gtk-2.0/gtk/gtkradiomenuitem.h \
+  /usr/include/gtk-2.0/gtk/gtkradiotoolbutton.h \
+  /usr/include/gtk-2.0/gtk/gtktoggletoolbutton.h \
+  /usr/include/gtk-2.0/gtk/gtktoolbutton.h \
+  /usr/include/gtk-2.0/gtk/gtktoolitem.h \
+  /usr/include/gtk-2.0/gtk/gtktooltips.h \
+  /usr/include/gtk-2.0/gtk/gtkscrolledwindow.h \
+  /usr/include/gtk-2.0/gtk/gtkviewport.h \
+  /usr/include/gtk-2.0/gtk/gtkseparatormenuitem.h \
+  /usr/include/gtk-2.0/gtk/gtkseparatortoolitem.h \
+  /usr/include/gtk-2.0/gtk/gtksizegroup.h \
+  /usr/include/gtk-2.0/gtk/gtkspinbutton.h \
+  /usr/include/gtk-2.0/gtk/gtkstatusbar.h \
+  /usr/include/gtk-2.0/gtk/gtkstock.h /usr/include/gtk-2.0/gtk/gtktable.h \
+  /usr/include/gtk-2.0/gtk/gtktearoffmenuitem.h \
+  /usr/include/gtk-2.0/gtk/gtktext.h \
+  /usr/include/gtk-2.0/gtk/gtktextbuffer.h \
+  /usr/include/gtk-2.0/gtk/gtktexttagtable.h \
+  /usr/include/gtk-2.0/gtk/gtktexttag.h \
+  /usr/include/gtk-2.0/gtk/gtktextiter.h \
+  /usr/include/gtk-2.0/gtk/gtktextchild.h \
+  /usr/include/gtk-2.0/gtk/gtktextmark.h \
+  /usr/include/gtk-2.0/gtk/gtktextview.h \
+  /usr/include/gtk-2.0/gtk/gtktipsquery.h \
+  /usr/include/gtk-2.0/gtk/gtktoolbar.h \
+  /usr/include/gtk-2.0/gtk/gtktree.h \
+  /usr/include/gtk-2.0/gtk/gtktreednd.h \
+  /usr/include/gtk-2.0/gtk/gtktreeitem.h \
+  /usr/include/gtk-2.0/gtk/gtktreemodelsort.h \
+  /usr/include/gtk-2.0/gtk/gtktreeselection.h \
+  /usr/include/gtk-2.0/gtk/gtktreestore.h \
+  /usr/include/gtk-2.0/gtk/gtkuimanager.h \
+  /usr/include/gtk-2.0/gtk/gtkvbbox.h \
+  /usr/include/gtk-2.0/gtk/gtkversion.h \
+  /usr/include/gtk-2.0/gtk/gtkvpaned.h \
+  /usr/include/gtk-2.0/gtk/gtkvruler.h \
+  /usr/include/gtk-2.0/gtk/gtkvscale.h \
+  /usr/include/gtk-2.0/gtk/gtkvseparator.h ../../../../lttv/lttv/lttv.h \
+  ../../../../lttv/lttv/attribute.h ../../../../lttv/lttv/iattribute.h \
+  ../../../../ltt/time.h ../../../../ltt/compiler.h /usr/include/math.h \
+  /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h \
+  /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \
+  /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \
+  /usr/include/wchar.h /usr/include/bits/wchar.h /usr/include/gconv.h \
+  /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \
+  /usr/include/bits/stdio.h ../../../../lttv/lttv/module.h \
+  ../../../../lttv/lttv/hook.h ../../../../lttv/lttv/filter.h \
+  ../../../../lttv/lttv/traceset.h ../../../../ltt/ltt.h \
+  ../../../../lttv/lttv/tracecontext.h ../../../../lttv/lttv/state.h \
+  ../../../../ltt/event.h \
+  ../../../../lttv/modules/gui/lttvwindow/lttvwindow/lttvwindow.h \
+  ../../../../lttv/lttv/stats.h \
+  ../../../../lttv/modules/gui/lttvwindow/lttvwindow/mainwindow.h \
+  ../../../../lttv/modules/gui/lttvwindow/lttvwindow/lttvfilter.h \
+  ../../../../lttv/modules/gui/lttvwindow/lttvwindow/lttvwindowtraces.h \
+  hGuiFilterInsert.xpm
+
+/usr/include/glib-2.0/glib.h:
+
+/usr/include/glib-2.0/glib/galloca.h:
+
+/usr/include/glib-2.0/glib/gtypes.h:
+
+/usr/lib/glib-2.0/include/glibconfig.h:
+
+/usr/include/glib-2.0/glib/gmacros.h:
+
+/usr/lib/gcc-lib/i486-linux/3.3.5/include/stddef.h:
+
+/usr/lib/gcc-lib/i486-linux/3.3.5/include/limits.h:
+
+/usr/lib/gcc-lib/i486-linux/3.3.5/include/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/features.h:
+
+/usr/include/sys/cdefs.h:
+
+/usr/include/gnu/stubs.h:
+
+/usr/include/bits/posix1_lim.h:
+
+/usr/include/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/bits/posix2_lim.h:
+
+/usr/lib/gcc-lib/i486-linux/3.3.5/include/float.h:
+
+/usr/include/glib-2.0/glib/garray.h:
+
+/usr/include/glib-2.0/glib/gasyncqueue.h:
+
+/usr/include/glib-2.0/glib/gthread.h:
+
+/usr/include/glib-2.0/glib/gerror.h:
+
+/usr/include/glib-2.0/glib/gquark.h:
+
+/usr/include/glib-2.0/glib/gatomic.h:
+
+/usr/include/glib-2.0/glib/gbacktrace.h:
+
+/usr/include/glib-2.0/glib/gcache.h:
+
+/usr/include/glib-2.0/glib/glist.h:
+
+/usr/include/glib-2.0/glib/gmem.h:
+
+/usr/include/glib-2.0/glib/gcompletion.h:
+
+/usr/include/glib-2.0/glib/gconvert.h:
+
+/usr/include/glib-2.0/glib/gdataset.h:
+
+/usr/include/glib-2.0/glib/gdate.h:
+
+/usr/include/glib-2.0/glib/gdir.h:
+
+/usr/include/glib-2.0/glib/gfileutils.h:
+
+/usr/include/glib-2.0/glib/ghash.h:
+
+/usr/include/glib-2.0/glib/ghook.h:
+
+/usr/include/glib-2.0/glib/giochannel.h:
+
+/usr/include/glib-2.0/glib/gmain.h:
+
+/usr/include/glib-2.0/glib/gslist.h:
+
+/usr/include/glib-2.0/glib/gstring.h:
+
+/usr/include/glib-2.0/glib/gunicode.h:
+
+/usr/include/glib-2.0/glib/gutils.h:
+
+/usr/lib/gcc-lib/i486-linux/3.3.5/include/stdarg.h:
+
+/usr/include/glib-2.0/glib/gmarkup.h:
+
+/usr/include/glib-2.0/glib/gmessages.h:
+
+/usr/include/glib-2.0/glib/gnode.h:
+
+/usr/include/glib-2.0/glib/gpattern.h:
+
+/usr/include/glib-2.0/glib/gprimes.h:
+
+/usr/include/glib-2.0/glib/gqsort.h:
+
+/usr/include/glib-2.0/glib/gqueue.h:
+
+/usr/include/glib-2.0/glib/grand.h:
+
+/usr/include/glib-2.0/glib/grel.h:
+
+/usr/include/glib-2.0/glib/gscanner.h:
+
+/usr/include/glib-2.0/glib/gshell.h:
+
+/usr/include/glib-2.0/glib/gspawn.h:
+
+/usr/include/glib-2.0/glib/gstrfuncs.h:
+
+/usr/include/glib-2.0/glib/gthreadpool.h:
+
+/usr/include/glib-2.0/glib/gtimer.h:
+
+/usr/include/glib-2.0/glib/gtree.h:
+
+/usr/include/string.h:
+
+/usr/include/bits/string.h:
+
+/usr/include/bits/string2.h:
+
+/usr/include/endian.h:
+
+/usr/include/bits/endian.h:
+
+/usr/include/bits/types.h:
+
+/usr/include/bits/wordsize.h:
+
+/usr/include/bits/typesizes.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/gtk-2.0/gtk/gtk.h:
+
+/usr/include/gtk-2.0/gdk/gdk.h:
+
+/usr/include/gtk-2.0/gdk/gdkcolor.h:
+
+/usr/include/gtk-2.0/gdk/gdktypes.h:
+
+/usr/include/pango-1.0/pango/pango.h:
+
+/usr/include/pango-1.0/pango/pango-attributes.h:
+
+/usr/include/pango-1.0/pango/pango-font.h:
+
+/usr/include/pango-1.0/pango/pango-coverage.h:
+
+/usr/include/pango-1.0/pango/pango-types.h:
+
+/usr/include/glib-2.0/glib-object.h:
+
+/usr/include/glib-2.0/gobject/gboxed.h:
+
+/usr/include/glib-2.0/gobject/gtype.h:
+
+/usr/include/glib-2.0/gobject/genums.h:
+
+/usr/include/glib-2.0/gobject/gobject.h:
+
+/usr/include/glib-2.0/gobject/gvalue.h:
+
+/usr/include/glib-2.0/gobject/gparam.h:
+
+/usr/include/glib-2.0/gobject/gclosure.h:
+
+/usr/include/glib-2.0/gobject/gsignal.h:
+
+/usr/include/glib-2.0/gobject/gmarshal.h:
+
+/usr/include/glib-2.0/gobject/gparamspecs.h:
+
+/usr/include/glib-2.0/gobject/gsourceclosure.h:
+
+/usr/include/glib-2.0/gobject/gtypemodule.h:
+
+/usr/include/glib-2.0/gobject/gtypeplugin.h:
+
+/usr/include/glib-2.0/gobject/gvaluearray.h:
+
+/usr/include/glib-2.0/gobject/gvaluetypes.h:
+
+/usr/include/pango-1.0/pango/pango-break.h:
+
+/usr/include/pango-1.0/pango/pango-item.h:
+
+/usr/include/pango-1.0/pango/pango-context.h:
+
+/usr/include/pango-1.0/pango/pango-fontmap.h:
+
+/usr/include/pango-1.0/pango/pango-fontset.h:
+
+/usr/include/pango-1.0/pango/pango-engine.h:
+
+/usr/include/pango-1.0/pango/pango-glyph.h:
+
+/usr/include/pango-1.0/pango/pango-script.h:
+
+/usr/include/pango-1.0/pango/pango-enum-types.h:
+
+/usr/include/pango-1.0/pango/pango-layout.h:
+
+/usr/include/pango-1.0/pango/pango-glyph-item.h:
+
+/usr/include/pango-1.0/pango/pango-tabs.h:
+
+/usr/lib/gtk-2.0/include/gdkconfig.h:
+
+/usr/include/gtk-2.0/gdk/gdkcursor.h:
+
+/usr/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf.h:
+
+/usr/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf-features.h:
+
+/usr/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf-loader.h:
+
+/usr/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf-enum-types.h:
+
+/usr/include/gtk-2.0/gdk/gdkdisplay.h:
+
+/usr/include/gtk-2.0/gdk/gdkevents.h:
+
+/usr/include/gtk-2.0/gdk/gdkdnd.h:
+
+/usr/include/gtk-2.0/gdk/gdkinput.h:
+
+/usr/include/gtk-2.0/gdk/gdkdrawable.h:
+
+/usr/include/gtk-2.0/gdk/gdkgc.h:
+
+/usr/include/gtk-2.0/gdk/gdkrgb.h:
+
+/usr/include/gtk-2.0/gdk/gdkenumtypes.h:
+
+/usr/include/gtk-2.0/gdk/gdkfont.h:
+
+/usr/include/gtk-2.0/gdk/gdkimage.h:
+
+/usr/include/gtk-2.0/gdk/gdkkeys.h:
+
+/usr/include/gtk-2.0/gdk/gdkdisplaymanager.h:
+
+/usr/include/gtk-2.0/gdk/gdkpango.h:
+
+/usr/include/gtk-2.0/gdk/gdkpixbuf.h:
+
+/usr/include/gtk-2.0/gdk/gdkpixmap.h:
+
+/usr/include/gtk-2.0/gdk/gdkproperty.h:
+
+/usr/include/gtk-2.0/gdk/gdkregion.h:
+
+/usr/include/gtk-2.0/gdk/gdkscreen.h:
+
+/usr/include/gtk-2.0/gdk/gdkselection.h:
+
+/usr/include/gtk-2.0/gdk/gdkspawn.h:
+
+/usr/include/gtk-2.0/gdk/gdkvisual.h:
+
+/usr/include/gtk-2.0/gdk/gdkwindow.h:
+
+/usr/include/gtk-2.0/gtk/gtkaccelgroup.h:
+
+/usr/include/gtk-2.0/gtk/gtkenums.h:
+
+/usr/include/gtk-2.0/gtk/gtkaccellabel.h:
+
+/usr/include/gtk-2.0/gtk/gtklabel.h:
+
+/usr/include/gtk-2.0/gtk/gtkmisc.h:
+
+/usr/include/gtk-2.0/gtk/gtkwidget.h:
+
+/usr/include/gtk-2.0/gtk/gtkobject.h:
+
+/usr/include/gtk-2.0/gtk/gtktypeutils.h:
+
+/usr/include/gtk-2.0/gtk/gtktypebuiltins.h:
+
+/usr/include/gtk-2.0/gtk/gtkdebug.h:
+
+/usr/include/gtk-2.0/gtk/gtkadjustment.h:
+
+/usr/include/gtk-2.0/gtk/gtkstyle.h:
+
+/usr/include/gtk-2.0/gtk/gtksettings.h:
+
+/usr/include/gtk-2.0/gtk/gtkrc.h:
+
+/usr/include/atk-1.0/atk/atkobject.h:
+
+/usr/include/atk-1.0/atk/atkstate.h:
+
+/usr/include/atk-1.0/atk/atkrelationtype.h:
+
+/usr/include/gtk-2.0/gtk/gtkwindow.h:
+
+/usr/include/gtk-2.0/gtk/gtkbin.h:
+
+/usr/include/gtk-2.0/gtk/gtkcontainer.h:
+
+/usr/include/gtk-2.0/gtk/gtkmenu.h:
+
+/usr/include/gtk-2.0/gtk/gtkmenushell.h:
+
+/usr/include/gtk-2.0/gtk/gtkaccelmap.h:
+
+/usr/include/gtk-2.0/gtk/gtkaccessible.h:
+
+/usr/include/atk-1.0/atk/atk.h:
+
+/usr/include/atk-1.0/atk/atkaction.h:
+
+/usr/include/atk-1.0/atk/atkcomponent.h:
+
+/usr/include/atk-1.0/atk/atkutil.h:
+
+/usr/include/atk-1.0/atk/atkdocument.h:
+
+/usr/include/atk-1.0/atk/atkeditabletext.h:
+
+/usr/include/atk-1.0/atk/atktext.h:
+
+/usr/include/atk-1.0/atk/atkgobjectaccessible.h:
+
+/usr/include/atk-1.0/atk/atkhyperlink.h:
+
+/usr/include/atk-1.0/atk/atkhypertext.h:
+
+/usr/include/atk-1.0/atk/atkimage.h:
+
+/usr/include/atk-1.0/atk/atknoopobject.h:
+
+/usr/include/atk-1.0/atk/atknoopobjectfactory.h:
+
+/usr/include/atk-1.0/atk/atkobjectfactory.h:
+
+/usr/include/atk-1.0/atk/atkregistry.h:
+
+/usr/include/atk-1.0/atk/atkrelation.h:
+
+/usr/include/atk-1.0/atk/atkrelationset.h:
+
+/usr/include/atk-1.0/atk/atkselection.h:
+
+/usr/include/atk-1.0/atk/atkstateset.h:
+
+/usr/include/atk-1.0/atk/atkstreamablecontent.h:
+
+/usr/include/atk-1.0/atk/atktable.h:
+
+/usr/include/atk-1.0/atk/atkvalue.h:
+
+/usr/include/gtk-2.0/gtk/gtkaction.h:
+
+/usr/include/gtk-2.0/gtk/gtkactiongroup.h:
+
+/usr/include/gtk-2.0/gtk/gtkitemfactory.h:
+
+/usr/include/gtk-2.0/gtk/gtkalignment.h:
+
+/usr/include/gtk-2.0/gtk/gtkarrow.h:
+
+/usr/include/gtk-2.0/gtk/gtkaspectframe.h:
+
+/usr/include/gtk-2.0/gtk/gtkframe.h:
+
+/usr/include/gtk-2.0/gtk/gtkbbox.h:
+
+/usr/include/gtk-2.0/gtk/gtkbox.h:
+
+/usr/include/gtk-2.0/gtk/gtkbindings.h:
+
+/usr/include/gtk-2.0/gtk/gtkbutton.h:
+
+/usr/include/gtk-2.0/gtk/gtkcalendar.h:
+
+/usr/include/gtk-2.0/gtk/gtksignal.h:
+
+/usr/include/gtk-2.0/gtk/gtkmarshal.h:
+
+/usr/include/gtk-2.0/gtk/gtkcelllayout.h:
+
+/usr/include/gtk-2.0/gtk/gtkcellrenderer.h:
+
+/usr/include/gtk-2.0/gtk/gtkcelleditable.h:
+
+/usr/include/gtk-2.0/gtk/gtktreeviewcolumn.h:
+
+/usr/include/gtk-2.0/gtk/gtktreemodel.h:
+
+/usr/include/gtk-2.0/gtk/gtktreesortable.h:
+
+/usr/include/gtk-2.0/gtk/gtkcellrendererpixbuf.h:
+
+/usr/include/gtk-2.0/gtk/gtkcellrenderertext.h:
+
+/usr/include/gtk-2.0/gtk/gtkcellrenderertoggle.h:
+
+/usr/include/gtk-2.0/gtk/gtkcheckbutton.h:
+
+/usr/include/gtk-2.0/gtk/gtktogglebutton.h:
+
+/usr/include/gtk-2.0/gtk/gtkcheckmenuitem.h:
+
+/usr/include/gtk-2.0/gtk/gtkmenuitem.h:
+
+/usr/include/gtk-2.0/gtk/gtkitem.h:
+
+/usr/include/gtk-2.0/gtk/gtkclipboard.h:
+
+/usr/include/gtk-2.0/gtk/gtkselection.h:
+
+/usr/include/gtk-2.0/gtk/gtkclist.h:
+
+/usr/include/gtk-2.0/gtk/gtkhscrollbar.h:
+
+/usr/include/gtk-2.0/gtk/gtkscrollbar.h:
+
+/usr/include/gtk-2.0/gtk/gtkrange.h:
+
+/usr/include/gtk-2.0/gtk/gtkvscrollbar.h:
+
+/usr/include/gtk-2.0/gtk/gtkcolorbutton.h:
+
+/usr/include/gtk-2.0/gtk/gtkcolorsel.h:
+
+/usr/include/gtk-2.0/gtk/gtkdialog.h:
+
+/usr/include/gtk-2.0/gtk/gtkvbox.h:
+
+/usr/include/gtk-2.0/gtk/gtkcolorseldialog.h:
+
+/usr/include/gtk-2.0/gtk/gtkcombo.h:
+
+/usr/include/gtk-2.0/gtk/gtkhbox.h:
+
+/usr/include/gtk-2.0/gtk/gtkcombobox.h:
+
+/usr/include/gtk-2.0/gtk/gtktreeview.h:
+
+/usr/include/gtk-2.0/gtk/gtkdnd.h:
+
+/usr/include/gtk-2.0/gtk/gtkcomboboxentry.h:
+
+/usr/include/gtk-2.0/gtk/gtkctree.h:
+
+/usr/include/gtk-2.0/gtk/gtkcurve.h:
+
+/usr/include/gtk-2.0/gtk/gtkdrawingarea.h:
+
+/usr/include/gtk-2.0/gtk/gtkeditable.h:
+
+/usr/include/gtk-2.0/gtk/gtkentry.h:
+
+/usr/include/gtk-2.0/gtk/gtkimcontext.h:
+
+/usr/include/gtk-2.0/gtk/gtkentrycompletion.h:
+
+/usr/include/gtk-2.0/gtk/gtkliststore.h:
+
+/usr/include/gtk-2.0/gtk/gtktreemodelfilter.h:
+
+/usr/include/gtk-2.0/gtk/gtkeventbox.h:
+
+/usr/include/gtk-2.0/gtk/gtkexpander.h:
+
+/usr/include/gtk-2.0/gtk/gtkfilesel.h:
+
+/usr/include/gtk-2.0/gtk/gtkfixed.h:
+
+/usr/include/gtk-2.0/gtk/gtkfilechooserdialog.h:
+
+/usr/include/gtk-2.0/gtk/gtkfilechooser.h:
+
+/usr/include/gtk-2.0/gtk/gtkfilefilter.h:
+
+/usr/include/gtk-2.0/gtk/gtkfilechooserwidget.h:
+
+/usr/include/gtk-2.0/gtk/gtkfontbutton.h:
+
+/usr/include/gtk-2.0/gtk/gtkfontsel.h:
+
+/usr/include/gtk-2.0/gtk/gtkgamma.h:
+
+/usr/include/gtk-2.0/gtk/gtkgc.h:
+
+/usr/include/gtk-2.0/gtk/gtkhandlebox.h:
+
+/usr/include/gtk-2.0/gtk/gtkhbbox.h:
+
+/usr/include/gtk-2.0/gtk/gtkhpaned.h:
+
+/usr/include/gtk-2.0/gtk/gtkpaned.h:
+
+/usr/include/gtk-2.0/gtk/gtkhruler.h:
+
+/usr/include/gtk-2.0/gtk/gtkruler.h:
+
+/usr/include/gtk-2.0/gtk/gtkhscale.h:
+
+/usr/include/gtk-2.0/gtk/gtkscale.h:
+
+/usr/include/gtk-2.0/gtk/gtkhseparator.h:
+
+/usr/include/gtk-2.0/gtk/gtkseparator.h:
+
+/usr/include/gtk-2.0/gtk/gtkiconfactory.h:
+
+/usr/include/gtk-2.0/gtk/gtkicontheme.h:
+
+/usr/include/gtk-2.0/gtk/gtkimage.h:
+
+/usr/include/gtk-2.0/gtk/gtkimagemenuitem.h:
+
+/usr/include/gtk-2.0/gtk/gtkimcontextsimple.h:
+
+/usr/include/gtk-2.0/gtk/gtkimmulticontext.h:
+
+/usr/include/gtk-2.0/gtk/gtkinputdialog.h:
+
+/usr/include/gtk-2.0/gtk/gtkinvisible.h:
+
+/usr/include/gtk-2.0/gtk/gtklayout.h:
+
+/usr/include/gtk-2.0/gtk/gtklist.h:
+
+/usr/include/gtk-2.0/gtk/gtklistitem.h:
+
+/usr/include/gtk-2.0/gtk/gtkmain.h:
+
+/usr/include/gtk-2.0/gtk/gtkmenubar.h:
+
+/usr/include/gtk-2.0/gtk/gtkmessagedialog.h:
+
+/usr/include/gtk-2.0/gtk/gtknotebook.h:
+
+/usr/include/gtk-2.0/gtk/gtkoldeditable.h:
+
+/usr/include/gtk-2.0/gtk/gtkoptionmenu.h:
+
+/usr/include/gtk-2.0/gtk/gtkpixmap.h:
+
+/usr/include/gtk-2.0/gtk/gtkplug.h:
+
+/usr/include/gtk-2.0/gtk/gtksocket.h:
+
+/usr/include/gtk-2.0/gtk/gtkpreview.h:
+
+/usr/include/gtk-2.0/gtk/gtkprogress.h:
+
+/usr/include/gtk-2.0/gtk/gtkprogressbar.h:
+
+/usr/include/gtk-2.0/gtk/gtkradioaction.h:
+
+/usr/include/gtk-2.0/gtk/gtktoggleaction.h:
+
+/usr/include/gtk-2.0/gtk/gtkradiobutton.h:
+
+/usr/include/gtk-2.0/gtk/gtkradiomenuitem.h:
+
+/usr/include/gtk-2.0/gtk/gtkradiotoolbutton.h:
+
+/usr/include/gtk-2.0/gtk/gtktoggletoolbutton.h:
+
+/usr/include/gtk-2.0/gtk/gtktoolbutton.h:
+
+/usr/include/gtk-2.0/gtk/gtktoolitem.h:
+
+/usr/include/gtk-2.0/gtk/gtktooltips.h:
+
+/usr/include/gtk-2.0/gtk/gtkscrolledwindow.h:
+
+/usr/include/gtk-2.0/gtk/gtkviewport.h:
+
+/usr/include/gtk-2.0/gtk/gtkseparatormenuitem.h:
+
+/usr/include/gtk-2.0/gtk/gtkseparatortoolitem.h:
+
+/usr/include/gtk-2.0/gtk/gtksizegroup.h:
+
+/usr/include/gtk-2.0/gtk/gtkspinbutton.h:
+
+/usr/include/gtk-2.0/gtk/gtkstatusbar.h:
+
+/usr/include/gtk-2.0/gtk/gtkstock.h:
+
+/usr/include/gtk-2.0/gtk/gtktable.h:
+
+/usr/include/gtk-2.0/gtk/gtktearoffmenuitem.h:
+
+/usr/include/gtk-2.0/gtk/gtktext.h:
+
+/usr/include/gtk-2.0/gtk/gtktextbuffer.h:
+
+/usr/include/gtk-2.0/gtk/gtktexttagtable.h:
+
+/usr/include/gtk-2.0/gtk/gtktexttag.h:
+
+/usr/include/gtk-2.0/gtk/gtktextiter.h:
+
+/usr/include/gtk-2.0/gtk/gtktextchild.h:
+
+/usr/include/gtk-2.0/gtk/gtktextmark.h:
+
+/usr/include/gtk-2.0/gtk/gtktextview.h:
+
+/usr/include/gtk-2.0/gtk/gtktipsquery.h:
+
+/usr/include/gtk-2.0/gtk/gtktoolbar.h:
+
+/usr/include/gtk-2.0/gtk/gtktree.h:
+
+/usr/include/gtk-2.0/gtk/gtktreednd.h:
+
+/usr/include/gtk-2.0/gtk/gtktreeitem.h:
+
+/usr/include/gtk-2.0/gtk/gtktreemodelsort.h:
+
+/usr/include/gtk-2.0/gtk/gtktreeselection.h:
+
+/usr/include/gtk-2.0/gtk/gtktreestore.h:
+
+/usr/include/gtk-2.0/gtk/gtkuimanager.h:
+
+/usr/include/gtk-2.0/gtk/gtkvbbox.h:
+
+/usr/include/gtk-2.0/gtk/gtkversion.h:
+
+/usr/include/gtk-2.0/gtk/gtkvpaned.h:
+
+/usr/include/gtk-2.0/gtk/gtkvruler.h:
+
+/usr/include/gtk-2.0/gtk/gtkvscale.h:
+
+/usr/include/gtk-2.0/gtk/gtkvseparator.h:
+
+../../../../lttv/lttv/lttv.h:
+
+../../../../lttv/lttv/attribute.h:
+
+../../../../lttv/lttv/iattribute.h:
+
+../../../../ltt/time.h:
+
+../../../../ltt/compiler.h:
+
+/usr/include/math.h:
+
+/usr/include/bits/huge_val.h:
+
+/usr/include/bits/mathdef.h:
+
+/usr/include/bits/mathcalls.h:
+
+/usr/include/bits/mathinline.h:
+
+/usr/include/stdio.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/include/bits/wchar.h:
+
+/usr/include/gconv.h:
+
+/usr/include/bits/stdio_lim.h:
+
+/usr/include/bits/sys_errlist.h:
+
+/usr/include/bits/stdio.h:
+
+../../../../lttv/lttv/module.h:
+
+../../../../lttv/lttv/hook.h:
+
+../../../../lttv/lttv/filter.h:
+
+../../../../lttv/lttv/traceset.h:
+
+../../../../ltt/ltt.h:
+
+../../../../lttv/lttv/tracecontext.h:
+
+../../../../lttv/lttv/state.h:
+
+../../../../ltt/event.h:
+
+../../../../lttv/modules/gui/lttvwindow/lttvwindow/lttvwindow.h:
+
+../../../../lttv/lttv/stats.h:
+
+../../../../lttv/modules/gui/lttvwindow/lttvwindow/mainwindow.h:
+
+../../../../lttv/modules/gui/lttvwindow/lttvwindow/lttvfilter.h:
+
+../../../../lttv/modules/gui/lttvwindow/lttvwindow/lttvwindowtraces.h:
+
+hGuiFilterInsert.xpm:
diff --git a/ltt/branches/poly/lttv/modules/gui/filter/.deps/libguifilter.la.Plo b/ltt/branches/poly/lttv/modules/gui/filter/.deps/libguifilter.la.Plo
new file mode 100644 (file)
index 0000000..9ce06a8
--- /dev/null
@@ -0,0 +1 @@
+# dummy
diff --git a/ltt/branches/poly/lttv/modules/gui/filter/Makefile.am b/ltt/branches/poly/lttv/modules/gui/filter/Makefile.am
new file mode 100644 (file)
index 0000000..25fc978
--- /dev/null
@@ -0,0 +1,21 @@
+#
+# Makefile for LTT New generation user interface : plugins.
+#
+# Created by Mathieu Desnoyers on May 6, 2003
+#
+
+AM_CFLAGS = $(GLIB_CFLAGS) 
+AM_CFLAGS += $(GTK_CFLAGS)
+LIBS += $(GLIB_LIBS)
+LIBS += $(GTK_LIBS) -L${top_srcdir}/lttv/modules/gui/lttvwindow/lttvwindow -llttvwindow
+
+libdir = ${lttvplugindir}
+
+lib_LTLIBRARIES = libguifilter.la
+libguifilter_la_LDFLAGS = -module
+libguifilter_la_SOURCES = filter.c
+
+EXTRA_DIST = \
+    hGuiFilterInsert.xpm
+    
+
diff --git a/ltt/branches/poly/lttv/modules/gui/filter/filter.c b/ltt/branches/poly/lttv/modules/gui/filter/filter.c
new file mode 100644 (file)
index 0000000..04b9e77
--- /dev/null
@@ -0,0 +1,196 @@
+/* This file is part of the Linux Trace Toolkit viewer
+ * Copyright (C) 2003-2004 Simon Bouvier-Zappa
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License Version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, 
+ * MA 02111-1307, USA.
+ */
+
+#include <glib.h>
+#include <string.h>
+#include <gtk/gtk.h>
+#include <gdk/gdk.h>
+
+#include <lttv/lttv.h>
+#include <lttv/module.h>
+#include <lttv/hook.h>
+#include <lttv/filter.h>
+
+#include <lttvwindow/lttvwindow.h>
+#include <lttvwindow/lttvwindowtraces.h>
+
+#include "hGuiFilterInsert.xpm"
+
+typedef struct _FilterViewerData FilterViewerData;
+
+GtkWidget *guifilter_get_widget(FilterViewerData *fvd);
+FilterViewerData *gui_filter(Tab *tab);
+void gui_filter_destructor(FilterViewerData *fvd);
+gboolean filter_traceset_changed(void * hook_data, void * call_data);
+gboolean filter_viewer_data(void * hook_data, void * call_data); 
+GtkWidget* h_gui_filter(Tab *tab);
+void statistic_destroy_walk(gpointer data, gpointer user_data);
+  
+struct _FilterViewerData {
+  Tab *tab;
+
+  // temp widget -- still thinking about a formal structure
+  GtkWidget *vcontainer;
+  GtkWidget *window;
+};
+
+GtkWidget 
+*guifilter_get_widget(FilterViewerData *fvd)
+{
+  return fvd->window;
+}
+
+/**
+ * Statistic Viewer's constructor
+ *
+ * This constructor is used to create StatisticViewerData data structure.
+ * @return The Statistic viewer data created.
+ */
+FilterViewerData*
+gui_filter(Tab *tab)
+{
+  GtkCellRenderer *renderer;
+  GtkTreeViewColumn *column;
+
+  FilterViewerData* fvd = g_new(FilterViewerData,1);
+
+  fvd->tab  = tab;
+
+  lttvwindow_register_traceset_notify(fvd->tab,
+                                      filter_traceset_changed,
+                                      filter_viewer_data);
+//  request_background_data(filter_viewer_data);
+
+  /* Initialize the vertical container */
+  
+  fvd->window =  gtk_drawing_area_new();
+
+  gtk_widget_set_size_request(fvd->window,200,200);
+        
+  fvd->vcontainer = gtk_vbox_new (FALSE, 1);
+  gtk_container_set_border_width (GTK_CONTAINER (fvd->vcontainer), 1);
+  gtk_container_add (GTK_CONTAINER (fvd->window), fvd->vcontainer);
+
+  gtk_box_pack_start (GTK_BOX (fvd->vcontainer), fvd->window, TRUE, TRUE, 0);
+  
+//  gtk_widget_show(fvd->window);
+  
+  g_object_set_data_full(
+      G_OBJECT(guifilter_get_widget(fvd)),
+      "filter_viewer_data",
+      fvd,
+      (GDestroyNotify)gui_filter_destructor);
+
+  return fvd;
+}
+
+void
+gui_filter_destructor(FilterViewerData *fvd)
+{
+  Tab *tab = fvd->tab;
+
+  /* May already been done by GTK window closing */
+  if(GTK_IS_WIDGET(guifilter_get_widget(fvd))){
+    g_info("widget still exists");
+  }
+  if(tab != NULL) {
+    lttvwindow_unregister_traceset_notify(fvd->tab,
+                                          filter_traceset_changed,
+                                          filter_viewer_data);
+  }
+  lttvwindowtraces_background_notify_remove(fvd);
+
+  g_free(fvd);
+}
+
+gboolean
+filter_traceset_changed(void * hook_data, void * call_data) {
+
+  return FALSE;
+}
+
+gboolean
+filter_viewer_data(void * hook_data, void * call_data) {
+
+  return FALSE;
+}
+
+/**
+ * Filter Module's constructor hook
+ *
+ * This constructor is given as a parameter to the menuitem and toolbar button
+ * registration. It creates the list.
+ * @param parent_window A pointer to the parent window.
+ * @return The widget created.
+ */
+GtkWidget *
+h_gui_filter(Tab *tab)
+{
+  FilterViewerData* f = gui_filter(tab) ;
+
+  if(f)
+    return guifilter_get_widget(f);
+  else return NULL;
+  
+}
+
+
+
+/**
+ * plugin's init function
+ *
+ * This function initializes the Statistic Viewer functionnality through the
+ * gtkTraceSet API.
+ */
+static void init() {
+
+  lttvwindow_register_constructor("guifilter",
+                                  "/",
+                                  "Insert Filter Module",
+                                  hGuiFilterInsert_xpm,
+                                  "Insert Filter Module",
+                                  h_gui_filter);
+}
+
+void filter_destroy_walk(gpointer data, gpointer user_data)
+{
+  FilterViewerData *fvd = (FilterViewerData*)data;
+
+  g_debug("CFV.c : statistic_destroy_walk, %p", fvd);
+  /* May already have been done by GTK window closing */
+  if(GTK_IS_WIDGET(guifilter_get_widget(fvd)))
+    gtk_widget_destroy(guifilter_get_widget(fvd));
+}
+
+/**
+ * plugin's destroy function
+ *
+ * This function releases the memory reserved by the module and unregisters
+ * everything that has been registered in the gtkTraceSet API.
+ */
+static void destroy() {
+  
+  lttvwindow_unregister_constructor(h_gui_filter);
+  
+}
+
+
+LTTV_MODULE("guifilter", "Filter window", \
+    "Graphical module that let user specify their filtering options", \
+    init, destroy, "lttvwindow")
+
diff --git a/ltt/branches/poly/lttv/modules/gui/filter/hGuiFilterInsert.xpm b/ltt/branches/poly/lttv/modules/gui/filter/hGuiFilterInsert.xpm
new file mode 100644 (file)
index 0000000..02515a0
--- /dev/null
@@ -0,0 +1,30 @@
+/* XPM */
+static char * hGuiFilterInsert_xpm[] = {
+"22 22 5 1",
+"      c None",
+".     c #800080",
+"r  c #FF0000",
+"g  c #00FF00",
+"b  c #0000FF",
+"                      ",
+"                      ",
+"      .....           ",
+"      ..  ..          ",
+"      ..   ..         ",
+"      ..    ..        ",
+"   .....     ..       ",
+"   .....      .       ",
+"      ..      ..      ",
+"      ..      ..      ",
+"      ..      .....   ",
+"      ..      .....   ",
+"      ..      ..      ",
+"      ..      ..      ",
+"   .....      .       ",
+"   .....     ..       ",
+"      ..    ..        ",
+"      ..   ..         ",
+"      ..  ..          ",
+"      .....           ",
+"                      ",
+"                      "};
index bcca87515df5a354fecc11034026756941918a0e..17d73f60541d16c32617de543f363a333ddf3c81 100644 (file)
  * MA 02111-1307, USA.
  */
 
-/* The text filter facility will prompt for user filter option 
- * and transmit them to the lttv core */
+/* 
+ * The text filter facility will prompt for user filter option 
+ * and transmit them to the lttv core 
+ */
 
 #include <lttv/lttv.h>
 #include <lttv/option.h>
 /* Insert the hooks before and after each trace and tracefile, and for each
    event. Print a global header. */
 
-static char
+/*
+ *  YET TO BE ANSWERED !
+ *  - why does this module need dependency with batchAnalysis ?
+ */
+
+static char 
   *a_file_name = NULL,
+  *a_string = NULL;
+
+static GString
   *a_filter_string = NULL;
 
+
 static LttvHooks
   *before_traceset,
   *event_hook;
 
 static FILE *a_file;
 
+
 /**
- * analyses user filter options and issues the filter string
- * to the core
+ * filters the file input from user
  * @param hook_data the hook data
- * @param call_data the call data
+ * @return success/failure of operation
  */
-static void parse_filter_options(void *hook_data, void *call_data) {
-
-       char* parsed_string=NULL;       /* the string compiled from user's input */ 
-       
-       /* debug */
-       g_print("textFilter::parse_filter_options\n");  
-       
-       /* recovering hooks data */
-       LttvTracefileContext *tfc = (LttvTracefileContext *)call_data;
-
-       LttvTracefileState *tfs = (LttvTracefileState *)call_data;
-
-//     LttvTrace* lt = tfc->t_context->vt;
-       
-       /* hook header */
-       g_info("TextFilter options parser");
-       
-       /*
+void filter_analyze_file(void *hook_data) {
+
+  g_print("textFilter::filter_analyze_file\n");
+  /*
         *      User may specify filtering options through static file
         *      and/or command line string.  From these sources, an 
         *      option string is rebuilded and sent to the filter core
         */
-       if(a_file_name != NULL) {       /* -f switch in use */
-               a_file = fopen(a_file_name, "r"); 
-               if(a_file == NULL) 
-                       g_error("textFilter::parse_filter_content() cannot open file %s", a_file_name);
-
-               fscanf(a_file,"%s",parsed_string);
-               
-               fclose(a_file);
-       }
-       if(a_filter_string != NULL)     /* -s switch in use */
-               parsed_string = a_filter_string;        
-
-       if(parsed_string==NULL) 
-               g_warning("textFilter::parser_filter_options() no filtering options specified !"); 
-
-       /*      send the filtering string to the core   */
-       lttv_filter_new(parsed_string,tfs);     
-       
+       a_file = fopen(a_file_name, "r"); 
+       if(a_file == NULL) { 
+               g_warning("file %s does not exist", a_file_name);
+    return;
+  }
+  
+  char* tmp;
+  fscanf(a_file,"%s",tmp);
+    
+  if(!a_filter_string->len) {
+    g_string_append(a_filter_string,tmp);
+  }
+  else {
+    g_string_append(a_filter_string,"&"); /*conjonction between expression*/
+    g_string_append(a_filter_string,tmp);
+  }
+  
+  fclose(a_file);
+}
+
+/**
+ * filters the string input from user
+ * @param hook_data the hook data
+ * @return success/failure of operation
+ */
+void filter_analyze_string(void *hook_data) {
+
+  g_print("textFilter::filter_analyze_string\n");
+  /*
+        *      User may specify filtering options through static file
+        *      and/or command line string.  From these sources, an 
+        *      option string is rebuilded and sent to the filter core
+        */
+  if(!a_filter_string->len) {
+    g_string_append(a_filter_string,a_string);
+    lttv_filter_new(a_filter_string,NULL);
+  }
+  else {
+    g_string_append(a_filter_string,"&"); /*conjonction between expression*/
+    g_string_append(a_filter_string,a_string);
+  }
+
 }
 
 /**
@@ -112,26 +135,28 @@ static gboolean filter_event_content(void *hook_data, void *call_data) {
  */
 static void init() {
   
-  g_print("textFilter::init()");       /* debug */
-       
+  g_print("textFilter::init()\n");     /* debug */
+
+  a_filter_string = g_string_new("");
+  
   LttvAttributeValue value;
 
   LttvIAttribute *attributes = LTTV_IATTRIBUTE(lttv_global_attributes());
 
   g_info("Init textFilter.c");
   
-  a_filter_string = NULL;
+  a_string = NULL;
   lttv_option_add("string", 's', 
       "filters a string issued by the user on the command line", 
       "string", 
-      LTTV_OPT_STRING, &a_filter_string, NULL, NULL);
+      LTTV_OPT_STRING, &a_string, filter_analyze_string, NULL);
   // add function to call for option
   
   a_file_name = NULL;
   lttv_option_add("filename", 'f', 
       "browse the filter options contained in specified file", 
       "file name", 
-      LTTV_OPT_STRING, &a_file_name, NULL, NULL);
+      LTTV_OPT_STRING, &a_file_name, filter_analyze_file, NULL);
   
   /*
    *   Note to myself !
@@ -143,10 +168,10 @@ static void init() {
   g_assert((event_hook = *(value.v_pointer)) != NULL);
   lttv_hooks_add(event_hook, filter_event_content, NULL, LTTV_PRIO_DEFAULT);
 
-  g_assert(lttv_iattribute_find_by_path(attributes,"hooks/trace/before",
-       LTTV_POINTER, &value));
-  g_assert((before_traceset = *(value.v_pointer)) != NULL);
-  lttv_hooks_add(before_traceset, parse_filter_options, NULL, LTTV_PRIO_DEFAULT);
+//  g_assert(lttv_iattribute_find_by_path(attributes,"hooks/trace/before",
+//     LTTV_POINTER, &value));
+//  g_assert((before_traceset = *(value.v_pointer)) != NULL);
+//  lttv_hooks_add(before_traceset, parse_filter_options, NULL, LTTV_PRIO_DEFAULT);
 
   
 }
@@ -163,12 +188,12 @@ static void destroy() {
 
   lttv_hooks_remove_data(event_hook, filter_event_content, NULL);
 
-  lttv_hooks_remove_data(before_traceset, parse_filter_options, NULL);
+//  lttv_hooks_remove_data(before_traceset, parse_filter_options, NULL);
   
 }
 
 
 LTTV_MODULE("textFilter", "Filters traces", \
            "Filter the trace following commands issued by user input", \
-           init, destroy, "option")
+           init, destroy, "batchAnalysis", "option")
 
This page took 0.042389 seconds and 4 git commands to generate.