variable: Make var_set_label() use the variable's own encoding.
authorBen Pfaff <blp@cs.stanford.edu>
Sun, 24 Apr 2011 04:45:19 +0000 (21:45 -0700)
committerBen Pfaff <blp@cs.stanford.edu>
Tue, 26 Apr 2011 04:13:53 +0000 (21:13 -0700)
I don't see any reason to make the caller supply this.  It just makes
code harder to read and write.

12 files changed:
perl-module/PSPP.xs
src/data/por-file-reader.c
src/data/sys-file-reader.c
src/data/variable.c
src/data/variable.h
src/language/data-io/combine-files.c
src/language/dictionary/apply-dictionary.c
src/language/dictionary/variable-label.c
src/language/stats/aggregate.c
src/language/stats/descriptives.c
src/language/stats/rank.q
src/ui/gui/psppire-var-store.c

index 896d7d88e394ff5a2a0ef0d4e9ede6683a61ac1a..143eb549e1a784c4df7b4c7b89fa644118f1056e 100644 (file)
@@ -376,7 +376,7 @@ set_label (var, label)
  struct variable *var;
  char *label
 CODE:
-  var_set_label (var, label, NULL, false);
+  var_set_label (var, label, false);
 
 
 void
index a05f6b3d3a89444cb62e28d99d39fc863b7dba9a..58d4d03985688b5a39e03872811b0f2038907c6b 100644 (file)
@@ -746,7 +746,7 @@ read_variables (struct pfm_reader *r, struct dictionary *dict)
         {
           char label[256];
           read_string (r, label);
-          var_set_label (v, label, NULL, false); /* XXX */
+          var_set_label (v, label, false); /* XXX */
         }
     }
 
index 7e5a9e0fe1c6396306060abce27938460cf6869f..6a5afff226130937f8ae387019ca538a705a2cee 100644 (file)
@@ -974,7 +974,7 @@ parse_variable_records (struct sfm_reader *r, struct dictionary *dict,
 
           utf8_label = recode_string_pool ("UTF-8", dict_encoding,
                                            rec->label, -1, r->pool);
-          var_set_label (var, utf8_label, NULL, false);
+          var_set_label (var, utf8_label, false);
         }
 
       /* Set missing values. */
index 17a1542cbc3d7a7bf7f20d2ce3ce7747647d4c78..121a57517cd4fecc4ce0cbe1cc6b25b9609092e6 100644 (file)
@@ -133,7 +133,7 @@ var_clone (const struct variable *old_var)
   var_set_print_format (new_var, var_get_print_format (old_var));
   var_set_write_format (new_var, var_get_write_format (old_var));
   var_set_value_labels (new_var, var_get_value_labels (old_var));
-  var_set_label (new_var, var_get_label (old_var), NULL, false);
+  var_set_label (new_var, var_get_label (old_var), false);
   var_set_measure (new_var, var_get_measure (old_var));
   var_set_display_width (new_var, var_get_display_width (old_var));
   var_set_alignment (new_var, var_get_alignment (old_var));
@@ -571,14 +571,12 @@ var_get_label (const struct variable *v)
    empty string (after stripping white space), then V's variable label (if any)
    is removed.
 
-   Variable labels are limited to 255 bytes in the dictionary encoding, which
-   should be specified as DICT_ENCODING.  If LABEL fits within this limit, this
-   function returns true.  Otherwise, the variable label is set to a truncated
-   value, this function returns false and, if ISSUE_WARNING is true, issues a
-   warning.  */
+   Variable labels are limited to 255 bytes in V's encoding (as returned by
+   var_get_encoding()).  If LABEL fits within this limit, this function returns
+   true.  Otherwise, the variable label is set to a truncated value, this
+   function returns false and, if ISSUE_WARNING is true, issues a warning.  */
 bool
