Encapsulated the static data of procedure.[ch] into a single object, to be
[pspp-builds.git] / src / language / stats / oneway.q
index 9cdb7db5a098bb868fa72c8d89ed961956687d37..0b75608a761b482286eb3df470d233477e576da6 100644 (file)
@@ -19,30 +19,35 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 02110-1301, USA. */
 
 #include <config.h>
+
 #include <gsl/gsl_cdf.h>
-#include "message.h"
+#include <math.h>
 #include <stdio.h>
 #include <stdlib.h>
-#include <math.h>
-#include "alloc.h"
-#include "str.h"
-#include "case.h"
-#include "dictionary.h"
-#include "command.h"
-#include "lexer.h"
-#include "message.h"
-#include "magic.h"
-#include "misc.h"
-#include "table.h"
-#include "manager.h"
-#include "value-labels.h"
-#include "variable.h"
-#include "procedure.h"
-#include "hash.h"
-#include "casefile.h"
-#include "group-proc.h"
-#include "group.h"
-#include "levene.h"
+
+#include <data/case.h>
+#include <data/casefile.h>
+#include <data/dictionary.h>
+#include <data/procedure.h>
+#include <data/value-labels.h>
+#include <data/variable.h>
+#include <language/command.h>
+#include <language/dictionary/split-file.h>
+#include <language/lexer/lexer.h>
+#include <libpspp/alloc.h>
+#include <libpspp/compiler.h>
+#include <libpspp/hash.h>
+#include <libpspp/magic.h>
+#include <libpspp/message.h>
+#include <libpspp/message.h>
+#include <libpspp/misc.h>
+#include <libpspp/str.h>
+#include <math/group-proc.h>
+#include <math/group.h>
+#include <math/levene.h>
+#include <output/manager.h>
+#include <output/table.h>
+#include "sort-criteria.h"
 
 #include "gettext.h"
 #define _(msgid) gettext (msgid)
@@ -52,17 +57,17 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 /* (specification)
    "ONEWAY" (oneway_):
    *^variables=custom;
-   +missing=miss:!analysis/listwise,
-   incl:include/!exclude;
-   contrast= double list;
-   statistics[st_]=descriptives,homogeneity.
+   missing=miss:!analysis/listwise,
+           incl:include/!exclude;
+   +contrast= double list;
+   +statistics[st_]=descriptives,homogeneity.
 */
 /* (declarations) */
 /* (functions) */
 
 
 
-static int bad_weight_warn = 1;
+static bool bad_weight_warn = true;
 
 
 static struct cmd_oneway cmd;
@@ -90,7 +95,8 @@ static int ostensible_number_of_groups=-1;
 static is_missing_func *value_is_missing;
 
 
-static bool run_oneway(const struct casefile *cf, void *_mode);
+static bool run_oneway(const struct ccase *first,
+                       const struct casefile *cf, void *_mode);
 
 
 /* Routines to show the output tables */
@@ -115,7 +121,7 @@ cmd_oneway(void)
   int i;
   bool ok;
 
-  if ( !parse_oneway(&cmd) )
+  if ( !parse_oneway(&cmd, NULL) )
     return CMD_FAILURE;
 
   /* If /MISSING=INCLUDE is set, then user missing values are ignored */
@@ -143,7 +149,7 @@ cmd_oneway(void)
        }
     }
 
-  ok = multipass_procedure_with_splits (run_oneway, &cmd);
+  ok = multipass_procedure_with_splits (current_dataset, run_oneway, &cmd);
 
   free (vars);
   free_oneway (&cmd);
@@ -217,17 +223,17 @@ output_oneway(void)
 
 /* Parser for the variables sub command */
 static int
-oneway_custom_variables(struct cmd_oneway *cmd UNUSED)
+oneway_custom_variables(struct cmd_oneway *cmd UNUSED, void *aux UNUSED)
 {
 
   lex_match('=');
 
-  if ((token != T_ID || dict_lookup_var (default_dict, tokid) == NULL)
+  if ((token != T_ID || dict_lookup_var (dataset_dict (current_dataset), tokid) == NULL)
       && token != T_ALL)
     return 2;
   
 
-  if (!parse_variables (default_dict, &vars, &n_vars,
+  if (!parse_variables (dataset_dict (current_dataset), &vars, &n_vars,
                        PV_DUPLICATE 
                        | PV_NUMERIC | PV_NO_SCRATCH) )
     {
@@ -354,7 +360,7 @@ show_anova_table(void)
     }
 
 
-  tab_title (t, 0, _("ANOVA"));
+  tab_title (t, _("ANOVA"));
   tab_submit (t);
 
 
@@ -411,7 +417,7 @@ show_descriptives(void)
   tab_text (t, 9, 1, TAB_CENTER | TAT_TITLE, _("Maximum"));
 
 
-  tab_title (t, 0, _("Descriptives"));
+  tab_title (t, _("Descriptives"));
 
 
   row = 2;
@@ -427,7 +433,8 @@ show_descriptives(void)
 
       const char *s = var_to_string(vars[v]);
 
-      struct group_statistics *const *gs_array = hsh_sort(gp->group_hash);
+      struct group_statistics *const *gs_array =
+       (struct group_statistics *const *) hsh_sort(gp->group_hash);
       int count = 0;
 
       tab_text (t, 0, row, TAB_LEFT | TAT_TITLE, s);
@@ -540,7 +547,7 @@ show_homogeneity(void)
   tab_text (t,  4, 0, TAB_CENTER | TAT_TITLE, _("Significance"));
   
 
-  tab_title (t, 0, _("Test of Homogeneity of Variances"));
+  tab_title (t, _("Test of Homogeneity of Variances"));
 
   for ( v=0 ; v < n_vars ; ++v ) 
     {
@@ -610,7 +617,7 @@ show_contrast_coeffs(short *bad_contrast)
 
   tab_vline(t, TAL_2, 2, 0, n_rows - 1);
 
-  tab_title (t, 0, _("Contrast Coefficients"));
+  tab_title (t, _("Contrast Coefficients"));
 
   tab_text (t,  0, 2, TAB_LEFT | TAT_TITLE, _("Contrast"));
 
@@ -677,7 +684,7 @@ show_contrast_tests(short *bad_contrast)
   tab_vline(t, TAL_2, 3, 0, n_rows - 1);
 
 
-  tab_title (t, 0, _("Contrast Tests"));
+  tab_title (t, _("Contrast Tests"));
 
   tab_text (t,  2, 0, TAB_CENTER | TAT_TITLE, _("Contrast"));
   tab_text (t,  3, 0, TAB_CENTER | TAT_TITLE, _("Value of Contrast"));
@@ -887,13 +894,15 @@ precalc ( struct cmd_oneway *cmd UNUSED )
 
 
 static bool
-run_oneway(const struct casefile *cf, void *cmd_)
+run_oneway(const struct ccase *first, const struct casefile *cf, void *cmd_)
 {
   struct casereader *r;
   struct ccase c;
 
   struct cmd_oneway *cmd = (struct cmd_oneway *) cmd_;
 
+  output_split_file_values (first);
+
   global_group_hash = hsh_create(4, 
                                 (hsh_compare_func *) compare_values,
                                 (hsh_hash_func *) hash_value,
@@ -908,7 +917,7 @@ run_oneway(const struct casefile *cf, void *cmd_)
       size_t i;
 
       const double weight = 
-       dict_get_case_weight(default_dict,&c,&bad_weight_warn);
+       dict_get_case_weight (dataset_dict (current_dataset), &c, &bad_weight_warn);
       
       const union value *indep_val = case_data (&c, indep_var->fv);