work on datasets
[pspp] / src / language / data-io / data-parser.c
index 960505a5ce25f322931f1e8050161f72f0698ede..f7657e2c8e7bf34b38c202ceaaceb4aa62199a3f 100644 (file)
@@ -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 *