aboutsummaryrefslogtreecommitdiff
path: root/src/utils.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/utils.c')
-rw-r--r--src/utils.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/utils.c b/src/utils.c
index 1e54f923..21ba882f 100644
--- a/src/utils.c
+++ b/src/utils.c
@@ -363,6 +363,17 @@ int find_item(ReflItemList *items,
}
+static int find_op(ReflItemList *items, int op)
+{
+ int i;
+
+ for ( i=0; i<items->n_items; i++ ) {
+ if ( items->items[i].op == op ) return 1;
+ }
+ return 0;
+}
+
+
struct refl_item *get_item(ReflItemList *items, int i)
{
if ( i >= items->n_items ) return NULL;
@@ -391,3 +402,19 @@ unsigned int *items_to_counts(ReflItemList *items)
return c;
}
+
+
+void union_op_items(ReflItemList *items, ReflItemList *newi)
+{
+ int n, i;
+
+ n = num_items(newi);
+ for ( i=0; i<n; i++ ) {
+
+ struct refl_item *r = get_item(newi, i);
+ if ( find_op(items, r->op) ) continue;
+
+ add_item_with_op(items, r->h, r->k, r->l, r->op);
+
+ }
+}