X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fexamine.q;h=fc0c0c9a94f8752aee67aeeded7b8b68553daa15;hb=e210b20bf6f405637c8c03dd280b5a4a627191b8;hp=f92bba1fd2160709f263a860b9bd0dd22699e38d;hpb=3a66b403c8856da07a1de12c96e163971909e29a;p=pspp-builds.git diff --git a/src/examine.q b/src/examine.q index f92bba1f..fc0c0c9a 100644 --- a/src/examine.q +++ b/src/examine.q @@ -15,8 +15,8 @@ General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -02111-1307, USA. */ +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301, USA. */ #include #include @@ -44,6 +44,10 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA #include "moments.h" #include "percentiles.h" +#include "gettext.h" +#define _(msgid) gettext (msgid) +#define N_(msgid) msgid + /* (headers) */ #include "chart.h" @@ -73,7 +77,7 @@ static struct cmd_examine cmd; static struct variable **dependent_vars; -static int n_dependent_vars; +static size_t n_dependent_vars; struct factor @@ -165,7 +169,7 @@ const char *factor_to_string_concise(const struct factor *fctr, /* Function to use for testing for missing values */ -static is_missing_func value_is_missing; +static is_missing_func *value_is_missing; /* PERCENTILES */ @@ -189,9 +193,9 @@ cmd_examine(void) /* If /MISSING=INCLUDE is set, then user missing values are ignored */ if (cmd.incl == XMN_INCLUDE ) - value_is_missing = is_system_missing; + value_is_missing = mv_is_value_system_missing; else - value_is_missing = is_missing; + value_is_missing = mv_is_value_missing; if ( cmd.st_n == SYSMIS ) cmd.st_n = 5; @@ -324,7 +328,7 @@ output_examine(void) if ( cmd.sbc_plot) { - int v; + size_t v; struct factor_statistics **fs = fctr->fs ; @@ -390,7 +394,7 @@ list_to_ptile_hash(const subc_list_double *l) for ( i = 0 ; i < subc_list_double_count(l) ; ++i ) { - struct percentile *p = xmalloc (sizeof (struct percentile)); + struct percentile *p = xmalloc (sizeof *p); p->p = subc_list_double_at(l,i); p->v = SYSMIS; @@ -413,9 +417,9 @@ xmn_custom_percentiles(struct cmd_examine *p UNUSED) lex_match('('); - while ( lex_double_p() ) + while ( lex_is_number() ) { - subc_list_double_push(&percentile_list,lex_double()); + subc_list_double_push(&percentile_list,lex_number()); lex_get(); @@ -507,7 +511,7 @@ xmn_custom_variables(struct cmd_examine *cmd ) assert(n_dependent_vars); - totals = xmalloc( sizeof(struct metrics) * n_dependent_vars); + totals = xnmalloc (n_dependent_vars, sizeof *totals); if ( lex_match(T_BY)) { @@ -530,7 +534,7 @@ static int examine_parse_independent_vars(struct cmd_examine *cmd) { int success; - struct factor *sf = xmalloc(sizeof(struct factor)); + struct factor *sf = xmalloc (sizeof *sf); if ((token != T_ID || dict_lookup_var (default_dict, tokid) == NULL) && token != T_ALL) @@ -607,11 +611,12 @@ static int bad_weight_warn = 1; void factor_calc(struct ccase *c, int case_no, double weight, int case_missing) { - int v; + size_t v; struct factor *fctr = factors; while ( fctr) { + struct factor_statistics **foo ; union value indep_vals[2] ; indep_vals[0] = * case_data(c, fctr->indep_var[0]->fv); @@ -623,7 +628,7 @@ factor_calc(struct ccase *c, int case_no, double weight, int case_missing) assert(fctr->fstats); - struct factor_statistics **foo = ( struct factor_statistics ** ) + foo = ( struct factor_statistics ** ) hsh_probe(fctr->fstats, (void *) &indep_vals); if ( !*foo ) @@ -645,7 +650,7 @@ factor_calc(struct ccase *c, int case_no, double weight, int case_missing) const struct variable *var = dependent_vars[v]; const union value *val = case_data (c, var->fv); - if ( value_is_missing(val,var) || case_missing ) + if ( value_is_missing (&var->miss, val) || case_missing ) val = 0; metrics_calc( &(*foo)->m[v], val, weight, case_no); @@ -707,7 +712,7 @@ run_examine(const struct casefile *cf, void *cmd_ ) const struct variable *var = dependent_vars[v]; const union value *val = case_data (&c, var->fv); - if ( value_is_missing(val,var)) + if ( value_is_missing(&var->miss, val)) case_missing = 1; } @@ -718,7 +723,7 @@ run_examine(const struct casefile *cf, void *cmd_ ) const struct variable *var = dependent_vars[v]; const union value *val = case_data (&c, var->fv); - if ( value_is_missing(val,var) || case_missing ) + if ( value_is_missing(&var->miss, val) || case_missing ) val = 0; metrics_calc(&totals[v], val, weight, case_no); @@ -807,7 +812,7 @@ run_examine(const struct casefile *cf, void *cmd_ ) hsh_probe(fctr->fstats, (void *) &key ); if ( !*ffs ) { - int i; + size_t i; (*ffs) = create_factor_statistics (n_dependent_vars, &key[0], &key[1]); for ( i = 0 ; i < n_dependent_vars ; ++i ) @@ -829,7 +834,7 @@ run_examine(const struct casefile *cf, void *cmd_ ) if ( totals ) { - int i; + size_t i; for ( i = 0 ; i < n_dependent_vars ; ++i ) { metrics_destroy(&totals[i]); @@ -1508,8 +1513,8 @@ populate_descriptives(struct tab_table *tbl, int col, int row, tab_text (tbl, col, row + 3, - TAB_LEFT | TAT_TITLE, - _("5% Trimmed Mean")); + TAB_LEFT | TAT_TITLE | TAT_PRINTF, + _("5%% Trimmed Mean")); tab_float (tbl, col + 2, row + 3, @@ -1689,10 +1694,7 @@ box_plot_variables(const struct factor *fctr, { double y_min = DBL_MAX; double y_max = -DBL_MAX; - struct chart *ch; - - ch = chart_create(); - + struct chart *ch = chart_create(); const char *s = factor_to_string(fctr, *fs, 0 ); chart_write_title(ch, s); @@ -1777,7 +1779,7 @@ box_plot_group(const struct factor *fctr, s); } } - else + else if ( ch ) { const double box_width = (ch->data_right - ch->data_left) / 3.0; const double box_centre = (ch->data_right + ch->data_left) / 2.0; @@ -1856,8 +1858,7 @@ np_plot(const struct metrics *m, const char *factorname) { /* We have to cache the detrended data, beacause we need to find its limits before we can plot it */ - double *d_data; - d_data = xmalloc (m->n_data * sizeof(double)); + double *d_data = xnmalloc (m->n_data, sizeof *d_data); double d_max = -DBL_MAX; double d_min = DBL_MAX; for ( i = 0 ; i < m->n_data; ++i )