* - remove the idle expressions in the tree
*/
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
//#define TEST
#ifdef TEST
#include <time.h>
#endif
#include <lttv/filter.h>
+#include <ltt/trace.h>
+#include <ltt/type.h>
+#include <stdlib.h>
+#include <string.h>
/**
* @fn LttvSimpleExpression* lttv_simple_expression_new()
GString* f = NULL;
if(fp->len < 2) return FALSE;
- g_assert(f=g_ptr_array_remove_index(fp,0));
+ g_assert((f=g_ptr_array_remove_index(fp,0)));
/*
* Parse through the specified
gboolean is_double = FALSE;
LttTime t = ltt_time_zero;
GString* v;
- GQuark quark;
switch(se->field) {
/*
/* cannot specify number with more than one '.' */
if(is_double) return FALSE;
else is_double = TRUE;
- t.tv_sec = atoi(v);
+ t.tv_sec = atoi(v->str);
g_string_free(v,TRUE);
v = g_string_new("");
} else g_string_append_c(v,value[i]);
}
/* number can be integer or double */
- if(is_double) t.tv_nsec = atoi(v);
- else t.tv_sec = atoi(v);
+ if(is_double) t.tv_nsec = atoi(v->str);
+ else t.tv_sec = atoi(v->str);
g_string_free(v,TRUE);
*/
LttvFilter*
lttv_filter_clone(const LttvFilter* filter) {
-
+
+ if(!filter) return NULL;
+
LttvFilter* newfilter = g_new(LttvFilter,1);
strcpy(newfilter->expression,filter->expression);
void
lttv_filter_destroy(LttvFilter* filter) {
- g_free(filter->expression);
- lttv_filter_tree_destroy(filter->head);
+ if(!filter) return;
+
+ if(filter->expression)
+ g_free(filter->expression);
+ if(filter->head)
+ lttv_filter_tree_destroy(filter->head);
g_free(filter);
}
if(expression == NULL) return FALSE;
if(filter == NULL) return FALSE;
+ if(expression[0] == '\0') return FALSE; /* Empty expression */
GString* s = g_string_new("");
if(filter->expression != NULL) {
case LTTV_FILTER_TRACE_NAME:
if(trace == NULL) return TRUE;
else {
- char* trace_name = ltt_trace_name(trace);
- GQuark quark = g_quark_from_string(trace_name);
+ GQuark quark = ltt_trace_name(trace);
return se->op((gpointer)&quark,v);
}
break;
case LTTV_FILTER_TRACEFILE_NAME:
if(tracefile == NULL) return TRUE;
else {
- char* tracefile_name = ltt_tracefile_name(tracefile);
- GQuark quark = g_quark_from_string(tracefile_name);
+ GQuark quark = ltt_tracefile_name(tracefile);
return se->op((gpointer)&quark,v);
}
break;
case LTTV_FILTER_STATE_CPU:
if(context == NULL) return TRUE;
else {
- /* FIXME: not sure of that one */
- GQuark quark = ((LttvTracefileState*)context)->cpu_name;
- return se->op((gpointer)&quark,v);
+ /* FIXME: not sure of that one Mathieu : fixed.*/
+ // GQuark quark = ((LttvTracefileState*)context)->cpu_name;
+ // return se->op((gpointer)&quark,v);
+ if(state == NULL) return TRUE;
+ else return se->op((gpointer)&state->cpu,v);
}
break;
case LTTV_FILTER_EVENT_NAME:
else {
LttEventType* et;
et = ltt_event_eventtype(event);
- char* event_name = ltt_eventtype_name(et);
- GQuark quark = g_quark_from_string(event_name);
+ GQuark quark = ltt_eventtype_name(et);
return se->op((gpointer)&quark,v);
}
break;