projects
/
pspp-builds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge commit 'origin/stable'
[pspp-builds.git]
/
src
/
data
/
casereader-filter.c
diff --git
a/src/data/casereader-filter.c
b/src/data/casereader-filter.c
index 5c46ed50dba436d1584a320e134be8fefc5e5de0..5244202e4fde4c02f3124a1f08ea2e910db15f3f 100644
(file)
--- a/
src/data/casereader-filter.c
+++ b/
src/data/casereader-filter.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
@@
-78,7
+78,7
@@
casereader_create_filter_func (struct casereader *subreader,
filter->aux = aux;
filter->exclude = exclude;
reader = casereader_create_sequential (
filter->aux = aux;
filter->exclude = exclude;
reader = casereader_create_sequential (
- NULL, casereader_get_
value_cnt
(filter->subreader), CASENUMBER_MAX,
+ NULL, casereader_get_
proto
(filter->subreader), CASENUMBER_MAX,
&casereader_filter_class, filter);
taint_propagate (casereader_get_taint (filter->subreader),
casereader_get_taint (reader));
&casereader_filter_class, filter);
taint_propagate (casereader_get_taint (filter->subreader),
casereader_get_taint (reader));
@@
-86,22
+86,22
@@
casereader_create_filter_func (struct casereader *subreader,
}
/* Internal read function for filtering casereader. */
}
/* Internal read function for filtering casereader. */
-static bool
-casereader_filter_read (struct casereader *reader UNUSED, void *filter_,
- struct ccase *c)
+static struct ccase *
+casereader_filter_read (struct casereader *reader UNUSED, void *filter_)
{
struct casereader_filter *filter = filter_;
for (;;)
{
{
struct casereader_filter *filter = filter_;
for (;;)
{
- if (!casereader_read (filter->subreader, c))
- return false;
+ struct ccase *c = casereader_read (filter->subreader);
+ if (c == NULL)
+ return NULL;
else if (filter->include (c, filter->aux))
else if (filter->include (c, filter->aux))
- return
true
;
+ return
c
;
else if (filter->exclude != NULL)
casewriter_write (filter->exclude, c);
else
else if (filter->exclude != NULL)
casewriter_write (filter->exclude, c);
else
- case_
destroy
(c);
+ case_
unref
(c);
}
}
}
}
@@
-115,12
+115,12
@@
casereader_filter_destroy (struct casereader *reader, void *filter_)
casewriter, if there is one. */
if (filter->exclude != NULL)
{
casewriter, if there is one. */
if (filter->exclude != NULL)
{
- struct ccase c;
- while (
casereader_read (filter->subreader, &c)
)
- if (filter->include (
&
c, filter->aux))
- case_
destroy (&
c);
+ struct ccase
*
c;
+ while (
(c = casereader_read (filter->subreader)) != NULL
)
+ if (filter->include (c, filter->aux))
+ case_
unref (
c);
else
else
- casewriter_write (filter->exclude,
&
c);
+ casewriter_write (filter->exclude, c);
}
casereader_destroy (filter->subreader);
}
casereader_destroy (filter->subreader);
@@
-266,7
+266,7
@@
static bool casereader_filter_missing_destroy (void *);
is destroyed.
If N_MISSING is non-null, then after reading, it will be filled
is destroyed.
If N_MISSING is non-null, then after reading, it will be filled
- with the tot
al
number of dropped cases.
+ with the tot
la
number of dropped cases.
After this function is called, READER must not ever again
be referenced directly. It will be destroyed automatically
After this function is called, READER must not ever again
be referenced directly. It will be destroyed automatically
@@
-285,8
+285,7
@@
casereader_create_filter_missing (struct casereader *reader,
cfm->var_cnt = var_cnt;
cfm->class = class;
cfm->n_missing = n_missing;
cfm->var_cnt = var_cnt;
cfm->class = class;
cfm->n_missing = n_missing;
- if (n_missing)
- *n_missing = 0;
+ if (n_missing) *n_missing = 0;
return casereader_create_filter_func (reader,
casereader_filter_missing_include,
casereader_filter_missing_destroy,
return casereader_create_filter_func (reader,
casereader_filter_missing_include,
casereader_filter_missing_destroy,