From b0b05dd35b6cf6a714006953051de0201f9876d9 Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Sun, 28 Feb 2016 09:57:53 -0800 Subject: [PATCH] work on datasets --- src/language/data-io/data-list.c | 4 ++-- src/language/data-io/data-parser.c | 16 ++++++++++------ src/language/data-io/data-parser.h | 4 ++-- src/language/data-io/get-data.c | 2 +- 4 files changed, 15 insertions(+), 11 deletions(-) diff --git a/src/language/data-io/data-list.c b/src/language/data-io/data-list.c index 90d060eaab..31856b7954 100644 --- a/src/language/data-io/data-list.c +++ b/src/language/data-io/data-list.c @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 1997-9, 2000, 2006, 2007, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc. + Copyright (C) 1997-9, 2000, 2006, 2007, 2009, 2010, 2011, 2012, 2013, 2016 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 @@ -293,7 +293,7 @@ cmd_data_list (struct lexer *lexer, struct dataset *ds) add_transformation (ds, data_list_trns_proc, data_list_trns_free, trns); } else - data_parser_make_active_file (parser, ds, reader, dict); + data_parser_make_active_file (parser, dataset_session (ds), reader, dict); fh_unref (fh); free (encoding); diff --git a/src/language/data-io/data-parser.c b/src/language/data-io/data-parser.c index 960505a5ce..f7657e2c8e 100644 --- a/src/language/data-io/data-parser.c +++ b/src/language/data-io/data-parser.c @@ -27,6 +27,7 @@ #include "data/dictionary.h" #include "data/format.h" #include "data/file-handle-def.h" +#include "data/session.h" #include "data/settings.h" #include "language/data-io/data-reader.h" #include "libpspp/message.h" @@ -733,13 +734,13 @@ struct data_parser_casereader static const struct casereader_class data_parser_casereader_class; -/* Replaces DS's active dataset by an input program that reads data - from READER according to the rules in PARSER, using DICT as - the underlying dictionary. Ownership of PARSER and READER is - transferred to the input program, and ownership of DICT is - transferred to the dataset. */ +/* Creates a new unnamed dataset in SESSION. The new dataset has an input + program that reads data from READER according to the rules in PARSER, using + DICT as the underlying dictionary. Transfers ownership of PARSER and READER + is to the input program, and ownership of DICT to the dataset. */ void -data_parser_make_active_file (struct data_parser *parser, struct dataset *ds, +data_parser_make_active_file (struct data_parser *parser, + struct session *session, struct dfm_reader *reader, struct dictionary *dict) { @@ -753,8 +754,11 @@ data_parser_make_active_file (struct data_parser *parser, struct dataset *ds, casereader = casereader_create_sequential (NULL, r->proto, CASENUMBER_MAX, &data_parser_casereader_class, r); + + struct dataset *ds = dataset_create (session, ""); dataset_set_dict (ds, dict); dataset_set_source (ds, casereader); + session_set_active_dataset (session, ds); } static struct ccase * diff --git a/src/language/data-io/data-parser.h b/src/language/data-io/data-parser.h index 560eed30a2..023538abc6 100644 --- a/src/language/data-io/data-parser.h +++ b/src/language/data-io/data-parser.h @@ -23,11 +23,11 @@ #include "data/case.h" #include "libpspp/str.h" -struct dataset; struct dfm_reader; struct dictionary; struct file_handle; struct fmt_spec; +struct session; struct substring; /* Type of data read by a data parser. */ @@ -76,7 +76,7 @@ bool data_parser_parse (struct data_parser *, /* Uses for a configured parser. */ void data_parser_output_description (struct data_parser *, const struct file_handle *); -void data_parser_make_active_file (struct data_parser *, struct dataset *, +void data_parser_make_active_file (struct data_parser *, struct session *, struct dfm_reader *, struct dictionary *); #endif /* language/data-io/data-parser.h */ diff --git a/src/language/data-io/get-data.c b/src/language/data-io/get-data.c index f2c294264c..3b6dd56984 100644 --- a/src/language/data-io/get-data.c +++ b/src/language/data-io/get-data.c @@ -681,7 +681,7 @@ parse_get_txt (struct lexer *lexer, struct dataset *ds) if (reader == NULL) goto error; - data_parser_make_active_file (parser, ds, reader, dict); + data_parser_make_active_file (parser, dataset_session (ds), reader, dict); fh_unref (fh); free (encoding); return CMD_SUCCESS; -- 2.30.2