projects
/
pspp
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fixed bug in compare_values_short. Reported by Ben Pfaff.
[pspp]
/
src
/
math
/
merge.c
diff --git
a/src/math/merge.c
b/src/math/merge.c
index 4fc7c8dcf21433a7c23692c275a0ed398c850789..2ff57c6e5ba6fa0a88a9237f95782cb55332bbd6 100644
(file)
--- a/
src/math/merge.c
+++ b/
src/math/merge.c
@@
-1,5
+1,5
@@
/* PSPP - a program for statistical analysis.
/* PSPP - a program for statistical analysis.
- Copyright (C) 2007 Free Software Foundation, Inc.
+ Copyright (C) 2007
, 2009
Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@
-21,10
+21,10
@@
#include <math/merge.h>
#include <math/merge.h>
-#include <data/case-ordering.h>
#include <data/case.h>
#include <data/casereader.h>
#include <data/casewriter.h>
#include <data/case.h>
#include <data/casereader.h>
#include <data/casewriter.h>
+#include <data/subcase.h>
#include <libpspp/array.h>
#include <libpspp/assertion.h>
#include <libpspp/taint.h>
#include <libpspp/array.h>
#include <libpspp/assertion.h>
#include <libpspp/taint.h>
@@
-36,12
+36,12
@@
struct merge_input
{
struct casereader *reader;
struct merge_input
{
struct casereader *reader;
- struct ccase c;
+ struct ccase
*
c;
};
struct merge
{
};
struct merge
{
- struct
case_ordering *
ordering;
+ struct
subcase
ordering;
struct merge_input inputs[MAX_MERGE_ORDER];
size_t input_cnt;
size_t value_cnt;
struct merge_input inputs[MAX_MERGE_ORDER];
size_t input_cnt;
size_t value_cnt;
@@
-50,10
+50,10
@@
struct merge
static void do_merge (struct merge *m);
struct merge *
static void do_merge (struct merge *m);
struct merge *
-merge_create (const struct
case_ordering
*ordering, size_t value_cnt)
+merge_create (const struct
subcase
*ordering, size_t value_cnt)
{
struct merge *m = xmalloc (sizeof *m);
{
struct merge *m = xmalloc (sizeof *m);
-
m->ordering = case_ordering_clone (
ordering);
+
subcase_clone (&m->ordering,
ordering);
m->input_cnt = 0;
m->value_cnt = value_cnt;
return m;
m->input_cnt = 0;
m->value_cnt = value_cnt;
return m;
@@
-66,7
+66,7
@@
merge_destroy (struct merge *m)
{
size_t i;
{
size_t i;
-
case_ordering_destroy (
m->ordering);
+
subcase_destroy (&
m->ordering);
for (i = 0; i < m->input_cnt; i++)
casereader_destroy (m->inputs[i].reader);
free (m);
for (i = 0; i < m->input_cnt; i++)
casereader_destroy (m->inputs[i].reader);
free (m);
@@
-111,7
+111,8
@@
read_input_case (struct merge *m, size_t idx)
{
struct merge_input *i = &m->inputs[idx];
{
struct merge_input *i = &m->inputs[idx];
- if (casereader_read (i->reader, &i->c))
+ i->c = casereader_read (i->reader);
+ if (i->c)
return true;
else
{
return true;
else
{
@@
-144,11
+145,11
@@
do_merge (struct merge *m)
min = 0;
for (i = 1; i < m->input_cnt; i++)
min = 0;
for (i = 1; i < m->input_cnt; i++)
- if (
case_ordering_compare_cases (&m->inputs[i].c, &m->inputs[min
].c,
-
m->ordering
) < 0)
+ if (
subcase_compare_3way (&m->ordering, m->inputs[i
].c,
+
&m->ordering, m->inputs[min].c
) < 0)
min = i;
min = i;
- casewriter_write (w,
&
m->inputs[min].c);
+ casewriter_write (w, m->inputs[min].c);
read_input_case (m, min);
}
read_input_case (m, min);
}