changeset 7646:f0dc2a3dee54 HEAD

Added seq_range_array_merge()
author Timo Sirainen <tss@iki.fi>
date Thu, 05 Jun 2008 05:02:01 +0300
parents 3215e880909f
children 879208fdc7e3
files src/lib/seq-range-array.c src/lib/seq-range-array.h
diffstat 2 files changed, 18 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib/seq-range-array.c	Thu Jun 05 02:49:13 2008 +0300
+++ b/src/lib/seq-range-array.c	Thu Jun 05 05:02:01 2008 +0300
@@ -138,6 +138,22 @@
 	}
 }
 
+void seq_range_array_merge(ARRAY_TYPE(seq_range) *dest,
+			   const ARRAY_TYPE(seq_range) *src)
+{
+	const struct seq_range *range;
+	unsigned int i, count;
+
+	if (array_count(dest) == 0) {
+		array_append_array(dest, src);
+		return;
+	}
+
+	range = array_get(src, &count);
+	for (i = 0; i < count; i++)
+		seq_range_array_add_range(dest, range[i].seq1, range[i].seq2);
+}
+
 bool seq_range_array_remove(ARRAY_TYPE(seq_range) *array, uint32_t seq)
 {
 	struct seq_range *data, value;
--- a/src/lib/seq-range-array.h	Thu Jun 05 02:49:13 2008 +0300
+++ b/src/lib/seq-range-array.h	Thu Jun 05 05:02:01 2008 +0300
@@ -17,6 +17,8 @@
 			 uint32_t seq);
 void seq_range_array_add_range(ARRAY_TYPE(seq_range) *array,
 			       uint32_t seq1, uint32_t seq2);
+void seq_range_array_merge(ARRAY_TYPE(seq_range) *dest,
+			   const ARRAY_TYPE(seq_range) *src);
 /* Remove given sequrence from range. Returns TRUE if it was found. */
 bool seq_range_array_remove(ARRAY_TYPE(seq_range) *array, uint32_t seq);
 /* Remove a sequence range. Returns number of sequences actually removed. */