From: Ben Pfaff <blp@cs.stanford.edu>
Date: Sun, 28 Mar 2010 20:40:25 +0000 (-0700)
Subject: sort: New function sort_distinct_execute().
X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4e57d32680bf79fc93f7cd0d5b92a2c713211972;p=pspp

sort: New function sort_distinct_execute().
---

diff --git a/src/math/sort.c b/src/math/sort.c
index 9c2118985c..233d0f585c 100644
--- a/src/math/sort.c
+++ b/src/math/sort.c
@@ -216,6 +216,23 @@ sort_execute_1var (struct casereader *input, const struct variable *var)
   subcase_destroy (&sc);
   return reader;
 }
+
+/* Reads all the cases from INPUT.  Sorts the cases according to ORDERING,
+   combining cases that have the same ORDERING values using COMBINE.
+   Returns the sorted cases in a new casereader. */
+struct casereader *
+sort_distinct_execute (struct casereader *input,
+                       const struct subcase *ordering,
+                       sort_distinct_combine_func *combine,
+                       sort_distinct_destroy_func *destroy,
+                       void *aux)
+{
+  struct casewriter *output =
+    sort_distinct_create_writer (ordering, casereader_get_proto (input),
+                                 combine, destroy, aux);
+  casereader_transfer (input, output);
+  return casewriter_make_reader (output);
+}
 
 struct pqueue
   {
diff --git a/src/math/sort.h b/src/math/sort.h
index 06227d64ba..99395eb89e 100644
--- a/src/math/sort.h
+++ b/src/math/sort.h
@@ -39,5 +39,10 @@ struct casewriter *sort_distinct_create_writer (const struct subcase *,
                                                 sort_distinct_combine_func *,
                                                 sort_distinct_destroy_func *,
                                                 void *aux);
+struct casereader *sort_distinct_execute (struct casereader *,
+                                          const struct subcase *,
+                                          sort_distinct_combine_func *,
+                                          sort_distinct_destroy_func *,
+                                          void *aux);
 
 #endif /* math/sort.h */