-var_set_label (struct variable *v, const char *label,
-               const char *dict_encoding, bool issue_warning)
+var_set_label (struct variable *v, const char *label, bool issue_warning)
 {
   bool truncated = false;
 
@@ -587,6 +585,7 @@ var_set_label (struct variable *v, const char *label,
 
   if (label != NULL)
     {
+      const char *dict_encoding = var_get_encoding (v);
       struct substring s = ss_cstr (label);
       size_t trunc_len;
 
@@ -620,7 +619,7 @@ var_set_label (struct variable *v, const char *label,
 void
 var_clear_label (struct variable *v)
 {
-  var_set_label (v, NULL, NULL, false);
+  var_set_label (v, NULL, false);
 }
 
 /* Returns true if V has a variable V,
index 9cffafc9069d58026925b4ecedc256d85b53907b..456d2aca688f618dcec6f01592fcc6278d88c4ee 100644 (file)
@@ -98,8 +98,7 @@ struct fmt_spec var_default_formats (int width);
 /* Variable labels. */
 const char *var_to_string (const struct variable *);
 const char *var_get_label (const struct variable *);
-bool var_set_label (struct variable *, const char *label,
-                    const char *dict_encoding, bool issue_warning);
+bool var_set_label (struct variable *, const char *label, bool issue_warning);
 void var_clear_label (struct variable *);
 bool var_has_label (const struct variable *);
 
index b4f06655ca1ff2de8addf70e915ab051f4a0fa03..5f82d1512be3a821dd01783f73bdc2049c0f93a6 100644 (file)
@@ -582,7 +582,7 @@ merge_dictionary (struct dictionary *const m, struct comb_file *f)
           if (var_has_missing_values (dv) && !var_has_missing_values (mv))
             var_set_missing_values (mv, var_get_missing_values (dv));
           if (var_get_label (dv) && !var_get_label (mv))
-            var_set_label (mv, var_get_label (dv), file_encoding, false);
+            var_set_label (mv, var_get_label (dv), false);
         }
       else
         mv = dict_clone_var_assert (m, dv);
index 96b77dc0133183bdbcb3cc359c2d656e4edf9c89..78824cf8d6e2c1dd5d403faf8394ea6517a9bbae 100644 (file)
@@ -80,8 +80,7 @@ cmd_apply_dictionary (struct lexer *lexer, struct dataset *ds)
        }
 
       if (var_has_label (s))
-        var_set_label (t, var_get_label (s),
-                       dict_get_encoding (dataset_dict (ds)), false);
+        var_set_label (t, var_get_label (s), false);
 
       if (var_has_value_labels (s))
         {
index 41fae5ed3a27cee3378ae548a6637c2b2ae9d206..bceb84994eeacf5e678f97e3e212b9df213e9f37 100644 (file)
@@ -36,7 +36,6 @@ int
 cmd_variable_labels (struct lexer *lexer, struct dataset *ds)
 {
   struct dictionary *dict = dataset_dict (ds);
-  const char *dict_encoding = dict_get_encoding (dict);
 
   do
     {
@@ -55,7 +54,7 @@ cmd_variable_labels (struct lexer *lexer, struct dataset *ds)
        }
 
       for (i = 0; i < nv; i++)
-        var_set_label (v[i], lex_tokcstr (lexer), dict_encoding, i == 0);
+        var_set_label (v[i], lex_tokcstr (lexer), i == 0);
 
       lex_get (lexer);
       while (lex_token (lexer) == T_SLASH)
index fe6f5eed685993411f035856cc1a0204bf7b3a68..0dee9b4425b33415b4d83b80c61af20b954f45d7 100644 (file)
@@ -638,8 +638,7 @@ parse_aggregate_functions (struct lexer *lexer, const struct dictionary *dict,
 
            free (dest[i]);
            if (dest_label[i])
-              var_set_label (destvar, dest_label[i],
-                             dict_get_encoding (agr->dict), true);
+              var_set_label (destvar, dest_label[i], true);
 
            v->dest = destvar;
          }
index 935ca9b37349f2f2ee85c4d2841bde86df0468cc..017b78c277a175ad4feeacedb0306db6b98d57e0 100644 (file)
@@ -680,9 +680,9 @@ setup_z_trns (struct dsc_proc *dsc, struct dataset *ds)
          struct variable *dst_var;
 
          dst_var = dict_create_var_assert (dataset_dict (ds), dv->z_name, 0);
-          var_set_label (dst_var, xasprintf (_("Z-score of %s"),
-                                             var_to_string (dv->v)),
-                         dict_get_encoding (dataset_dict (ds)), false);
+          var_set_label (dst_var,
+                         xasprintf (_("Z-score of %s"),var_to_string (dv->v)),
+                         false);
 
           z = &t->z_scores[cnt++];
           z->src_var = dv->v;
index 91ef1861366c35d226626315bbef8e52b3afc7ec..2247354dcd337557f2127e0ddbbd84ec599917bf 100644 (file)
@@ -198,8 +198,7 @@ fraction_name(void)
 /* Create a label on DEST_VAR, describing its derivation from SRC_VAR and F */
 static void
 create_var_label (struct variable *dest_var,
-                 const struct variable *src_var, enum RANK_FUNC f,
-                  const char *dict_encoding)
+                 const struct variable *src_var, enum RANK_FUNC f)
 {
   struct string label;
   ds_init_empty (&label);
@@ -225,7 +224,7 @@ create_var_label (struct variable *dest_var,
     ds_put_format (&label, _("%s of %s"),
                    function_name[f], var_get_name (src_var));
 
-  var_set_label (dest_var, ds_cstr (&label), dict_encoding, false);
+  var_set_label (dest_var, ds_cstr (&label), false);
 
   ds_destroy (&label);
 }
@@ -684,8 +683,7 @@ cmd_rank (struct lexer *lexer, struct dataset *ds)
 
          create_var_label ( rank_specs[i].destvars[v],
                             src_vars[v],
-                            rank_specs[i].rfunc,
-                             dict_get_encoding (dict));
+                            rank_specs[i].rfunc);
        }
     }
 
index d495bd98dd16d174a72f5ab9d9a211087394b11b..e41b49223979e601e366982afad38dd5faf180be 100644 (file)
@@ -588,8 +588,7 @@ psppire_var_store_set_string (PsppireSheetModel *model,
       break;
     case PSPPIRE_VAR_STORE_COL_LABEL:
       {
-       var_set_label (pv, text,
-                       psppire_dict_encoding (var_store->dictionary), true);
+       var_set_label (pv, text, true);
        return TRUE;
       }
       break;