projects
/
pspp
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Move var_set and variable parsing declarations into new header.
[pspp]
/
src
/
language
/
data-io
/
get.c
diff --git
a/src/language/data-io/get.c
b/src/language/data-io/get.c
index 5dfe29b3c28b7f75107f82d3689897259a3f1697..651d222af9745684a337c7c29d7bc242660f6753 100644
(file)
--- a/
src/language/data-io/get.c
+++ b/
src/language/data-io/get.c
@@
-26,6
+26,7
@@
#include <data/case-sink.h>
#include <data/case-source.h>
#include <data/case.h>
#include <data/case-sink.h>
#include <data/case-source.h>
#include <data/case.h>
+#include <data/casefile.h>
#include <data/dictionary.h>
#include <data/por-file-writer.h>
#include <data/procedure.h>
#include <data/dictionary.h>
#include <data/por-file-writer.h>
#include <data/procedure.h>
@@
-38,6
+39,7
@@
#include <language/command.h>
#include <language/data-io/file-handle.h>
#include <language/lexer/lexer.h>
#include <language/command.h>
#include <language/data-io/file-handle.h>
#include <language/lexer/lexer.h>
+#include <language/lexer/variable-parser.h>
#include <libpspp/alloc.h>
#include <libpspp/compiler.h>
#include <libpspp/hash.h>
#include <libpspp/alloc.h>
#include <libpspp/compiler.h>
#include <libpspp/hash.h>
@@
-779,7
+781,7
@@
struct mtf_proc
char first[LONG_NAME_LEN + 1], last[LONG_NAME_LEN + 1];
struct dictionary *dict; /* Dictionary of output file. */
char first[LONG_NAME_LEN + 1], last[LONG_NAME_LEN + 1];
struct dictionary *dict; /* Dictionary of output file. */
- struct case
_sink *sink; /* Sink to receive
output. */
+ struct case
file *output; /* MATCH FILES
output. */
struct ccase mtf_case; /* Case used for output. */
unsigned seq_num; /* Have we initialized this variable? */
struct ccase mtf_case; /* Case used for output. */
unsigned seq_num; /* Have we initialized this variable? */
@@
-819,7
+821,7
@@
cmd_match_files (void)
mtf.first[0] = '\0';
mtf.last[0] = '\0';
mtf.dict = dict_create ();
mtf.first[0] = '\0';
mtf.last[0] = '\0';
mtf.dict = dict_create ();
- mtf.
sink
= NULL;
+ mtf.
output
= NULL;
case_nullify (&mtf.mtf_case);
mtf.seq_num = 0;
mtf.seq_nums = NULL;
case_nullify (&mtf.mtf_case);
mtf.seq_num = 0;
mtf.seq_nums = NULL;
@@
-1121,10
+1123,7
@@
cmd_match_files (void)
discard_variables ();
dict_compact_values (mtf.dict);
discard_variables ();
dict_compact_values (mtf.dict);
- mtf.sink = create_case_sink (&storage_sink_class, mtf.dict, NULL);
- if (mtf.sink->class->open != NULL)
- mtf.sink->class->open (mtf.sink);
-
+ mtf.output = casefile_create (dict_get_next_value_idx (mtf.dict));
mtf.seq_nums = xcalloc (dict_get_var_cnt (mtf.dict), sizeof *mtf.seq_nums);
case_create (&mtf.mtf_case, dict_get_next_value_idx (mtf.dict));
mtf.seq_nums = xcalloc (dict_get_var_cnt (mtf.dict), sizeof *mtf.seq_nums);
case_create (&mtf.mtf_case, dict_get_next_value_idx (mtf.dict));
@@
-1141,10
+1140,11
@@
cmd_match_files (void)
discard_variables ();
discard_variables ();
+ dict_destroy (default_dict);
default_dict = mtf.dict;
mtf.dict = NULL;
default_dict = mtf.dict;
mtf.dict = NULL;
- proc_set_source (
mtf.sink->class->make_source (mtf.sink
));
-
free_case_sink (mtf.sink)
;
+ proc_set_source (
storage_source_create (mtf.output
));
+
mtf.output = NULL
;
if (!mtf_free (&mtf))
ok = false;
if (!mtf_free (&mtf))
ok = false;
@@
-1467,7
+1467,7
@@
mtf_processing (const struct ccase *c, void *mtf_)
}
/* 5. Write the output record. */
}
/* 5. Write the output record. */
-
mtf->sink->class->write (mtf->sink
, &mtf->mtf_case);
+
casefile_append (mtf->output
, &mtf->mtf_case);
/* 6. Read another record from each input file FILE and TABLE
that we stored values from above. If we come to the end of
/* 6. Read another record from each input file FILE and TABLE
that we stored values from above. If we come to the end of
@@
-1542,8
+1542,11
@@
mtf_merge_dictionary (struct dictionary *const m, struct mtf_file *f)
if (dv->width == mv->width)
{
if (val_labs_count (dv->val_labs)
if (dv->width == mv->width)
{
if (val_labs_count (dv->val_labs)
- && !val_labs_count (mv->val_labs))
- mv->val_labs = val_labs_copy (dv->val_labs);
+ && !val_labs_count (mv->val_labs))
+ {
+ val_labs_destroy (mv->val_labs);
+ mv->val_labs = val_labs_copy (dv->val_labs);
+ }
if (!mv_is_empty (&dv->miss) && mv_is_empty (&mv->miss))
mv_copy (&mv->miss, &dv->miss);
}
if (!mv_is_empty (&dv->miss) && mv_is_empty (&mv->miss))
mv_copy (&mv->miss, &dv->miss);
}