From 2ea36caf80da2b86d4b565fe3cbded286c7664d7 Mon Sep 17 00:00:00 2001 From: siboud Date: Tue, 15 Mar 2005 18:45:33 +0000 Subject: [PATCH] core filter, lttvwindow, batchanalysis changed definition of lttv_filter to LttvFilter git-svn-id: http://ltt.polymtl.ca/svn@889 04897980-b3bd-0310-b5e0-8ef037075253 --- ltt/branches/poly/lttv/lttv/filter.c | 62 +++++++------- ltt/branches/poly/lttv/lttv/filter.h | 80 ++++++++++--------- .../gui/lttvwindow/lttvwindow/lttvwindow.h | 4 +- .../poly/lttv/modules/text/batchAnalysis.c | 2 +- 4 files changed, 79 insertions(+), 69 deletions(-) diff --git a/ltt/branches/poly/lttv/lttv/filter.c b/ltt/branches/poly/lttv/lttv/filter.c index 62092a25..dbdb1602 100644 --- a/ltt/branches/poly/lttv/lttv/filter.c +++ b/ltt/branches/poly/lttv/lttv/filter.c @@ -80,7 +80,7 @@ GQuark LTTV_FILTER_P_STATUS, LTTV_FILTER_CPU; -lttv_simple_expression* +LttvSimpleExpression* lttv_simple_expression_new() { } @@ -88,12 +88,12 @@ lttv_simple_expression_new() { /** * Assign a new tree for the current expression * or sub expression - * @return pointer of lttv_filter_tree + * @return pointer of LttvFilter */ -lttv_filter_tree* lttv_filter_tree_new() { - lttv_filter_tree* tree; +LttvFilter* lttv_filter_tree_new() { + LttvFilter* tree; - tree = g_new(lttv_filter_tree,1); + tree = g_new(LttvFilter,1); tree->node = 0; //g_new(lttv_expression,1); // tree->node->type = LTTV_UNDEFINED_EXPRESSION; tree->left = LTTV_TREE_IDLE; @@ -106,7 +106,7 @@ lttv_filter_tree* lttv_filter_tree_new() { * Destroys the tree and his sub-trees * @param tree Tree which must be destroyed */ -void lttv_filter_tree_destroy(lttv_filter_tree* tree) { +void lttv_filter_tree_destroy(LttvFilter* tree) { if(tree->left == LTTV_TREE_LEAF) g_free(tree->l_child.leaf); else if(tree->left == LTTV_TREE_NODE) lttv_filter_tree_destroy(tree->l_child.t); @@ -118,10 +118,10 @@ void lttv_filter_tree_destroy(lttv_filter_tree* tree) { g_free(tree); } -lttv_filter* -lttv_filter_clone(lttv_filter* tree) { +LttvFilter* +lttv_filter_clone(LttvFilter* tree) { - lttv_filter* newtree = lttv_filter_tree_new(); + LttvFilter* newtree = lttv_filter_tree_new(); /* * TODO : Copy tree into new tree @@ -132,12 +132,12 @@ lttv_filter_clone(lttv_filter* tree) { } void -lttv_filter_tree_add_node(GPtrArray* stack, lttv_filter_tree* subtree, lttv_logical_op op) { +lttv_filter_tree_add_node(GPtrArray* stack, LttvFilter* subtree, LttvLogicalOp op) { - lttv_filter_tree* t1 = NULL; - lttv_filter_tree* t2 = NULL;; + LttvFilter* t1 = NULL; + LttvFilter* t2 = NULL; - t1 = (lttv_filter_tree*)g_ptr_array_index(stack,stack->len-1); + t1 = (LttvFilter*)g_ptr_array_index(stack,stack->len-1); while(t1->right != LTTV_TREE_IDLE) t1 = t1->r_child.t; t2 = lttv_filter_tree_new(); t2->node = op; @@ -236,7 +236,7 @@ parse_simple_expression(GString* expression) { * @param t pointer to the current LttvTrace * @return the current lttv_filter or NULL if error */ -lttv_filter_tree* +LttvFilter* lttv_filter_new(char *expression, LttvTraceState *tcs) { g_print("filter::lttv_filter_new()\n"); /* debug */ @@ -247,7 +247,7 @@ lttv_filter_new(char *expression, LttvTraceState *tcs) { b=0; /* current breakpoint in expression string */ /* trees */ - lttv_filter_tree + LttvFilter *tree = lttv_filter_tree_new(), /* main tree */ *subtree = NULL, /* buffer for subtrees */ *t1, /* buffer #1 */ @@ -269,7 +269,7 @@ lttv_filter_new(char *expression, LttvTraceState *tcs) { GString *a_field_component = g_string_new(""); GPtrArray *a_field_path = NULL; - lttv_simple_expression* a_simple_expression = g_new(lttv_simple_expression,1); + LttvSimpleExpression* a_simple_expression = g_new(LttvSimpleExpression,1); /* * Parse entire expression and construct @@ -315,7 +315,7 @@ lttv_filter_new(char *expression, LttvTraceState *tcs) { * logical operators */ case '&': /* and */ - t1 = (lttv_filter_tree*)g_ptr_array_index(tree_stack,tree_stack->len-1); + t1 = (LttvFilter*)g_ptr_array_index(tree_stack,tree_stack->len-1); while(t1->right != LTTV_TREE_IDLE) t1 = t1->r_child.t; t2 = lttv_filter_tree_new(); t2->node = LTTV_LOGICAL_AND; @@ -330,14 +330,14 @@ lttv_filter_new(char *expression, LttvTraceState *tcs) { a_field_component = g_string_new(""); t2->left = LTTV_TREE_LEAF; t2->l_child.leaf = a_simple_expression; - a_simple_expression = g_new(lttv_simple_expression,1); + a_simple_expression = g_new(LttvSimpleExpression,1); t1->right = LTTV_TREE_NODE; t1->r_child.t = t2; } break; case '|': /* or */ - t1 = (lttv_filter_tree*)g_ptr_array_index(tree_stack,tree_stack->len-1); + t1 = (LttvFilter*)g_ptr_array_index(tree_stack,tree_stack->len-1); while(t1->right != LTTV_TREE_IDLE) t1 = t1->r_child.t; t2 = lttv_filter_tree_new(); t2->node = LTTV_LOGICAL_OR; @@ -352,13 +352,13 @@ lttv_filter_new(char *expression, LttvTraceState *tcs) { a_field_component = g_string_new(""); t2->left = LTTV_TREE_LEAF; t2->l_child.leaf = a_simple_expression; - a_simple_expression = g_new(lttv_simple_expression,1); + a_simple_expression = g_new(LttvSimpleExpression,1); t1->right = LTTV_TREE_NODE; t1->r_child.t = t2; } break; case '^': /* xor */ - t1 = (lttv_filter_tree*)g_ptr_array_index(tree_stack,tree_stack->len-1); + t1 = (LttvFilter*)g_ptr_array_index(tree_stack,tree_stack->len-1); while(t1->right != LTTV_TREE_IDLE) t1 = t1->r_child.t; t2 = lttv_filter_tree_new(); t2->node = LTTV_LOGICAL_XOR; @@ -373,7 +373,7 @@ lttv_filter_new(char *expression, LttvTraceState *tcs) { a_field_component = g_string_new(""); t2->left = LTTV_TREE_LEAF; t2->l_child.leaf = a_simple_expression; - a_simple_expression = g_new(lttv_simple_expression,1); + a_simple_expression = g_new(LttvSimpleExpression,1); t1->right = LTTV_TREE_NODE; t1->r_child.t = t2; } @@ -387,7 +387,7 @@ lttv_filter_new(char *expression, LttvTraceState *tcs) { } else { /* ! */ // g_print("%s\n",a_field_component); // a_field_component = g_string_new(""); - t1 = (lttv_filter_tree*)g_ptr_array_index(tree_stack,tree_stack->len-1); + t1 = (LttvFilter*)g_ptr_array_index(tree_stack,tree_stack->len-1); while(t1->right != LTTV_TREE_IDLE) t1 = t1->r_child.t; t2 = lttv_filter_tree_new(); t2->node = LTTV_LOGICAL_NOT; @@ -430,7 +430,7 @@ lttv_filter_new(char *expression, LttvTraceState *tcs) { while(t1->right != LTTV_TREE_IDLE) t1 = t1->r_child.t; t1->right = LTTV_TREE_LEAF; t1->r_child.leaf = a_simple_expression; - a_simple_expression = g_new(lttv_simple_expression,1); + a_simple_expression = g_new(LttvSimpleExpression,1); subtree = g_ptr_array_index(tree_stack,tree_stack->len-1); g_assert(subtree != NULL); g_ptr_array_remove_index(tree_stack,tree_stack->len-1); @@ -501,7 +501,11 @@ lttv_filter_new(char *expression, LttvTraceState *tcs) { a_field_component = g_string_new(""); t1->right = LTTV_TREE_LEAF; t1->r_child.leaf = a_simple_expression; - a_simple_expression = g_new(lttv_simple_expression,1); + /* + * FIXME: is it really necessary to reallocate + * LttvSimpleExpression at this point ?? + */ + a_simple_expression = g_new(LttvSimpleExpression,1); } g_assert(tree != NULL); @@ -514,7 +518,7 @@ lttv_filter_new(char *expression, LttvTraceState *tcs) { } void -lttv_filter_destroy(lttv_filter* filter) { +lttv_filter_destroy(LttvFilter* filter) { } @@ -525,7 +529,7 @@ lttv_filter_destroy(lttv_filter* filter) { * @return success/failure of operation */ gboolean -lttv_filter_tracefile(lttv_filter_tree *filter, LttTracefile *tracefile) { +lttv_filter_tracefile(LttvFilter *filter, LttTracefile *tracefile) { /* * Each tree is parsed in inorder. @@ -578,7 +582,7 @@ lttv_filter_tracefile(lttv_filter_tree *filter, LttTracefile *tracefile) { } gboolean -lttv_filter_tracestate(lttv_filter_t *filter, LttvTraceState *tracestate) { +lttv_filter_tracestate(LttvFilter *filter, LttvTraceState *tracestate) { } @@ -589,7 +593,7 @@ lttv_filter_tracestate(lttv_filter_t *filter, LttvTraceState *tracestate) { * @return success/failure of operation */ gboolean -lttv_filter_event(lttv_filter_t *filter, LttEvent *event) { +lttv_filter_event(LttvFilter *filter, LttEvent *event) { } diff --git a/ltt/branches/poly/lttv/lttv/filter.h b/ltt/branches/poly/lttv/lttv/filter.h index ecf53c1a..8a017690 100644 --- a/ltt/branches/poly/lttv/lttv/filter.h +++ b/ltt/branches/poly/lttv/lttv/filter.h @@ -76,7 +76,7 @@ extern GQuark /** * @enum lttv_expression_op */ -typedef enum _lttv_expression_op +typedef enum _LttvExpressionOp { LTTV_FIELD_EQ, /** equal */ LTTV_FIELD_NE, /** not equal */ @@ -84,35 +84,38 @@ typedef enum _lttv_expression_op LTTV_FIELD_LE, /** lower or equal */ LTTV_FIELD_GT, /** greater than */ LTTV_FIELD_GE /** greater or equal */ -} lttv_expression_op; +} LttvExpressionOp; -typedef enum _lttv_expression_type +/* + * FIXME: Unused enum ? + */ +typedef enum _LttvExpressionType { LTTV_EXPRESSION, LTTV_SIMPLE_EXPRESSION, LTTV_EXPRESSION_OP, LTTV_UNDEFINED_EXPRESSION -} lttv_expression_type; +} LttvExpressionType; -typedef enum _lttv_tree_element { +typedef enum _LttvTreeElement { LTTV_TREE_IDLE, LTTV_TREE_NODE, LTTV_TREE_LEAF -} lttv_tree_element; +} LttvTreeElement; -typedef struct _lttv_simple_expression +typedef struct _LttvSimpleExpression { char *field_name; - lttv_expression_op op; + LttvExpressionOp op; char *value; -} lttv_simple_expression; +} LttvSimpleExpression; -typedef enum _lttv_logical_op { +typedef enum _LttvLogicalOp { LTTV_LOGICAL_OR = 1, /* 1 */ LTTV_LOGICAL_AND = 1<<1, /* 2 */ LTTV_LOGICAL_NOT = 1<<2, /* 4 */ LTTV_LOGICAL_XOR = 1<<3 /* 8 */ -} lttv_logical_op; +} LttvLogicalOp; /* * Ah .. that's my tree @@ -128,47 +131,50 @@ typedef enum _lttv_logical_op { // } e; //} lttv_expression; -typedef struct _lttv_expression { - lttv_expression_type type; +/* + * FIXME: Unused struct + */ +typedef struct _LttvExpression { + LttvExpressionType type; union { - lttv_simple_expression *se; + LttvSimpleExpression *se; int op; } e; -} lttv_expression; +} LttvExpression; -typedef struct _lttv_filter_tree { +typedef struct _LttvFilter { // lttv_expression* node; - int node; - lttv_tree_element left; - lttv_tree_element right; + int node; /** value of LttvLogicalOp */ + LttvTreeElement left; + LttvTreeElement right; union { - struct lttv_filter_tree* t; - lttv_simple_expression* leaf; + struct LttvFilter* t; + LttvSimpleExpression* leaf; } l_child; union { - struct lttv_filter_tree* t; - lttv_simple_expression* leaf; + struct LttvFilter* t; + LttvSimpleExpression* leaf; } r_child; -} lttv_filter_tree; +} LttvFilter; /** * @struct lttv_filter * ( will later contain a binary tree of filtering options ) */ -typedef struct _lttv_filter_t { - lttv_filter_tree* tree; -} lttv_filter_t; +//typedef struct _lttv_filter_t { +// lttv_filter_tree* tree; +//} lttv_filter_t; -lttv_simple_expression* lttv_simple_expression_new(); +LttvSimpleExpression* lttv_simple_expression_new(); -lttv_filter_tree* lttv_filter_tree_new(); +LttvFilter* lttv_filter_tree_new(); -void lttv_filter_tree_destroy(lttv_filter_tree* tree); +void lttv_filter_tree_destroy(LttvFilter* tree); -lttv_filter* lttv_filter_clone(lttv_filter* tree); +LttvFilter* lttv_filter_clone(LttvFilter* tree); -void lttv_filter_tree_add_node(GPtrArray* stack, lttv_filter_tree* subtree, lttv_logical_op op); +void lttv_filter_tree_add_node(GPtrArray* stack, LttvFilter* subtree, LttvLogicalOp op); /* Parse field path contained in list */ gboolean parse_field_path(GPtrArray* fp); @@ -176,18 +182,18 @@ gboolean parse_field_path(GPtrArray* fp); gboolean parse_simple_expression(GString* expression); /* Compile the filter expression into an efficient data structure */ -lttv_filter_tree *lttv_filter_new(char *expression, LttvTraceState *tfs); +LttvFilter *lttv_filter_new(char *expression, LttvTraceState *tfs); -void lttv_filter_destroy(lttv_filter* filter); +void lttv_filter_destroy(LttvFilter* filter); /* 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_tree *filter, LttTracefile *tracefile); +gboolean lttv_filter_tracefile(LttvFilter *filter, LttTracefile *tracefile); -gboolean lttv_filter_tracestate(lttv_filter_t *filter, LttvTraceState *tracestate); +gboolean lttv_filter_tracestate(LttvFilter *filter, LttvTraceState *tracestate); -gboolean lttv_filter_event(lttv_filter_t *filter, LttEvent *event); +gboolean lttv_filter_event(LttvFilter *filter, LttEvent *event); #endif // FILTER_H diff --git a/ltt/branches/poly/lttv/modules/gui/lttvwindow/lttvwindow/lttvwindow.h b/ltt/branches/poly/lttv/modules/gui/lttvwindow/lttvwindow/lttvwindow.h index 514598fb..dd23e058 100644 --- a/ltt/branches/poly/lttv/modules/gui/lttvwindow/lttvwindow/lttvwindow.h +++ b/ltt/branches/poly/lttv/modules/gui/lttvwindow/lttvwindow/lttvwindow.h @@ -685,7 +685,7 @@ LttTime lttvwindow_get_current_time(Tab *tab); * @param filter, a pointer to a filter. */ -lttv_filter *lttvwindow_get_filter(Tab *tab); +LttvFilter *lttvwindow_get_filter(Tab *tab); /** * Function to set the filter of the current tab. @@ -700,7 +700,7 @@ lttv_filter *lttvwindow_get_filter(Tab *tab); * @param filter, a pointer to a filter. */ -void lttvwindow_report_filter(Tab *tab, lttv_filter *filter); +void lttvwindow_report_filter(Tab *tab, LttvFilter *filter); diff --git a/ltt/branches/poly/lttv/modules/text/batchAnalysis.c b/ltt/branches/poly/lttv/modules/text/batchAnalysis.c index a57f0aac..ec68e7f1 100644 --- a/ltt/branches/poly/lttv/modules/text/batchAnalysis.c +++ b/ltt/branches/poly/lttv/modules/text/batchAnalysis.c @@ -47,7 +47,7 @@ static char *a_trace; static gboolean a_stats; -static lttv_filter *a_lttv_filter; +static LttvFilter *a_lttv_filter; extern GString *a_filter_string; -- 2.34.1