- //g_print("%p: left is %i %p %s\n",t,t->l_child.leaf->field,t->l_child.leaf->op,t->l_child.leaf->value);
- LttvFieldValue v;
- v = t->l_child.leaf->value;
- switch(t->l_child.leaf->field) {
-
- case LTTV_FILTER_TRACE_NAME:
- if(trace == NULL) lresult = TRUE;
- else lresult = t->l_child.leaf->op((gpointer)ltt_trace_name(trace),v);
- break;
- case LTTV_FILTER_TRACEFILE_NAME:
- if(tracefile == NULL) lresult = TRUE;
- else lresult = t->l_child.leaf->op((gpointer)ltt_tracefile_name(tracefile),v);
- break;
- case LTTV_FILTER_STATE_PID:
- if(state == NULL) lresult = TRUE;
- else lresult = t->l_child.leaf->op((gpointer)&state->pid,v);
- break;
- case LTTV_FILTER_STATE_PPID:
- if(state == NULL) lresult = TRUE;
- else lresult = t->l_child.leaf->op((gpointer)&state->ppid,v);
- break;
- case LTTV_FILTER_STATE_CT:
- if(state == NULL) lresult = TRUE;
- else {
-// double val = ltt_time_to_double(state->creation_time);
- lresult = t->l_child.leaf->op((gpointer)&state->creation_time,v);
- }
- break;
- case LTTV_FILTER_STATE_IT:
- if(state == NULL) lresult = TRUE;
- else {
-// double val = ltt_time_to_double(state->insertion_time);
- lresult = t->l_child.leaf->op((gpointer)&state->insertion_time,v);
- }
- break;
- case LTTV_FILTER_STATE_P_NAME:
- /*
- * FIXME: Yet to be done ( I think ? )
- */
- lresult = TRUE;
- break;
- case LTTV_FILTER_STATE_EX_MODE:
- if(state == NULL) lresult = TRUE;
- else lresult = t->l_child.leaf->op((gpointer)&state->state->t,v);
- break;
- case LTTV_FILTER_STATE_EX_SUBMODE:
- if(state == NULL) lresult = TRUE;
- else lresult = t->l_child.leaf->op((gpointer)&state->state->n,v);
- break;
- case LTTV_FILTER_STATE_P_STATUS:
- if(state == NULL) lresult = TRUE;
- else lresult = t->l_child.leaf->op((gpointer)&state->state->s,v);
- break;
- case LTTV_FILTER_STATE_CPU:
- /*
- * FIXME: What is the comparison value ?
- */
- lresult = TRUE;
- break;
- case LTTV_FILTER_EVENT_NAME:
- if(event == NULL) lresult = TRUE;
- else lresult = t->l_child.leaf->op((gpointer)ltt_event_eventtype(event),v);
- break;
-
- case LTTV_FILTER_EVENT_CATEGORY:
- /*
- * FIXME: Not yet implemented
- */
- lresult = TRUE;
- break;
- case LTTV_FILTER_EVENT_TIME:
-// if(event == NULL) lresult = TRUE;
-// else {
-// double val = ltt_time_to_double(event->event_time);
-// lresult = t->l_child.leaf->op((gpointer)&val,v);
-// }
- lresult = TRUE;
- break;
- case LTTV_FILTER_EVENT_TSC:
-// if(event == NULL) lresult = TRUE;
-// else {
-// double val = ltt_time_to_double(event->event_time);
-// lresult = t->l_child.leaf->op((gpointer)&val,v);
-// }
- /*
- * FIXME: Where is event.tsc
- */
- lresult = TRUE;
- break;
- case LTTV_FILTER_EVENT_FIELD:
- /*
- * TODO: Use the offset to
- * find the dynamic field
- * in the event struct
- */
- lresult = TRUE;
- default:
- /*
- * This case should never be
- * parsed, if so, the whole
- * filtering is cancelled
- */
- g_warning("Error while parsing the filter tree");
- return TRUE;
- }