Merge two option structs
authorJohn Darrington <john@darrington.wattle.id.au>
Sun, 17 Feb 2013 11:09:29 +0000 (12:09 +0100)
committerJohn Darrington <john@darrington.wattle.id.au>
Mon, 18 Feb 2013 20:59:06 +0000 (21:59 +0100)
src/data/gnumeric-reader.c
src/data/gnumeric-reader.h
src/data/ods-reader.c
src/data/ods-reader.h
src/data/spreadsheet-reader.h
src/language/data-io/get-data.c
src/ui/gui/page-file.c
src/ui/gui/page-sheet-spec.c
src/ui/gui/sheet-test.c

index 657c6d4a505f1e7057cda73cbcc60f1639e76241..aaa2f9e14390ca930420606fab1f762867cfdb06 100644 (file)
@@ -31,7 +31,7 @@
 #if !GNM_SUPPORT
 
 struct casereader *
-gnumeric_open_reader (struct spreadsheet_read_info *gri, struct spreadsheet_read_options *opts, struct dictionary **dict)
+gnumeric_open_reader (const struct spreadsheet_read_options *opts, struct dictionary **dict)
 {
   msg (ME, _("Support for %s files was not compiled into this installation of PSPP"), "Gnumeric");
 
@@ -545,7 +545,6 @@ gnumeric_probe (const char *filename, bool report_errors)
 
 struct casereader *
 gnumeric_make_reader (struct spreadsheet *spreadsheet,
-                     const struct spreadsheet_read_info *gri, 
                      const struct spreadsheet_read_options *opts)
 {
   int x = 0;
@@ -608,7 +607,7 @@ gnumeric_make_reader (struct spreadsheet *spreadsheet,
       n_cases = MIN (n_cases, r->stop_row - r->start_row + 1);
     }
 
-  if ( gri->read_names )
+  if ( opts->read_names )
     {
       r->start_row++;
       n_cases --;
@@ -652,7 +651,7 @@ gnumeric_make_reader (struct spreadsheet *spreadsheet,
 
          if ( r->row < r->start_row)
            {
-             if ( gri->read_names )
+             if ( opts->read_names )
                {
                  var_spec [idx].name = xstrdup (text);
                }
@@ -662,8 +661,8 @@ gnumeric_make_reader (struct spreadsheet *spreadsheet,
              var_spec [idx].first_value = xmlStrdup (value);
 
              if (-1 ==  var_spec [idx].width )
-               var_spec [idx].width = (gri->asw == -1) ?
-                 ROUND_UP (strlen(text), SPREADSHEET_DEFAULT_WIDTH) : gri->asw;
+               var_spec [idx].width = (opts->asw == -1) ?
+                 ROUND_UP (strlen(text), SPREADSHEET_DEFAULT_WIDTH) : opts->asw;
            }
 
          free (value);
index f4c7c38d2240044fd29c3214bfa77bd48b35f2ae..a544569c6879190205a7341288ab48fc197ed1d2 100644 (file)
@@ -33,7 +33,6 @@ char * gnumeric_get_sheet_range (struct spreadsheet *s, int n);
 void gnumeric_destroy (struct spreadsheet *);
 
 struct casereader * gnumeric_make_reader (struct spreadsheet *spreadsheet,
-                                         const struct spreadsheet_read_info *gri, 
                                          const struct spreadsheet_read_options *opts);
 
 
index fc23c2dbaf0cfa34a06f5190a312b4ab7942fc45..77da78ca51a3cff610b509e7bcd04cae9bc261e6 100644 (file)
@@ -33,7 +33,7 @@
 #if !ODF_READ_SUPPORT
 
 struct casereader *
-ods_open_reader (const struct spreadsheet_read_info *gri, struct spreadsheet_read_options *opts, 
+ods_open_reader (const struct spreadsheet_read_options *opts, 
                 struct dictionary **dict)
 {
   msg (ME, _("Support for %s files was not compiled into this installation of PSPP"), "OpenDocument");
@@ -419,7 +419,6 @@ struct spreadsheet *ods_probe (const char *filename, bool report_errors)
 
 struct casereader *
 ods_make_reader (struct spreadsheet *spreadsheet, 
-                const struct spreadsheet_read_info *gri,
                 const struct spreadsheet_read_options *opts)
 {
   intf ret = 0;
@@ -434,7 +433,7 @@ ods_make_reader (struct spreadsheet *spreadsheet,
   xmlChar *val_string = NULL;
 
   assert (r);
-  r->read_names = gri->read_names;
+  r->read_names = opts->read_names;
   ds_init_empty (&r->ods_errs);
 
   if ( opts->cell_range )
@@ -489,7 +488,7 @@ ods_make_reader (struct spreadsheet *spreadsheet,
       goto error;
     }
 
-  if ( gri->read_names)
+  if ( opts->read_names)
     {
       while (1 == (ret = xmlTextReaderRead (r->xtr)))
        {
@@ -538,7 +537,7 @@ ods_make_reader (struct spreadsheet *spreadsheet,
     {
       int idx;
       process_node (r);
-      if ( r->row >= r->start_row + 1 + gri->read_names)
+      if ( r->row >= r->start_row + 1 + opts->read_names)
        break;
 
       if ( r->col < r->start_col)
@@ -576,7 +575,7 @@ ods_make_reader (struct spreadsheet *spreadsheet,
       struct fmt_spec fmt;
       struct variable *var = NULL;
       char *name = dict_make_unique_var_name (r->dict, var_spec[i].name, &vstart);
-      int width  = xmv_to_width (&var_spec[i].firstval, gri->asw);
+      int width  = xmv_to_width (&var_spec[i].firstval, opts->asw);
       dict_create_var (r->dict, name, width);
       free (name);
 
index c602963094538691dad73af233a9121b0f318667..1a5525d8f669f658315b597a08780617f74718ac 100644 (file)
@@ -26,7 +26,6 @@ struct spreadsheet_read_options;
 struct spreadsheet *ods_probe (const char *filename, bool report_errors);
 
 struct casereader * ods_make_reader (struct spreadsheet *spreadsheet, 
-                                    const struct spreadsheet_read_info *gri,
                                     const struct spreadsheet_read_options *opts);
 
 
index d5d9a5f4c1bf9997267106383c8e347e0746cd46..aa4c0174529c4a142cb8111be0c431d674d581b7 100644 (file)
@@ -31,10 +31,6 @@ struct spreadsheet_read_options
   const char *sheet_name ; /* The name of the sheet to open (in UTF-8) */
   int sheet_index ;        /* The index of the sheet to open (only used if sheet_name is NULL) */
   const char *cell_range ; /* The cell range (in UTF-8) */
-};
-
-struct spreadsheet_read_info
-{
   bool read_names ;        /* True if the first row is to be used as the names of the variables */
   int asw ;                /* The width of string variables in the created dictionary */
 };
index 09251a69c43a1fae212da769e7198d94814fce2d..cfa33d115239010244e082705d45e2bd1b885df1 100644 (file)
@@ -45,7 +45,7 @@
 #define _(msgid) gettext (msgid)
 #define N_(msgid) (msgid)
 
-static bool parse_spreadsheet (struct lexer *lexer, char **filename, struct spreadsheet_read_info *sri, 
+static bool parse_spreadsheet (struct lexer *lexer, char **filename,
                               struct spreadsheet_read_options *opts);
 
 static void destroy_spreadsheet_read_info (struct spreadsheet_read_info *, struct spreadsheet_read_options *);
@@ -81,21 +81,20 @@ cmd_get_data (struct lexer *lexer, struct dataset *ds)
       char *filename = NULL;
       struct casereader *reader = NULL;
       struct dictionary *dict = NULL;
-      struct spreadsheet_read_info sri;
       struct spreadsheet_read_options opts;
-      if (!parse_spreadsheet (lexer, &filename, &sri, &opts))
+      if (!parse_spreadsheet (lexer, &filename, &opts))
        goto error;
 
       if ( 0 == strncasecmp (tok, "GNM", 3))
        {
          struct spreadsheet *spreadsheet = gnumeric_probe (filename, true);
-         reader = gnumeric_make_reader (spreadsheet, &sri, &opts);
+         reader = gnumeric_make_reader (spreadsheet, &opts);
          dict = spreadsheet->dict;
        }
       else if (0 == strncasecmp (tok, "ODS", 3))
        {
          struct spreadsheet *spreadsheet = ods_probe (filename, true);
-         reader = ods_make_reader (spreadsheet, &sri, &opts);
+         reader = ods_make_reader (spreadsheet, &opts);
          dict = spreadsheet->dict;
        }
 
@@ -103,11 +102,9 @@ cmd_get_data (struct lexer *lexer, struct dataset *ds)
        {
          dataset_set_dict (ds, dict);
          dataset_set_source (ds, reader);
-         destroy_spreadsheet_read_info (&sri, &opts);
          free (tok);
          return CMD_SUCCESS;
        }
-      destroy_spreadsheet_read_info (&sri, &opts);
     }
   else
     msg (SE, _("Unsupported TYPE %s."), tok);
@@ -194,14 +191,14 @@ parse_get_psql (struct lexer *lexer, struct dataset *ds)
 }
 
 static bool
-parse_spreadsheet (struct lexer *lexer, char **filename, struct spreadsheet_read_info *sri, 
+parse_spreadsheet (struct lexer *lexer, char **filename, 
                   struct spreadsheet_read_options *opts)
 {
   opts->sheet_index = 1;
   opts->sheet_name = NULL;
   opts->cell_range = NULL;
-  sri->read_names = true;
-  sri->asw = -1;
+  opts->read_names = true;
+  opts->asw = -1;
 
   lex_force_match (lexer, T_SLASH);
 
@@ -222,7 +219,7 @@ parse_spreadsheet (struct lexer *lexer, char **filename, struct spreadsheet_read
       if ( lex_match_id (lexer, "ASSUMEDSTRWIDTH"))
        {
          lex_match (lexer, T_EQUALS);
-         sri->asw = lex_integer (lexer);
+         opts->asw = lex_integer (lexer);
          lex_get (lexer);
        }
       else if (lex_match_id (lexer, "SHEET"))
@@ -284,11 +281,11 @@ parse_spreadsheet (struct lexer *lexer, char **filename, struct spreadsheet_read
 
          if ( lex_match_id (lexer, "ON"))
            {
-             sri->read_names = true;
+             opts->read_names = true;
            }
          else if (lex_match_id (lexer, "OFF"))
            {
-             sri->read_names = false;
+             opts->read_names = false;
            }
          else
            {
@@ -307,7 +304,6 @@ parse_spreadsheet (struct lexer *lexer, char **filename, struct spreadsheet_read
   return true;
 
  error:
-  destroy_spreadsheet_read_info (sri, opts);
   return false;
 }
 
index 0e0a496de60c5579d6b4c31784ccb916a043f40f..229260fc33d83855921e1991142d93868e59b492 100644 (file)
@@ -81,7 +81,6 @@ init_file (struct import_assistant *ia, GtkWindow *parent_window)
 {
   enum { MAX_LINE_LEN = 16384 }; /* Max length of an acceptable line. */
   struct file *file = &ia->file;
-  struct spreadsheet_read_info sri;
   struct spreadsheet_read_options opts;
 
   file->lines = NULL;
@@ -93,8 +92,8 @@ init_file (struct import_assistant *ia, GtkWindow *parent_window)
   opts.cell_range = NULL;
   opts.sheet_index = 1;
 
-  sri.read_names = true;
-  sri.asw = -1;
+  opts.read_names = true;
+  opts.asw = -1;
 
   printf ("%s:%d %p\n", __FILE__, __LINE__, ia->spreadsheet);
 
index 9aa16b592544e8e1ed34f7a27ad5a45cb7390926..9fbba9bee49c312a9ded5139d84260007f7a69f3 100644 (file)
@@ -78,7 +78,6 @@ struct sheet_spec_page
     struct casereader *reader;
     struct dictionary *dict;
     
-    struct spreadsheet_read_info sri;
     struct spreadsheet_read_options opts;
   };
 
@@ -102,7 +101,7 @@ sheet_spec_gen_syntax (const struct import_assistant *ia)
                   (ia->spreadsheet->type == SPREADSHEET_GNUMERIC) ? "GNM" : "ODS",
                   ia->file.file_name,                   
                   ssp->opts.sheet_index,
-                  ssp->sri.read_names ? "ON" : "OFF");
+                  ssp->opts.read_names ? "ON" : "OFF");
 
 
   if (range && 0 != strcmp ("", range))
@@ -215,20 +214,20 @@ post_sheet_spec_page (struct import_assistant *ia)
       ssp->opts.cell_range = range;
     }
 
-  ssp->sri.read_names = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (readnames_checkbox));
-  ssp->sri.asw = -1;
+  ssp->opts.read_names = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (readnames_checkbox));
+  ssp->opts.asw = -1;
 
   switch (ia->spreadsheet->type)
     {
     case SPREADSHEET_ODS:
       {
-       creader = ods_make_reader (ia->spreadsheet, &ssp->sri, &ssp->opts);
+       creader = ods_make_reader (ia->spreadsheet, &ssp->opts);
        dict = ia->spreadsheet->dict;
       }
       break;
     case SPREADSHEET_GNUMERIC:
       {
-       creader = gnumeric_make_reader (ia->spreadsheet, &ssp->sri, &ssp->opts);
+       creader = gnumeric_make_reader (ia->spreadsheet, &ssp->opts);
        dict = ia->spreadsheet->dict;
       }
       break;
index dc903eb7e97a37d250efb2264fb8c7008f673019..b45a6c59d0ba34ee94328718569ec70e3f3c08a9 100644 (file)
@@ -43,7 +43,6 @@ on_clicked (GtkButton *button, gpointer data)
   struct ccase *c;
   gint x = gtk_combo_box_get_active (GTK_COMBO_BOX (combo_box));
   struct casereader *reader ;
-  struct spreadsheet_read_info ri;
   struct spreadsheet_read_options opts;
 
   g_print( "%s %d\n", __FUNCTION__, x);
@@ -51,11 +50,10 @@ on_clicked (GtkButton *button, gpointer data)
   opts.sheet_index = x + 1;
   opts.cell_range = NULL;
   opts.sheet_name = NULL;
+  opts.read_names = TRUE;
+  opts.asw = -1;
 
-  ri.read_names = TRUE;
-  ri.asw = -1;
-
-  reader = gnumeric_make_reader (sp, &ri, &opts);
+  reader = gnumeric_make_reader (sp, &opts);
   for (;
            (c = casereader_read (reader)) != NULL; case_unref (c))
     {