Change enum legacy_encoding to const char *.
[pspp-builds.git] / src / language / data-io / data-parser.c
index 87fd1b7919f6de9de5ec076dd1c1dc794840f47f..eab32868431bdf007aebf4b5d752ae9da843c257 100644 (file)
@@ -505,7 +505,7 @@ static bool
 parse_fixed (const struct data_parser *parser, struct dfm_reader *reader,
              struct ccase *c)
 {
-  enum legacy_encoding encoding = dfm_reader_get_legacy_encoding (reader);
+  const char *encoding = dfm_reader_get_legacy_encoding (reader);
   struct field *f;
   int row;
 
@@ -547,7 +547,7 @@ static bool
 parse_delimited_span (const struct data_parser *parser,
                       struct dfm_reader *reader, struct ccase *c)
 {
-  enum legacy_encoding encoding = dfm_reader_get_legacy_encoding (reader);
+  const char *encoding = dfm_reader_get_legacy_encoding (reader);
   struct string tmp = DS_EMPTY_INITIALIZER;
   struct field *f;
 
@@ -588,7 +588,7 @@ static bool
 parse_delimited_no_span (const struct data_parser *parser,
                          struct dfm_reader *reader, struct ccase *c)
 {
-  enum legacy_encoding encoding = dfm_reader_get_legacy_encoding (reader);
+  const char *encoding = dfm_reader_get_legacy_encoding (reader);
   struct string tmp = DS_EMPTY_INITIALIZER;
   struct substring s;
   struct field *f;
@@ -647,7 +647,7 @@ dump_fixed_table (const struct data_parser *parser,
   tab_text (t, 3, 0, TAB_CENTER | TAT_TITLE, _("Format"));
   tab_box (t, TAL_1, TAL_1, TAL_0, TAL_1, 0, 0, 3, parser->field_cnt);
   tab_hline (t, TAL_2, 0, 3, 1);
-  tab_dim (t, tab_natural_dimensions);
+  tab_dim (t, tab_natural_dimensions, NULL);
 
   for (i = 0; i < parser->field_cnt; i++)
     {
@@ -686,7 +686,7 @@ dump_delimited_table (const struct data_parser *parser,
   tab_text (t, 1, 0, TAB_CENTER | TAT_TITLE, _("Format"));
   tab_box (t, TAL_1, TAL_1, TAL_0, TAL_1, 0, 0, 1, parser->field_cnt);
   tab_hline (t, TAL_2, 0, 1, 1);
-  tab_dim (t, tab_natural_dimensions);
+  tab_dim (t, tab_natural_dimensions, NULL);
 
   for (i = 0; i < parser->field_cnt; i++)
     {
@@ -721,7 +721,7 @@ struct data_parser_casereader
   {
     struct data_parser *parser; /* Parser. */
     struct dfm_reader *reader;  /* Data file reader. */
-    size_t value_cnt;           /* Number of `union value's in case. */
+    struct caseproto *proto;    /* Format of cases. */
   };
 
 static const struct casereader_class data_parser_casereader_class;
@@ -742,8 +742,8 @@ data_parser_make_active_file (struct data_parser *parser, struct dataset *ds,
   r = xmalloc (sizeof *r);
   r->parser = parser;
   r->reader = reader;
-  r->value_cnt = dict_get_next_value_idx (dict);
-  casereader = casereader_create_sequential (NULL, r->value_cnt,
+  r->proto = caseproto_ref (dict_get_proto (dict));
+  casereader = casereader_create_sequential (NULL, r->proto,
                                              CASENUMBER_MAX,
                                              &data_parser_casereader_class, r);
   proc_set_active_file (ds, casereader, dict);
@@ -753,7 +753,7 @@ static struct ccase *
 data_parser_casereader_read (struct casereader *reader UNUSED, void *r_)
 {
   struct data_parser_casereader *r = r_;
-  struct ccase *c = case_create (r->value_cnt);
+  struct ccase *c = case_create (r->proto);
   if (data_parser_parse (r->parser, r->reader, c))
     return c;
   else
@@ -771,6 +771,7 @@ data_parser_casereader_destroy (struct casereader *reader UNUSED, void *r_)
     casereader_force_error (reader);
   data_parser_destroy (r->parser);
   dfm_close_reader (r->reader);
+  caseproto_unref (r->proto);
   free (r);
 }