X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fstats%2Ffrequencies.q;h=0c0dc63b3d32148f86adfc663c69779accc4414a;hb=799e56c0e3a9911a860607e1c07caf2acf8cc9ef;hp=c1e40d62a4f45f47984be353d172fedada8429d6;hpb=97d4f38945476834fd7fce612b663f19f2b291f8;p=pspp diff --git a/src/language/stats/frequencies.q b/src/language/stats/frequencies.q index c1e40d62a4..0c0dc63b3d 100644 --- a/src/language/stats/frequencies.q +++ b/src/language/stats/frequencies.q @@ -118,7 +118,7 @@ struct frq_info }; /* Table of statistics, indexed by dsc_*. */ -static struct frq_info st_name[frq_n_stats + 1] = +static const struct frq_info st_name[frq_n_stats + 1] = { {FRQ_ST_MEAN, N_("Mean")}, {FRQ_ST_SEMEAN, N_("S.E. Mean")}, @@ -267,7 +267,7 @@ struct var_freqs }; static inline struct var_freqs * -get_var_freqs (struct variable *v) +get_var_freqs (const struct variable *v) { assert (v != NULL); assert (v->aux != NULL); @@ -278,9 +278,9 @@ static void determine_charts (void); static void calc_stats (struct variable *v, double d[frq_n_stats]); -static void precalc (const struct ccase *, void *); -static bool calc (const struct ccase *, void *); -static void postcalc (void *); +static void precalc (const struct ccase *, void *, const struct dataset *); +static bool calc (const struct ccase *, void *, const struct dataset *); +static bool postcalc (void *, const struct dataset *); static void postprocess_freq_tab (struct variable *); static void dump_full (struct variable *); @@ -305,15 +305,15 @@ freq_tab_to_hist(const struct freq_tab *ft, const struct variable *var); /* Parser and outline. */ -static int internal_cmd_frequencies (void); +static int internal_cmd_frequencies (struct dataset *ds); int -cmd_frequencies (void) +cmd_frequencies (struct dataset *ds) { int result; int_pool = pool_create (); - result = internal_cmd_frequencies (); + result = internal_cmd_frequencies (ds); pool_destroy (int_pool); int_pool=0; pool_destroy (gen_pool); @@ -324,7 +324,7 @@ cmd_frequencies (void) } static int -internal_cmd_frequencies (void) +internal_cmd_frequencies (struct dataset *ds) { int i; bool ok; @@ -335,7 +335,7 @@ internal_cmd_frequencies (void) n_variables = 0; v_variables = NULL; - if (!parse_frequencies (&cmd, NULL)) + if (!parse_frequencies (ds, &cmd, NULL)) return CMD_FAILURE; if (cmd.onepage_limit == NOT_LONG) @@ -391,7 +391,7 @@ internal_cmd_frequencies (void) /* Do it! */ - ok = procedure_with_splits (precalc, calc, postcalc, NULL); + ok = procedure_with_splits (ds, precalc, calc, postcalc, NULL); free_frequencies(&cmd); @@ -505,17 +505,17 @@ determine_charts (void) /* Add data from case C to the frequency table. */ static bool -calc (const struct ccase *c, void *aux UNUSED) +calc (const struct ccase *c, void *aux UNUSED, const struct dataset *ds) { double weight; size_t i; - int bad_warn = 1; + bool bad_warn = true; - weight = dict_get_case_weight (default_dict, c, &bad_warn); + weight = dict_get_case_weight (dataset_dict (ds), c, &bad_warn); for (i = 0; i < n_variables; i++) { - struct variable *v = v_variables[i]; + const struct variable *v = v_variables[i]; const union value *val = case_data (c, v->fv); struct var_freqs *vf = get_var_freqs (v); struct freq_tab *ft = &vf->tab; @@ -566,11 +566,11 @@ calc (const struct ccase *c, void *aux UNUSED) /* Prepares each variable that is the target of FREQUENCIES by setting up its hash table. */ static void -precalc (const struct ccase *first, void *aux UNUSED) +precalc (const struct ccase *first, void *aux UNUSED, const struct dataset *ds) { size_t i; - output_split_file_values (first); + output_split_file_values (ds, first); pool_destroy (gen_pool); gen_pool = pool_create (); @@ -611,8 +611,8 @@ precalc (const struct ccase *first, void *aux UNUSED) /* Finishes up with the variables after frequencies have been calculated. Displays statistics, percentiles, ... */ -static void -postcalc (void *aux UNUSED) +static bool +postcalc (void *aux UNUSED, const struct dataset *ds UNUSED) { size_t i; @@ -687,6 +687,8 @@ postcalc (void *aux UNUSED) cleanup_freq_tab (v); } + + return true; } /* Returns the comparison function that should be used for @@ -712,13 +714,13 @@ get_freq_comparator (int frq_sort, int var_type) return 0; } -/* Returns nonzero iff the value in struct freq F is non-missing +/* Returns true iff the value in struct freq F is non-missing for variable V. */ -static int -not_missing (const void *f_, void *v_) +static bool +not_missing (const void *f_, const void *v_) { const struct freq *f = f_; - struct variable *v = v_; + const struct variable *v = v_; return !mv_is_value_missing (&v->miss, f->v); } @@ -791,7 +793,7 @@ cleanup_freq_tab (struct variable *v) /* Parses the VARIABLES subcommand, adding to {n_variables,v_variables}. */ static int -frq_custom_variables (struct cmd_frequencies *cmd UNUSED, void *aux UNUSED) +frq_custom_variables (struct dataset *ds, struct cmd_frequencies *cmd UNUSED, void *aux UNUSED) { int mode; int min = 0, max = 0; @@ -801,10 +803,10 @@ frq_custom_variables (struct cmd_frequencies *cmd UNUSED, void *aux UNUSED) lex_match ('='); if (token != T_ALL && (token != T_ID - || dict_lookup_var (default_dict, tokid) == NULL)) + || dict_lookup_var (dataset_dict (ds), tokid) == NULL)) return 2; - if (!parse_variables (default_dict, &v_variables, &n_variables, + if (!parse_variables (dataset_dict (ds), &v_variables, &n_variables, PV_APPEND | PV_NO_SCRATCH)) return 0; @@ -879,10 +881,10 @@ frq_custom_variables (struct cmd_frequencies *cmd UNUSED, void *aux UNUSED) /* Parses the GROUPED subcommand, setting the n_grouped, grouped fields of specified variables. */ static int -frq_custom_grouped (struct cmd_frequencies *cmd UNUSED, void *aux UNUSED) +frq_custom_grouped (struct dataset *ds, struct cmd_frequencies *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 (ds), tokid) != NULL) || token == T_ID) for (;;) { @@ -896,7 +898,7 @@ frq_custom_grouped (struct cmd_frequencies *cmd UNUSED, void *aux UNUSED) size_t n; struct variable **v; - if (!parse_variables (default_dict, &v, &n, + if (!parse_variables (dataset_dict (ds), &v, &n, PV_NO_DUPLICATE | PV_NUMERIC)) return 0; if (lex_match ('(')) @@ -949,7 +951,7 @@ frq_custom_grouped (struct cmd_frequencies *cmd UNUSED, void *aux UNUSED) free (v); if (!lex_match ('/')) break; - if ((token != T_ID || dict_lookup_var (default_dict, tokid) != NULL) + if ((token != T_ID || dict_lookup_var (dataset_dict (ds), tokid) != NULL) && token != T_ALL) { lex_put_back ('/'); @@ -995,7 +997,7 @@ add_percentile (double x) /* Hash of numeric values. */ static unsigned -hash_value_numeric (const void *value_, void *foo UNUSED) +hash_value_numeric (const void *value_, const void *aux UNUSED) { const struct freq *value = value_; return hsh_hash_double (value->v[0].f); @@ -1003,10 +1005,10 @@ hash_value_numeric (const void *value_, void *foo UNUSED) /* Hash of string values. */ static unsigned -hash_value_alpha (const void *value_, void *v_) +hash_value_alpha (const void *value_, const void *v_) { const struct freq *value = value_; - struct variable *v = v_; + const struct variable *v = v_; struct var_freqs *vf = get_var_freqs (v); return hsh_hash_bytes (value->v[0].s, vf->width); @@ -1014,7 +1016,7 @@ hash_value_alpha (const void *value_, void *v_) /* Ascending numeric compare of values. */ static int -compare_value_numeric_a (const void *a_, const void *b_, void *foo UNUSED) +compare_value_numeric_a (const void *a_, const void *b_, const void *aux UNUSED) { const struct freq *a = a_; const struct freq *b = b_; @@ -1029,11 +1031,11 @@ compare_value_numeric_a (const void *a_, const void *b_, void *foo UNUSED) /* Ascending string compare of values. */ static int -compare_value_alpha_a (const void *a_, const void *b_, void *v_) +compare_value_alpha_a (const void *a_, const void *b_, const void *v_) { const struct freq *a = a_; const struct freq *b = b_; - struct variable *v = v_; + const struct variable *v = v_; struct var_freqs *vf = get_var_freqs (v); return memcmp (a->v[0].s, b->v[0].s, vf->width); @@ -1041,14 +1043,14 @@ compare_value_alpha_a (const void *a_, const void *b_, void *v_) /* Descending numeric compare of values. */ static int -compare_value_numeric_d (const void *a, const void *b, void *foo UNUSED) +compare_value_numeric_d (const void *a, const void *b, const void *aux UNUSED) { - return -compare_value_numeric_a (a, b, foo); + return -compare_value_numeric_a (a, b, aux); } /* Descending string compare of values. */ static int -compare_value_alpha_d (const void *a, const void *b, void *v) +compare_value_alpha_d (const void *a, const void *b, const void *v) { return -compare_value_alpha_a (a, b, v); } @@ -1056,7 +1058,7 @@ compare_value_alpha_d (const void *a, const void *b, void *v) /* Ascending numeric compare of frequency; secondary key on ascending numeric value. */ static int -compare_freq_numeric_a (const void *a_, const void *b_, void *foo UNUSED) +compare_freq_numeric_a (const void *a_, const void *b_, const void *aux UNUSED) { const struct freq *a = a_; const struct freq *b = b_; @@ -1077,11 +1079,11 @@ compare_freq_numeric_a (const void *a_, const void *b_, void *foo UNUSED) /* Ascending numeric compare of frequency; secondary key on ascending string value. */ static int -compare_freq_alpha_a (const void *a_, const void *b_, void *v_) +compare_freq_alpha_a (const void *a_, const void *b_, const void *v_) { const struct freq *a = a_; const struct freq *b = b_; - struct variable *v = v_; + const struct variable *v = v_; struct var_freqs *vf = get_var_freqs (v); if (a->c > b->c) @@ -1095,7 +1097,7 @@ compare_freq_alpha_a (const void *a_, const void *b_, void *v_) /* Descending numeric compare of frequency; secondary key on ascending numeric value. */ static int -compare_freq_numeric_d (const void *a_, const void *b_, void *foo UNUSED) +compare_freq_numeric_d (const void *a_, const void *b_, const void *aux UNUSED) { const struct freq *a = a_; const struct freq *b = b_; @@ -1116,11 +1118,11 @@ compare_freq_numeric_d (const void *a_, const void *b_, void *foo UNUSED) /* Descending numeric compare of frequency; secondary key on ascending string value. */ static int -compare_freq_alpha_d (const void *a_, const void *b_, void *v_) +compare_freq_alpha_d (const void *a_, const void *b_, const void *v_) { const struct freq *a = a_; const struct freq *b = b_; - struct variable *v = v_; + const struct variable *v = v_; struct var_freqs *vf = get_var_freqs (v); if (a->c > b->c) @@ -1168,9 +1170,9 @@ dump_full (struct variable *v) const char *s; }; - struct init *p; + const struct init *p; - static struct init vec[] = + static const struct init vec[] = { {4, 0, N_("Valid")}, {5, 0, N_("Cum")},