X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fstats%2Fmeans-parser.c;h=6bbae8938579aea56b23d1e2be216b323b3a8601;hb=42d90dac4bc5ee06ef0dd3cd62b84378f16e7ea9;hp=50e25d9c34fd19233e327b9e0caf5c306873c26f;hpb=6a8d0d2d8bf801c21d71d6c3317ab97d110175cf;p=pspp diff --git a/src/language/stats/means-parser.c b/src/language/stats/means-parser.c index 50e25d9c34..6bbae89385 100644 --- a/src/language/stats/means-parser.c +++ b/src/language/stats/means-parser.c @@ -24,13 +24,9 @@ #include "data/format.h" #include "data/variable.h" -#include "language/command.h" #include "language/lexer/lexer.h" #include "language/lexer/variable-parser.h" -#include "libpspp/hmap.h" -#include "libpspp/bt.h" -#include "libpspp/misc.h" #include "libpspp/pool.h" #include "means.h" @@ -83,13 +79,13 @@ lex_is_variable (struct lexer *lexer, const struct dictionary *dict, tstr = lex_next_tokcstr (lexer, n); - if (NULL == dict_lookup_var (dict, tstr) ) + if (NULL == dict_lookup_var (dict, tstr)) return false; return true; } -static bool +bool means_parse (struct lexer *lexer, struct means *means) { /* Optional TABLES = */ @@ -115,9 +111,9 @@ means_parse (struct lexer *lexer, struct means *means) /* Look ahead to see if there are more tables to be parsed */ more_tables = false; - if ( T_SLASH == lex_next_token (lexer, 0) ) + if (T_SLASH == lex_next_token (lexer, 0)) { - if (lex_is_variable (lexer, means->dict, 1) ) + if (lex_is_variable (lexer, means->dict, 1)) { more_tables = true; lex_match (lexer, T_SLASH); @@ -248,58 +244,3 @@ means_parse (struct lexer *lexer, struct means *means) } return true; } - - -int -cmd_means (struct lexer *lexer, struct dataset *ds) -{ - struct means means; - means.pool = pool_create (); - - means.ctrl_exclude = MV_ANY; - means.dep_exclude = MV_ANY; - means.table = NULL; - means.n_tables = 0; - - means.dict = dataset_dict (ds); - - means.n_statistics = 3; - means.statistics = pool_calloc (means.pool, 3, sizeof *means.statistics); - means.statistics[0] = MEANS_MEAN; - means.statistics[1] = MEANS_N; - means.statistics[2] = MEANS_STDDEV; - - if (! means_parse (lexer, &means)) - goto error; - - { - struct casegrouper *grouper; - struct casereader *group; - bool ok; - - grouper = casegrouper_create_splits (proc_open (ds), means.dict); - while (casegrouper_get_next_group (grouper, &group)) - { - run_means (&means, group, ds); - } - ok = casegrouper_destroy (grouper); - ok = proc_commit (ds) && ok; - } - - for (int t = 0; t < means.n_tables; ++t) - { - const struct mtable *table = means.table + t; - - means_case_processing_summary (table); - means_shipout (table, &means); - } - destroy_means (&means); - pool_destroy (means.pool); - return CMD_SUCCESS; - - error: - - destroy_means (&means); - pool_destroy (means.pool); - return CMD_FAILURE; -}