Allow variables created by var_create_internal to have any width.
authorBen Pfaff <blp@gnu.org>
Mon, 15 Jun 2009 03:09:42 +0000 (20:09 -0700)
committerBen Pfaff <blp@gnu.org>
Mon, 15 Jun 2009 03:09:42 +0000 (20:09 -0700)
Until now, var_create_internal has always created a numeric variable.
In the long run we wish to phase out the use of internal variables
entirely, but this change should help Jason get some work done in the
short term.

src/data/variable.c
src/data/variable.h
src/language/stats/aggregate.c
src/language/stats/wilcoxon.c
src/math/interaction.c

index c0767d7ce245bcfdbcec0b25080228d7c9a38dbc..8d85b518a5f8325dbef9c257e8af20d2ca21ab3a 100644 (file)
@@ -149,13 +149,13 @@ var_clone (const struct variable *old_var)
   return new_var;
 }
 
-/* Create a variable to be used for internal calculations only.
-   The variable is assigned a unique dictionary index and a case
-   index of CASE_IDX. */
+/* Create a variable of the specified WIDTH to be used for
+   internal calculations only.  The variable is assigned a unique
+   dictionary index and a case index of CASE_IDX. */
 struct variable *
-var_create_internal (int case_idx)
+var_create_internal (int case_idx, int width)
 {
-  struct variable *v = var_create ("$internal", 0);
+  struct variable *v = var_create ("$internal", width);
   struct vardict_info vdi;
   static int counter = INT_MAX / 2;
 
index 2752aeb325faaa03d86e92c3aa0a57a228552962..5d28d5b8940234846d47dc1abf5419cd443beb7d 100644 (file)
@@ -32,7 +32,7 @@ union value;
 struct variable *var_create (const char *name, int width);
 struct variable *var_clone (const struct variable *);
 void var_destroy (struct variable *);
-struct variable *var_create_internal (int case_idx);
+struct variable *var_create_internal (int case_idx, int width);
 
 
 /* Variable names. */
index 0d181bd45e3999ab1c45b8267e713f6cf1aeb797..08d2f5e15c7d06176f1787b5e81017c7da54ad83 100644 (file)
@@ -1105,10 +1105,10 @@ initialize_aggregate_info (struct agr_proc *agr, const struct ccase *input)
             proto = caseproto_add_width (proto, 0);
 
            if ( ! iter->subject)
-             iter->subject = var_create_internal (0);
+             iter->subject = var_create_internal (0, 0);
 
            if ( ! iter->weight)
-             iter->weight = var_create_internal (1);
+             iter->weight = var_create_internal (1, 0);
 
             subcase_init_var (&ordering, iter->subject, SC_ASCEND);
            iter->writer = sort_create_writer (&ordering, proto);
index 37d2b191ccfe323804733d69d0d7c7a98f9260af..03a307f3b8c304394bb71c380b02d39aec7cb327 100644 (file)
@@ -88,7 +88,7 @@ wilcoxon_execute (const struct dataset *ds,
 
   struct wilcoxon_state *ws = xcalloc (sizeof (*ws), t2s->n_pairs);
   const struct variable *weight = dict_get_weight (dict);
-  struct variable *weightx = var_create_internal (WEIGHT_IDX);
+  struct variable *weightx = var_create_internal (WEIGHT_IDX, 0);
   struct caseproto *proto;
 
   input =
@@ -108,8 +108,8 @@ wilcoxon_execute (const struct dataset *ds,
       struct subcase ordering;
       variable_pair *vp = &t2s->pairs[i];
 
-      ws[i].sign = var_create_internal (0);
-      ws[i].absdiff = var_create_internal (1);
+      ws[i].sign = var_create_internal (0, 0);
+      ws[i].absdiff = var_create_internal (1, 0);
 
       r = casereader_create_filter_missing (r, *vp, 2,
                                            exclude,
index c8795ed58a00495e72995a2561b9f7ba60fd179f..133d7d7c6aa695ab6ffd7383db6b821ec19af171 100644 (file)
@@ -83,7 +83,7 @@ interaction_variable_create (const struct variable **vars, int n_vars)
            }
        }
     }
-  result->intr = var_create_internal (0);
+  result->intr = var_create_internal (0, 0);
 
   return result;
 }