extern struct expr *compound_expr_alloc(const struct location *loc,
enum expr_types etypes);
-extern void compound_expr_remove(struct expr *compound, struct expr *expr);
extern void list_expr_sort(struct list_head *head);
extern void list_splice_sorted(struct list_head *list, struct list_head *head);
extern struct expr *concat_expr_alloc(const struct location *loc);
void concat_expr_add(struct expr *concat, struct expr *item);
+void concat_expr_remove(struct expr *concat, struct expr *expr);
extern struct expr *list_expr_alloc(const struct location *loc);
void list_expr_add(struct expr *expr, struct expr *item);
+void list_expr_remove(struct expr *expr, struct expr *item);
struct expr *list_expr_to_binop(struct expr *expr);
extern struct expr *set_expr_alloc(const struct location *loc,
const struct set *set);
void __set_expr_add(struct expr *set, struct expr *elem);
void set_expr_add(struct expr *set, struct expr *elem);
+void set_expr_remove(struct expr *expr, struct expr *item);
extern void concat_range_aggregate(struct expr *set);
extern void interval_map_decompose(struct expr *set);
}
}
-void compound_expr_remove(struct expr *compound, struct expr *expr)
-{
- compound->expr_set.size--;
- list_del(&expr->list);
-}
-
static void concat_expr_destroy(struct expr *expr)
{
compound_expr_destroy(expr);
expr_concat->size++;
}
+void concat_expr_remove(struct expr *concat, struct expr *expr)
+{
+ expr_concat(concat)->size--;
+ list_del(&expr->list);
+}
+
static void list_expr_print(const struct expr *expr, struct output_ctx *octx)
{
compound_expr_print(expr, ",", octx);
expr_list->size++;
}
+void list_expr_remove(struct expr *list, struct expr *expr)
+{
+ expr_list(list)->size--;
+ list_del(&expr->list);
+}
+
/* list is assumed to have two items at least, otherwise extend this! */
struct expr *list_expr_to_binop(struct expr *expr)
{
expr_set->size++;
}
+void set_expr_remove(struct expr *set, struct expr *expr)
+{
+ expr_set(set)->size--;
+ list_del(&expr->list);
+}
+
static void mapping_expr_print(const struct expr *expr, struct output_ctx *octx)
{
expr_print(expr->left, octx);
mpz_clear(range);
r2 = list_entry(r2_next, typeof(*r2), list);
- compound_expr_remove(expr_value(start), r1);
+ concat_expr_remove(expr_value(start), r1);
if (free_r1)
expr_free(r1);
}
- compound_expr_remove(set, start);
+ set_expr_remove(set, start);
expr_free(start);
start = NULL;
}
catchall = i;
continue;
}
- compound_expr_remove(set, i);
+ set_expr_remove(set, i);
elements[n++] = i;
}
qsort(elements, n, sizeof(elements[0]), expr_value_cmp);