pspp-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[patch 2/5] Add range_set_clone function and corresponding test.


From: blp
Subject: [patch 2/5] Add range_set_clone function and corresponding test.
Date: Sun, 03 Jun 2007 15:47:13 -0700
User-agent: quilt/0.45-1

Index: merge/src/libpspp/range-set.c
===================================================================
--- merge.orig/src/libpspp/range-set.c  2007-06-03 01:21:11.000000000 -0700
+++ merge/src/libpspp/range-set.c       2007-06-03 15:17:16.000000000 -0700
@@ -100,6 +100,20 @@
   return rs;
 }
 
+/* Creates and returns a clone of OLD range set in the given POOL
+   (which may be null). */
+struct range_set *
+range_set_clone (const struct range_set *old, struct pool *pool)
+{
+  struct range_set *new;
+  struct range_set_node *node;
+
+  new = range_set_create_pool (pool);
+  for (node = first_node (old); node != NULL; node = next_node (old, node)) 
+    insert_node (new, node->start, node->end);
+  return new;
+}
+
 /* Destroys range set RS. */
 void
 range_set_destroy (struct range_set *rs) 
Index: merge/src/libpspp/range-set.h
===================================================================
--- merge.orig/src/libpspp/range-set.h  2007-06-03 01:21:11.000000000 -0700
+++ merge/src/libpspp/range-set.h       2007-06-03 15:17:16.000000000 -0700
@@ -32,6 +32,7 @@
 
 struct range_set *range_set_create (void);
 struct range_set *range_set_create_pool (struct pool *);
+struct range_set *range_set_clone (const struct range_set *, struct pool *);
 void range_set_destroy (struct range_set *);
 
 void range_set_insert (struct range_set *,
Index: merge/tests/libpspp/range-set-test.c
===================================================================
--- merge.orig/tests/libpspp/range-set-test.c   2007-06-03 15:20:14.000000000 
-0700
+++ merge/tests/libpspp/range-set-test.c        2007-06-03 15:21:28.000000000 
-0700
@@ -202,14 +202,17 @@
     for (i = 0; i < positions + 1; i++)
       for (j = i; j <= positions + 1; j++)
         {
-          struct range_set *rs;
+          struct range_set *rs, *rs2;
           unsigned int final_pat;
 
           rs = make_pattern (init_pat);
           range_set_insert (rs, i, j - i);
           final_pat = init_pat | bit_range (i, j - i);
           check_pattern (rs, final_pat);
+          rs2 = range_set_clone (rs, NULL);
+          check_pattern (rs2, final_pat);
           range_set_destroy (rs);
+          range_set_destroy (rs2);
         }
 }
 

--





reply via email to

[Prev in Thread] Current Thread [Next in Thread]