Clean up how transformations work.
[pspp] / src / language / stats / rank.c
index ba7cde618382c0d1185e314a124c7b00e99a01b8..7e76d68abac4d74b8b858b83254966976c9af550 100644 (file)
@@ -912,7 +912,7 @@ advance_ranking (struct rank_trns_input_var *iv)
   iv->current = casereader_read (iv->input);
 }
 
-static int
+static enum trns_result
 rank_trns_proc (void *trns_, struct ccase **c, casenumber case_idx UNUSED)
 {
   struct rank_trns *trns = trns_;
@@ -961,6 +961,12 @@ rank_trns_free (void *trns_)
   return true;
 }
 
+static const struct trns_class rank_trns_class = {
+  .name = "RANK",
+  .execute = rank_trns_proc,
+  .destroy = rank_trns_free,
+};
+
 static bool
 rank_cmd (struct dataset *ds, const struct rank *cmd)
 {
@@ -1032,11 +1038,11 @@ rank_cmd (struct dataset *ds, const struct rank *cmd)
       subcase_add_vars_always (&projection,
                                cmd->group_vars, cmd->n_group_vars);
       subcase_add_vars_always (&projection, dict_get_split_vars (d),
-                               dict_get_split_cnt (d));
+                               dict_get_n_splits (d));
       if (weight_var != NULL)
         {
           subcase_add_var_always (&projection, weight_var, SC_ASCEND);
-          weight_idx = 2 + cmd->n_group_vars + dict_get_split_cnt (d);
+          weight_idx = 2 + cmd->n_group_vars + dict_get_n_splits (d);
         }
       else
         weight_idx = -1;
@@ -1057,7 +1063,7 @@ rank_cmd (struct dataset *ds, const struct rank *cmd)
 
       /* Group by split variables */
       subcase_init_empty (&split_vars);
-      for (j = 0; j < dict_get_split_cnt (d); j++)
+      for (j = 0; j < dict_get_n_splits (d); j++)
         subcase_add_always (&split_vars, 2 + j + cmd->n_group_vars,
                             var_get_width (dict_get_split_vars (d)[j]),
                             SC_ASCEND);
@@ -1116,7 +1122,7 @@ rank_cmd (struct dataset *ds, const struct rank *cmd)
     }
   free (outputs);
 
-  add_transformation (ds, rank_trns_proc, rank_trns_free, trns);
+  add_transformation (ds, &rank_trns_class, trns);
 
   /* Delete our sort key, which we don't need anymore. */
   dict_delete_var (d, order_var);