+
+ if(tree_stack->len != 1) /* only root tree should remain */
+ return NULL;
+
+ /* processing last element of expression */
+ t1 = g_ptr_array_index(tree_stack,tree_stack->len-1);
+ while(t1->right != LTTV_TREE_IDLE) t1 = t1->r_child.t;
+ if(subtree != NULL) { /* add the subtree */
+ t1->right = LTTV_TREE_NODE;
+ t1->r_child.t = subtree;
+ subtree = NULL;
+ } else { /* add a leaf */
+ a_simple_expression->value = a_field_component->str;
+ a_field_component = g_string_new("");
+ t1->right = LTTV_TREE_LEAF;
+ t1->r_child.leaf = a_simple_expression;
+ /*
+ * FIXME: is it really necessary to reallocate
+ * LttvSimpleExpression at this point ??
+ */
+ a_simple_expression = g_new(LttvSimpleExpression,1);
+ }
+
+ g_assert(tree != NULL);
+ g_assert(subtree == NULL);
+
+ lttv_filter_tracefile(tree,NULL);
+
+ return tree;
+
+}
+
+void
+lttv_filter_destroy(LttvFilter* filter) {
+